Files
rkm-conectasus-ci-sandbox/.gitea/workflows/deploy.yml
Antonio Lopes dos Santos e370baf498
All checks were successful
build-api-image / build (push) Successful in 47s
mudanca no deploy
2026-08-05 10:19:07 -03:00

107 lines
3.8 KiB
YAML

name: deploy
# Implanta uma imagem ja publicada. Nao constroi nada: a tag de release e o
# artefato formal, construido quando ela e criada e escolhido explicitamente
# para cada deploy.
#
# Producao nunca sobe sozinha: exige acionamento manual, com a versao escolhida.
on:
workflow_dispatch:
inputs:
ambiente:
description: 'Ambiente de destino'
required: true
type: choice
options:
- teste
- homolog
- prod
versao:
description: 'Tag da imagem (ex.: 2.59.3, feat_ci_cd_test)'
required: true
type: string
jobs:
deploy:
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: 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. O pull da imagem privada depende dele."
exit 1
fi
echo "${REGISTRY_TOKEN}" | docker login "${REGISTRY}" -u "${REGISTRY_USER:-$ACTOR}" --password-stdin
- name: Confirmar que a imagem existe antes de mexer no ambiente
run: |
set -euo pipefail
IMG="${REGISTRY}/${IMAGE_NAME}:${{ inputs.versao }}"
# O registry interno usa HTTP. `docker manifest inspect` faz uma
# consulta direta ao registry e pode ignorar a configuracao de
# insecure-registry do daemon, retornando falso negativo. `pull`
# e a mesma operacao que sera necessaria no deploy e respeita essa
# configuracao, alem de manter a mensagem de erro original no log.
echo "validando e baixando imagem: ${IMG}"
docker pull "${IMG}"
echo "imagem encontrada: ${IMG}"
- name: Deploy
env:
AMBIENTE: ${{ inputs.ambiente }}
VERSAO: ${{ inputs.versao }}
SSH_HOST: ${{ vars.TEST_SSH_HOST || '192.168.0.44' }}
SSH_PORT: ${{ vars.TEST_SSH_PORT || '22' }}
SSH_USER: ${{ vars.SSH_USER_TEST || secrets.SSH_USER_TEST }}
SSH_PRIVATE_KEY: ${{ secrets.SSH_KEY_TEST }}
SSH_KNOWN_HOSTS: ${{ secrets.SSH_KNOWN_HOSTS_TEST || secrets.SSH_KNOWN_HOST_TEST }}
REGISTRY_TOKEN: ${{ secrets.REGISTRY_TOKEN }}
REGISTRY_USER: ${{ vars.REGISTRY_USER }}
ACTOR: ${{ github.actor }}
run: |
set -euo pipefail
if [ "${AMBIENTE}" = "teste" ]; then
echo "Deploy de teste usa SSH para ${SSH_HOST}:${SSH_PORT}."
chmod +x docker/deploy/deploy-over-ssh.sh
./docker/deploy/deploy-over-ssh.sh "${AMBIENTE}" "${VERSAO}"
else
chmod +x docker/deploy/deploy.sh
./docker/deploy/deploy.sh "${AMBIENTE}" "${VERSAO}"
fi
- name: Resumo
if: always()
run: |
{
echo "### Deploy"
echo ""
echo "| Campo | Valor |"
echo "| --- | --- |"
echo "| Ambiente | \`${{ inputs.ambiente }}\` |"
echo "| Versao | \`${{ inputs.versao }}\` |"
echo "| Acionado por | \`${{ github.actor }}\` |"
echo "| Resultado | \`${{ job.status }}\` |"
echo ""
echo "O deploy so troca a imagem. Migrations continuam sendo passo"
echo "separado e deliberado — ver \`docker/README.md\`."
} >> "$GITHUB_STEP_SUMMARY"
- name: Limpeza
if: always()
run: docker logout "${REGISTRY}" 2>/dev/null || true