name: Deploy Dev on: push: branches: - dev workflow_dispatch: jobs: deploy: name: Deploy para VM Dev runs-on: omnichannel-uat env: DEPLOY_PATH: /opt/omnichannel steps: - name: Checkout uses: actions/checkout@v4 - name: Preflight shell: bash run: | set -euo pipefail echo "Runner: $(hostname)" docker --version docker compose version psql --version - name: Verificar secrets obrigatórios shell: bash env: DB_PASSWORD: ${{ secrets.DB_PASSWORD }} run: | set -euo pipefail if [ -z "${DB_PASSWORD:-}" ]; then echo "Secret DB_PASSWORD não configurado." exit 1 fi - name: Sync arquivos para o servidor shell: bash run: | set -euo pipefail rsync -az --delete \ --exclude='.git/' \ --exclude='.gitea/' \ --exclude='frontend/' \ --exclude='backend/' \ ./ "$DEPLOY_PATH"/ - name: Executar migrations shell: bash env: PGHOST: ${{ secrets.DB_HOST }} PGPORT: ${{ secrets.DB_PORT }} PGUSER: ${{ secrets.DB_USER }} PGDATABASE: ${{ secrets.DB_NAME }} PGPASSWORD: ${{ secrets.DB_PASSWORD }} run: | set -euo pipefail PGHOST="${PGHOST//[$'\t\r\n ']}" PGPORT="${PGPORT//[$'\t\r\n ']}" export PGHOST PGPORT echo "Aplicando migrations..." for f in $(ls "$DEPLOY_PATH/database/migrations/"*.sql | sort); do echo "Aplicando: $(basename "$f")" psql -f "$f" done