Release / Plano (este commit já foi validado?) (push) Successful in 4s
CI / Trivy (dependências, segredos e configuração) (push) Successful in 9s
CI / Código e scripts (push) Successful in 14s
CI / Pacote .deb (push) Failing after 3s
Release / ci (push) Failing after 18s
Release / Publica a release (push) Skipped
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
70 lines
2.5 KiB
YAML
70 lines
2.5 KiB
YAML
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
|