CI/CD com /advpl-validate e /advpl-find-issues

Pipeline CI/CD pra Protheus usando @totvs/tds-ls e a skill claude-advpl-skill. GitHub Actions, GitLab CI, Jenkins.

Por muito tempo, "CI/CD pra Protheus" foi unico erro: dev empurrava fonte direto pra homolog. Com @totvs/tds-ls open source (NPM) e a claude-advpl-skill, da pra montar pipeline completo: validar sintaxe + analise estatica + compile remoto.

Etapas do pipeline

  1. Validate — pre-compile local sem AppServer (/advpl-validate src/)
  2. Find issues — analise estatica (/advpl-find-issues src/ --severity=error)
  3. Compile remoto — push pra AppServer homolog (/advpl-compile em modo CI)
  4. Smoke test — Web Service /health ou rotina batch curta

GitHub Actions — exemplo

name: AdvPL CI

on: [push, pull_request]

jobs:
  validate:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: '20'
      - run: npm install -g @totvs/tds-ls
      - name: Validate syntax
        run: |
          for arquivo in src/*.prw; do
            advpls appre -includes ./includes -file $arquivo
          done
      - name: Static analysis
        run: |
          node skills/advpl-find-issues/scripts/analyze.js src/             --severity=error --json > report.json
      - uses: actions/upload-artifact@v4
        with:
          name: analysis-report
          path: report.json

Gate de PR — bloqueia merge se achar erro

# script de pre-commit ou CI step
node skills/advpl-find-issues/scripts/analyze.js src/ --severity=error

# Exit code:
#   0 = limpo (passa)
#   1 = encontrou ERROR ou WARN (bloqueia)

Auto-fix em pull request

Com --fix, a skill aplica correcoes seguras (GetMV sem default, MsgYesNo legacy, Function nua). Pra abrir auto-PR de cleanup:

- name: Auto-fix safe issues
  run: |
    node skills/advpl-find-issues/scripts/analyze.js src/ --fix
    git config user.name "advpl-bot"
    git config user.email "bot@empresa.com"
    git checkout -b auto-fix/safe-issues
    git commit -am "auto-fix: GetMV defaults + MsgYesNo modern"
    git push origin auto-fix/safe-issues
    gh pr create --title "Auto-fix safe issues" --body "Gerado por claude-advpl-skill"

Pegadinhas

Veja também