Protege o CI em repositório público e prepara a ativação do runner
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:
1 parent
5b11496cd9
commit
c5790ab301
3 files changed
+217
No files matched your search
@@ -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:
|
||||
|
||||
Reference in new issue
Block a user