diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..8941c93 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,43 @@ +stages: + - rollback + +variables: + CLIENT_ID: $CLIENT_ID + CLIENT_KEY: $CLIENT_KEY + CLIENT_REALM: $CLIENT_REALM + WORKSPACE: $WORKSPACE + ENVIRONMENT: $ENVIRONMENT + VERSION_TAG: $VERSION_TAG + TF_STATE_BUCKET_NAME: $TF_STATE_BUCKET_NAME + TF_STATE_REGION: $TF_STATE_REGION + IAC_BUCKET_NAME: $IAC_BUCKET_NAME + IAC_REGION: $IAC_REGION + VERBOSE: $VERBOSE + WORKDIR: $WORKDIR + +rollback_job: + stage: rollback + image: python:3.10 + script: + - echo "🤖 OS runner is $(uname)" + - echo "${TF_STATE_BUCKET_NAME}" + - echo "${IAC_REGION}" + - cat /etc/os-release + - uname -r + - ldd --version + - apt-get update && apt-get install -y curl + - curl -fsSL https://stk.stackspot.com/install.sh | bash + - $HOME/.stk/bin/stk login --client-id=$CLIENT_ID --client-key=$CLIENT_KEY --realm=$CLIENT_REALM + - pip install requests ruamel-yaml==0.17.33 + - | + if [ $CI_RUNNER_OS != 'Windows' ]; then + python3 runtime.py + elif [ $CI_RUNNER_OS == 'Windows' ]; then + python runtime.py + else + echo "$CI_RUNNER_OS not supported" + exit 1 + fi + artifacts: + paths: + - $WORKDIR \ No newline at end of file diff --git a/README-gitlab.md b/README-gitlab.md new file mode 100644 index 0000000..388176d --- /dev/null +++ b/README-gitlab.md @@ -0,0 +1,32 @@ +# Runtime Rollback Action + +## Descrição + +Este pipeline realiza um rollback self-hosted para uma tag previamente implantada. + +## Inputs + +Os seguintes inputs devem ser configurados no GitLab CI: + +- `CLIENT_ID`: Account client id (obrigatório) +- `CLIENT_KEY`: Account client secret key (obrigatório) +- `CLIENT_REALM`: Account client realm (obrigatório) +- `WORKSPACE`: Workspace usado para deploy (obrigatório) +- `ENVIRONMENT`: Ambiente usado para deploy (obrigatório) +- `VERSION_TAG`: Tag da versão para rollback (obrigatório) +- `TF_STATE_BUCKET_NAME`: Bucket para salvar arquivos tfstate gerados (obrigatório) +- `TF_STATE_REGION`: Região de configuração para tfstate (obrigatório) +- `IAC_BUCKET_NAME`: Bucket para salvar arquivos iac gerados (obrigatório) +- `IAC_REGION`: Região de configuração para iac (obrigatório) +- `VERBOSE`: Configuração de verbose (opcional) +- `WORKDIR`: Caminho para o diretório onde o `.stk` está localizado (opcional, padrão: `./`) + +## Como usar + +1. Configure os inputs acima como variáveis de ambiente no GitLab CI. +2. Adicione o conteúdo do arquivo `.gitlab-ci.yml` ao seu repositório. +3. Execute o pipeline para realizar o rollback. + +## Compatibilidade + +A maioria dos comandos e ferramentas utilizados são compatíveis com o GitLab CI. No entanto, certifique-se de que o ambiente de execução possui as dependências necessárias instaladas, como `curl` e `python3`. \ No newline at end of file