CRM Docs
Pipelines CI/CD

Pipelines CI/CD

Deploy automatizado do Geiko Service para ECS via GitHub Actions

As pipelines de deploy do Geiko Service (backend CRM) rodam no GitHub Actions e publicam imagens Docker no Amazon ECR, seguidas de um redeploy no Amazon ECS.

Os arquivos de referência ficam na pasta workflows/ deste repositório:

ArquivoBranch de triggerAmbiente
deploy-staging.ymlstagingHomologação
deploy-canary.ymlcanaryCanary
deploy-production.ymlmainProdução

Para as Actions executarem no GitHub, os YAMLs precisam estar em .github/workflows/ no repositório do serviço. A pasta workflows/ aqui serve como documentação e espelho dos arquivos oficiais.

Visão geral do fluxo

Todas as pipelines seguem a mesma base: detectar a versão a partir do nome da branch de release, buildar a imagem, enviar ao ECR e forçar novo deployment no ECS.

Comparação entre ambientes

ItemStagingCanaryProduction
TriggerPush em stagingPush em canaryPush em main
Repositório ECRqyon-crm-geiko-service/stagingqyon-crm-geiko-service/canaryqyon-crm-geiko-service/production
Cluster ECSqyon-crm-geiko-stagingqyon-crm-canaryqyon-crm
Service ECSqyon-crm-geiko-staging-svcqyon-crm-geiko-canary-svcqyon-crm-geiko-production-svc
Região AWSus-west-2us-west-2us-west-2
Git tag + ReleaseNãoNãoSim
Remove branch release-*NãoNãoSim

Convenção de versão

O deploy só prossegue se a branch de origem do merge corresponder ao padrão release-X.Y.Z (semver). O pipeline extrai X.Y.Z e usa como tag da imagem no ECR.

Exemplo: merge de release-2.4.1 → imagem .../staging:2.4.1 e .../staging:latest.

A detecção da branch funciona assim:

  1. Em PR merge, usa GITHUB_HEAD_REF.
  2. Em push direto na branch de ambiente, parseia a mensagem do último commit (git log -1) procurando o sufixo from <branch>.

Se o nome não bater com release-[0-9]+.[0-9]+.[0-9]+, o job falha na etapa Extract Tag from Branch.

Secrets e credenciais

SecretUso
AWS_CRM_ACCESS_KEY_IDAutenticação AWS (ECR + ECS)
AWS_CRM_SECRET_ACCESS_KEYAutenticação AWS
QYONDEVOPS_TOKENApenas production — criação do GitHub Release

Imagens no ECR

Em todos os ambientes o build gera duas tags para o mesmo repositório:

  • :<versão> — ex.: 2.4.1
  • :latest

O deploy no ECS usa update-service --force-new-deployment. O service precisa estar configurado para puxar a tag esperada (em geral :latest na task definition).

Pipelines por ambiente

Relacionado

  • ECS — clusters, services e deploy rolling
  • ECR — registro de imagens Docker

On this page