name: CI # Na main não roda por push: o release.yml é quem o chama, e uma vez só por # commit. Sem gatilho de pull_request: o push da branch já valida o mesmo commit, # e os dois juntos rodariam tudo duas vezes (o repositório não recebe PR de fork). on: push: branches-ignore: [main] paths-ignore: ['**.md', 'LICENSE', '.claude/**', '.wolf/**', 'scripts/release-notes.sh'] schedule: - cron: '0 9 * * 1' # toda segunda: reavalia com a base de vulnerabilidades nova workflow_call: permissions: contents: read concurrency: group: ci-${{ gitea.ref }} cancel-in-progress: true jobs: verificar: name: Código e scripts runs-on: ubuntu-24.04-arm timeout-minutes: 10 steps: - uses: actions/checkout@v4 - name: Sintaxe e shellcheck run: | python3 -m py_compile copiado.py command -v shellcheck >/dev/null || { apt-get update -qq && apt-get install -y -qq shellcheck; } shellcheck instalar.sh desinstalar.sh empacotamento/gerar-deb.sh scripts/*.sh # Trivy roda pela imagem oficial: o trivy-action clona o repositório do Trivy # do mesmo servidor do workflow, que aqui é o Gitea. O workspace do job não é # visível ao daemon, então os arquivos entram no container com `docker cp`. seguranca: name: Trivy (dependências, segredos e configuração) runs-on: ubuntu-24.04-arm steps: - uses: actions/checkout@v4 - run: | cid=$(docker create --network host -v trivy-cache:/root/.cache/ -w /src aquasec/trivy:0.70.0 \ fs --scanners vuln,secret,misconfig --severity HIGH,CRITICAL --exit-code 1 .) docker cp . "$cid:/src" docker start -a "$cid" status=$(docker inspect -f '{{.State.ExitCode}}' "$cid") docker rm "$cid" >/dev/null exit "$status" pacote: name: Pacote .deb needs: [verificar, seguranca] runs-on: ubuntu-24.04-arm steps: - uses: actions/checkout@v4 - name: Gera o .deb run: | empacotamento/gerar-deb.sh "0.0.0~ci" (cd dist && sha256sum copiado_all.deb > SHA256SUMS) # Confere o conteúdo sem instalar: instalar puxaria python3-gi e o GTK só # para provar que os arquivos estão no lugar. - name: Confere o conteúdo do pacote run: | dpkg-deb -I dist/copiado_all.deb mkdir conteudo && dpkg-deb -x dist/copiado_all.deb conteudo test -x conteudo/usr/bin/copiado test -f conteudo/etc/xdg/autostart/copiado.desktop python3 -m py_compile conteudo/usr/bin/copiado