Files
Antonio Lopes dos Santos afec302c3e
All checks were successful
build-api-image / build (push) Successful in 51s
init commit
2026-08-04 16:52:02 -03:00

100 lines
3.1 KiB
YAML

name: migrate
# Migrations alteram dados persistentes e nao acompanham o deploy automatico.
# Este workflow manual recebe uma imagem ja publicada e uma lista EXPLICITA de
# municipios; ele nunca tenta inferir ou migrar todas as conexoes.
on:
workflow_dispatch:
inputs:
ambiente:
description: 'Ambiente de destino'
required: true
type: choice
options:
- teste
- homolog
- prod
versao:
description: 'Tag da imagem ja publicada (ex.: 2.59.3)'
required: true
type: string
municipios:
description: 'Conexoes municipais separadas por virgula (ex.: anhembi,aparecida)'
required: true
type: string
confirmacao:
description: 'Digite MIGRAR para confirmar a alteracao dos bancos'
required: true
type: string
jobs:
migrate:
runs-on: ubuntu-latest
env:
REGISTRY: ${{ vars.REGISTRY_HOST || '192.168.0.41:3001' }}
IMAGE_NAME: ${{ vars.API_IMAGE_NAME || 'rkm/conectasus-api' }}
steps:
- name: Confirmar operacao destrutiva
env:
CONFIRMACAO: ${{ inputs.confirmacao }}
run: |
set -euo pipefail
if [ "${CONFIRMACAO}" != "MIGRAR" ]; then
echo "::error::Para executar migrations, informe confirmacao=MIGRAR."
exit 1
fi
- name: Checkout
uses: actions/checkout@v4
- name: Login no registry do Gitea
env:
REGISTRY_TOKEN: ${{ secrets.REGISTRY_TOKEN }}
REGISTRY_USER: ${{ vars.REGISTRY_USER }}
ACTOR: ${{ github.actor }}
run: |
set -euo pipefail
if [ -z "${REGISTRY_TOKEN:-}" ]; then
echo "::error::REGISTRY_TOKEN nao definido. A imagem privada nao pode ser usada."
exit 1
fi
echo "${REGISTRY_TOKEN}" | docker login "${REGISTRY}" -u "${REGISTRY_USER:-$ACTOR}" --password-stdin
- name: Aplicar migrations municipais
env:
AMBIENTE: ${{ inputs.ambiente }}
VERSAO: ${{ inputs.versao }}
MUNICIPIOS: ${{ inputs.municipios }}
run: |
set -euo pipefail
chmod +x docker/deploy/migrate.sh
./docker/deploy/migrate.sh \
"${AMBIENTE}" \
"${VERSAO}" \
"${MUNICIPIOS}"
- name: Resumo
if: always()
run: |
{
echo "### Migrations"
echo ""
echo "| Campo | Valor |"
echo "| --- | --- |"
echo "| Ambiente | \`${{ inputs.ambiente }}\` |"
echo "| Versao | \`${{ inputs.versao }}\` |"
echo "| Municipios | \`${{ inputs.municipios }}\` |"
echo "| Acionado por | \`${{ github.actor }}\` |"
echo "| Resultado | \`${{ job.status }}\` |"
echo ""
echo "A execucao para no primeiro municipio com falha. Bancos anteriores"
echo "podem ja ter recebido migrations e exigem verificacao antes de repetir."
} >> "$GITHUB_STEP_SUMMARY"
- name: Limpeza
if: always()
run: docker logout "${REGISTRY}" 2>/dev/null || true