diff --git a/.github/workflows/ci-cd-neon.yml b/.github/workflows/ci-cd-neon.yml new file mode 100644 index 0000000..8ce557d --- /dev/null +++ b/.github/workflows/ci-cd-neon.yml @@ -0,0 +1,83 @@ +name: deploy-neon + +on: + pull_request: + branches: + - 'main' + paths: + - 'sql/script.sql' + + push: + branches: + - 'main' + paths: + - 'sql/script.sql' + +permissions: + pull-requests: write + +jobs: + deploy-teste: + if: github.event_name == 'pull_request' + name: Deploy na branch de testes do banco + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Instala postgres + run: | + sudo apt-get update -y + sudo apt-get install -y postgresql-client + + - name: Exclui banco atual + env: + DATABASE_URL: ${{ secrets.NEON_TESTE_DATABASE_URL }} + run: | + psql "$DATABASE_URL" -v ON_ERROR_STOP=1 <<'SQL' + DROP SCHEMA IF EXISTS public CASCADE; + DROP SCHEMA IF EXISTS pdca CASCADE; + DROP SCHEMA IF EXISTS auditoria CASCADE; + SQL + + - name: Aplica script.sql no banco de testes + env: + DATABASE_URL: ${{ secrets.NEON_TESTE_DATABASE_URL }} + run: | + psql "$DATABASE_URL" -v ON_ERROR_STOP=1 -f sql/script.sql + + - name: Comenta resultado na Pull Request + if: always() + uses: actions/github-script@v7 + with: + script: | + const status = '${{ job.status }}' + const mensagem = status === 'success' ? '✅ **Script aplicado com sucesso no banco de testes do Neon!** O banco foi resetado e o `script.sql` desta Pull Request foi carregado!' : '❌ **Falha ao aplicar script no banco de testes do Neon.** Verifique os logs do workflow para ter detalhes...' + + github.rest.issues.createComment({ + issue_number: context.issue.number, + owner: context.repo.owner, + repo: context.repo.repo, + body: mensagem + }) + + deploy-producao: + if: github.event_name == 'push' + name: Deploy no banco em produção + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Instala postgres + run: | + sudo apt-get update -y + sudo apt-get install -y postgresql-client + + - name: Aplica script.sql no banco de produção + env: + DATABASE_URL: ${{ secrets.NEON_PROD_DATABASE_URL }} + run: | + psql "$DATABASE_URL" -v ON_ERROR_STOP=1 -f sql/script.sql \ No newline at end of file