Protege o CI em repositório público e prepara a ativação do runner
ci / lint, typecheck, testes e build (push) Has been cancelled
ci / Postgres e Redis reais (push) Has been cancelled
ci / imagem Docker Linux (push) Has been cancelled
runner-check / o runner responde (push) Has been cancelled

O push para o Gitea criou o run, mas ele ficou em Waiting: a mensagem da
instância é "No matching online runner with label: ubuntu-latest". A falha é na
atribuição do job, não no enfileiramento — o gatilho funcionou e a branch está
contemplada. O endpoint /actions/tasks devolvia lista vazia porque lista tasks
aceitas por runner, não runs criados, e foi isso que confundiu a leitura.

Com o diagnóstico fechado, duas coisas importam antes de um runner existir.

Primeira: este repositório é público e o CI dispara em pull_request. Sem
guarda, um fork traria código de terceiro para rodar na máquina do runner, com
Docker à disposição. Os três jobs do ci.yml e o runner-check passam a exigir
que o PR venha da própria origem; push continua rodando normalmente. Também
entram `permissions: contents: read` e `concurrency` por ref, para não
acumular fila de runs esperando runner.

Segunda: `runner-check` é o primeiro workflow a rodar quando o runner subir.
Não faz checkout, não instala dependência, não usa segredo e não toca rede
externa. Só confirma a ligação e inventaria node, npm, docker, psql e python3
— o job `services` precisa de psql e a jornada assíncrona precisa de python3,
e é melhor descobrir isso num workflow de dez segundos.

A documentação registra a evidência (runs 666 em Waiting e 584 cancelado),
recomenda act_runner 0.6.1-dind-rootless com escopo de repositório, e explica
por que Docker-in-Docker em vez do socket do host: num repositório público,
montar o socket entregaria o Docker da máquina ao workflow. Fica registrado
também que os ambientes de aprovação manual do deploy são conceito do GitHub e
não têm equivalente no Gitea.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
camilafagundesandClaude Opus 5 committed 2026-10-15 21:17:12 -03:00
1 parent 5b11496cd9
commit c5790ab301
3 files changed
+217

No files matched your search

+17
View File
@@ -4,10 +4,25 @@ on:
push:
pull_request:
# Mínimo necessário. Nenhum job deste workflow escreve no repositório.
permissions:
contents: read
# O repositório é público e o runner é uma máquina real. Um pull request de
# fork traria código de terceiro para rodar nele, com Docker à disposição.
# Enquanto não houver aprovação manual de workflow configurada na instância,
# só PR da própria origem executa. Push continua rodando normalmente.
# Evita fila de runs esperando runner: um push novo cancela o anterior do
# mesmo ref. O que já estava em execução não é interrompido no meio.
concurrency:
group: ci-${{ github.ref }}
cancel-in-progress: true
jobs:
verify:
name: lint, typecheck, testes e build
runs-on: ubuntu-latest
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository
env:
ADAPTER_ENV: development
ADAPTER_JOB_MODE: inline
@@ -27,6 +42,7 @@ jobs:
services:
name: Postgres e Redis reais
runs-on: ubuntu-latest
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository
services:
postgres:
image: postgres:16-alpine
@@ -99,6 +115,7 @@ jobs:
image:
name: imagem Docker Linux
runs-on: ubuntu-latest
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository
env:
ADAPTER_IMAGE: adaptador-planilhas:ci
steps: