Referência da bohr-io/deploy-action
A bohr-io/deploy-action@v1 faz deploy de projetos da bohr a partir do GitHub Actions. Ela é uma camada fina que roda a CLI do bohr mais recente (npx --yes bohr@latest action) com os inputs abaixo. Ela entra na bohr com o token OIDC do GitHub da execução, então o job precisa de:
permissions: contents: read id-token: writeEla tem três modos:
| Modo | Input | Usado por | O que faz |
|---|---|---|---|
| Deploy (padrão) | — | Projetos que a bohr hospeda | Envia o Worker construído e os assets estáticos para a hospedagem da bohr, para o branch que recebeu o push |
| Credenciais | credentials: "true" |
Projetos na sua própria conta Cloudflare (no workflow que a bohr escreve) | Obtém as credenciais da Cloudflare e as variáveis de build para o wrangler deploy; não faz deploy de nada |
| Plano de build | build-plan: "true" |
Projetos migrados da bohr v1 que mantêm o workflow da v1 | Obtém o plano de build do projeto; não faz deploy de nada |
Raramente você mesmo adiciona a action: a bohr a escreve no bohr-deploy.yml dos projetos na sua conta, e os projetos migrados a rodam pelo workflow da v1.
| Input | Padrão | Descrição |
|---|---|---|
instance-url |
https://app.bohr.io |
URL base da instância da bohr que gerencia o projeto. Precisa usar https. |
working-directory |
. |
Pasta com o wrangler.jsonc (ou wrangler.json) do projeto, relativa à raiz do repositório. Modo deploy. |
credentials |
false |
"true": só obtém as credenciais de deploy e as variáveis de build de um projeto na conta do dono. |
build-plan |
false |
"true": só prepara o build de um projeto migrado da bohr v1. |
phase |
prepare |
Com build-plan: "true": o passo a rodar. Só existe prepare. |
credentials e build-plan não podem ser "true" ao mesmo tempo.
Outputs
Seção intitulada “Outputs”| Output | Modo | Descrição |
|---|---|---|
url |
Deploy | URL onde o branch publicado é servido |
deployment-id |
Deploy | Identificador do deployment na instância da bohr |
cloudflare-api-token |
Credenciais | O token de API da Cloudflare para fazer o deploy (mascarado) |
cloudflare-account-id |
Credenciais | A conta Cloudflare onde fazer o deploy (mascarado) |
found |
Plano de build | "true" quando a bohr tem um plano de build para este repositório, senão "false" |
node-version |
Plano de build | A versão do Node.js para o actions/setup-node |
install |
Plano de build | O comando de install (vazio: nenhum) |
build |
Plano de build | O comando de build (vazio: nenhum) |
live |
Plano de build | "true" quando o endereço de produção do projeto já foi para a bohr v2 |
No modo deploy, o job summary mostra a URL e quantos arquivos foram encontrados e enviados.
Modo deploy
Seção intitulada “Modo deploy”Rode o seu build antes da action: ela faz deploy do que o build escreveu, e não instala dependências nem faz build. Cada branch que recebe push ganha deploy no seu próprio endereço; o branch de produção recebe o endereço principal do projeto.
A action lê wrangler.json ou wrangler.jsonc em working-directory, empacota o main com wrangler deploy --dry-run (adicione wrangler às suas devDependencies para fixar a versão) e envia só os arquivos estáticos novos ou alterados. Projetos hospedados suportam assets estáticos, vars e secrets: veja Configuração do wrangler.
Modo credenciais
Seção intitulada “Modo credenciais”Com credentials: "true" a action pede as credenciais à bohr (POST <instance-url>/api/deploy/credentials com o token OIDC), mascara todos os valores e então:
- exporta as variáveis de build do projeto (branch de produção) para o ambiente dos steps seguintes, para que o install e o build as vejam;
- define o token e a conta da Cloudflare como outputs do step, para que só o step que os mapeia (o deploy) os receba.
A bohr só responde a execuções de .github/workflows/bohr-deploy.yml num push (ou workflow_dispatch) para o branch de produção do projeto, de um projeto na conta Cloudflare do dono. Ela entrega o token do próprio dono (o seu, ou o da sua organização), nunca o da bohr.
Modo plano de build
Seção intitulada “Modo plano de build”Para repositórios migrados da bohr v1 que mantêm o workflow (.github/workflows/bohr.yml rodando bohr-io/action@main). A action da bohr v1 chama esta duas vezes: para preparar (build-plan: "true") e depois para fazer o deploy. Nada é escrito no seu repositório. Veja Migrar da bohr v1.
| Erro | Correção |
|---|---|
Could not get a GitHub OIDC token |
Adicione permissions: id-token: write ao workflow ou ao job. Workflows disparados a partir de forks nunca recebem tokens OIDC. |
No bohr.io Cloud managed project matches this repository and branch |
Crie ou migre o projeto no painel da bohr, e faça deploy em pushes de branch (não em tags nem pull requests). |
could not give the deploy credentials (HTTP 403) |
Modo credenciais: a mensagem diz o motivo. Só o bohr-deploy.yml num push para o branch de produção de um projeto na conta do dono recebe as credenciais. |
Found wrangler.toml, but this action reads wrangler.jsonc |
Converta a configuração para wrangler.jsonc. |
… is not supported |
Remova o binding; projetos hospedados suportam assets estáticos, vars e secrets. |
The assets directory … does not exist |
Rode o build antes da action, ou corrija assets.directory. |
Asset too large: … |
Arquivos com mais de 25 MiB não podem ir no deploy: remova o arquivo ou liste-o no .assetsignore. |