From 0d914df5b1ccf04a5d89b0c670b5aa4abe2088a8 Mon Sep 17 00:00:00 2001 From: "fabiano.fernandes@stg.stackspot.com" Date: Tue, 10 Sep 2024 12:29:26 -0300 Subject: [PATCH 1/2] Fix url workspace and runtimes production Signed-off-by: fabiano.fernandes@stg.stackspot.com --- runtime.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/runtime.py b/runtime.py index 00dc707..489e50b 100644 --- a/runtime.py +++ b/runtime.py @@ -37,7 +37,7 @@ def build_pipeline_url() -> str: def get_env_id(slug, access_token): - workspace_url = "https://workspace-workspace-api.v1.stackspot.com/v1/environments" + workspace_url = "https://workspace.stackspot.com/v1/environments" deploy_headers = {"Authorization": f"Bearer {access_token}", "Content-Type": "application/json"} env_request = requests.get( url=workspace_url, @@ -140,14 +140,14 @@ def get_env_id(slug, access_token): print("Deploying Self-Hosted Rollback..") if stk_yaml_type == 'app': - self_hosted_rollback_app_url = "https://runtime-manager.v1.stackspot.com/v1/run/self-hosted/rollback/app" + self_hosted_rollback_app_url = "https://runtime-manager.stackspot.com/v1/run/self-hosted/rollback/app" rollback_request = requests.post( url=self_hosted_rollback_app_url, headers=deploy_headers, data=request_data ) elif stk_yaml_type == 'infra': - self_hosted_rollback_infra_url = "https://runtime-manager.v1.stackspot.com/v1/run/self-hosted/rollback/infra" + self_hosted_rollback_infra_url = "https://runtime-manager.stackspot.com/v1/run/self-hosted/rollback/infra" rollback_request = requests.post( url=self_hosted_rollback_infra_url, headers=deploy_headers, From 07560991fd15b3926fd43779ab1a3292f9af5379 Mon Sep 17 00:00:00 2001 From: "fabiano.fernandes@stg.stackspot.com" Date: Wed, 11 Sep 2024 21:19:52 -0300 Subject: [PATCH 2/2] Add new workflow Gitlab Signed-off-by: fabiano.fernandes@stg.stackspot.com --- .gitlab-ci.yml | 43 +++++++++++++++++++++++++++++++++++++++++++ README-gitlab.md | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 75 insertions(+) create mode 100644 .gitlab-ci.yml create mode 100644 README-gitlab.md 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