GitHub Actions e CI¶
Tradução informativa da versão em inglês, atualizada em 25/10/2026. Em caso de divergência, prevalece a versão em inglês. Identificadores, comandos e blocos de código são mantidos sem tradução.
As GitHub Actions e o fluxo de CI deste repositório: duas ações compostas em .github/actions/ e o fluxo ci.yml.
Os fluxos deste repositório não exercitam as ações (25/10/2026), e elas não foram testadas a partir de outro repositório. As duas executam código de um checkout deste repositório:
verify-bundlecarregalib/verify.js, que precisa do SDK do workspace (sdks/typescript) compilado, econformance-testexecutatools/conformance.jsdo workspace, então só funciona em um checkout deste repositório. Para verificar bundles no seu próprio pipeline, veja Verificar bundles no seu projeto.
Ações disponíveis¶
verify-bundle¶
Verifica um Signed Bundle do DCP em um fluxo do GitHub Actions com o verificador de referência (lib/verify.js). Os bundles V1 passam por checagens de schema, assinatura Ed25519, cadeia de auditoria e Merkle. Os bundles V2 normativos (schemas/v2/signed_bundle.schema.json) são validados contra o schema e depois verificados por @dcp-ai/sdk: manifesto, assinatura composta Ed25519 + ML-DSA-65, vinculação de sessão e cadeia de auditoria.
Ela instala o pacote raiz do checkout a partir do qual é executada (npm install --production, ignorando os erros de instalação) e não compila o SDK do workspace, então compile sdks/typescript em uma etapa anterior. Ela verifica com a política padrão: não há nenhuma entrada de política.
Use só entradas de caminho literais e confiáveis: a ação as interpola em shell e em JavaScript avaliado com eval, em vez de passá-las como dados. Aspas ou sintaxe de shell em um caminho podem mudar o comando. Não derive essas entradas de um pull request, issue ou nome de artefato não confiáveis. O exemplo com a CLI de referência abaixo passa o caminho como argumento.
- uses: ./.github/actions/verify-bundle
with:
bundle-path: "path/to/signed_bundle.json"
public-key-path: "keys/public_key.txt" # Optional
fail-on-invalid: "true"
node-version: "20"
Entradas¶
| Entrada | Obrigatória | Padrão | Descrição |
|---|---|---|---|
bundle-path |
Sim | — | Caminho do arquivo JSON do bundle assinado |
public-key-path |
Não | — | Caminho da chave pública Ed25519 esperada. V1: verifica contra ela (caso contrário, usa a chave embutida no bundle). V2: fixa o signatário clássico do bundle |
fail-on-invalid |
Não | "true" |
Faz a etapa falhar se o bundle for inválido |
node-version |
Não | "20" |
Versão do Node.js |
Saídas¶
| Saída | Descrição |
|---|---|
verified |
"true" ou "false" |
errors |
Erros de verificação (se houver) |
Exemplo de uso¶
Um esboço para um checkout deste repositório (não executado para esta página): a ação e lib/verify.js vêm do
checkout, e agent/citizenship_bundle.signed.json e agent/public_key.txt representam arquivos fornecidos pelo
operador.
name: Verify Agent Bundle
on: [push]
jobs:
verify:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: "20"
- name: Build the workspace SDK (the action does not)
run: (cd sdks/typescript && npm ci && npm run build)
- name: Verify DCP Bundle
id: verify
uses: ./.github/actions/verify-bundle
with:
bundle-path: "agent/citizenship_bundle.signed.json"
public-key-path: "agent/public_key.txt"
- name: Check result
run: echo "Verified: ${{ steps.verify.outputs.verified }}"
conformance-test¶
Executa node tools/conformance.js no workspace: a suíte de conformidade V1 + V2 do repositório, sobre os seus próprios exemplos. Só funciona em um checkout deste repositório, e a sua entrada test-dir não é usada.
- uses: ./.github/actions/conformance-test
with:
node-version: "20"
test-dir: "tests/conformance/examples"
Entradas¶
| Entrada | Obrigatória | Padrão | Descrição |
|---|---|---|---|
node-version |
Não | "20" |
Versão do Node.js |
test-dir |
Não | "tests/conformance/examples" |
Não é usada pela ação |
Saídas¶
| Saída | Descrição |
|---|---|
passed |
Se todos os testes passaram |
summary |
Resumo dos testes |
Exemplo de uso¶
Um esboço para um checkout deste repositório (não executado para esta página). tools/conformance.js importa
@dcp-ai/sdk, então o SDK do workspace é compilado antes:
name: DCP Conformance
on: [push]
jobs:
conformance:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: "20"
- name: Build the workspace SDK (the action does not)
run: (cd sdks/typescript && npm ci && npm run build)
- name: Run Conformance Tests
id: conform
uses: ./.github/actions/conformance-test
- name: Results
run: echo "${{ steps.conform.outputs.summary }}"
Fluxo de CI¶
O fluxo ci.yml é executado nos pushes para main e nos pull requests contra qualquer branch base. Um job changes detecta quais partes mudaram (dorny/paths-filter), e os jobs abaixo são executados para essas partes:
| Job | O que executa |
|---|---|
conformance |
Node.js 20 e 22: npm install, npm run conformance, os testes do intervalo do escalar S de tools/crypto.js e do playground, npm run examples:generate:v2, dcp verify-bundle nos exemplos V1 e V2 (V2 com hybrid_required) e dcp integrity |
typescript-sdk |
sdks/typescript: npm install, npx tsc --noEmit, npm run build, npm run test, cobertura |
integrations |
anthropic-mcp, express, google-a2a, openclaw: compila o SDK do workspace, npm ci, build, vitest run |
cli |
Node.js 20 e 22: compila o SDK do workspace, instala-o em cli/, os testes da CLI e o seu controle negativo, e uma checagem dos arquivos empacotados |
python-sdk |
Python 3.12: pip install -e ".[dev]", pytest com cobertura |
go-sdk |
Go conforme sdks/go/go.mod: go build ./..., go test com cobertura |
rust-sdk |
Rust estável: cargo build, cargo build --features otlp, cobertura, cargo test --all-features, um build dos testes para wasm32-unknown-unknown |
wasm-sdk |
Rust estável e wasm-pack: npm run build:wasm, npm test em sdks/wasm |
Outros fluxos cobrem a matriz e o laboratório do candidato de canonicalização, os contratos, o fuzzing diferencial, a matriz de interoperabilidade, os rótulos e a publicação (npm, PyPI, imagens Docker, integrações, modelos). Dois cobrem a documentação, e nenhum traduz nada automaticamente: i18n-sync.yml («Documentation and i18n») checa, nos pull requests e nos pushes para main que mexem em Markdown ou nas ferramentas de documentação, a cobertura, os hashes revisados, a estrutura e os links dos cinco idiomas, executa os controles positivos e negativos dessa barreira e constrói o site nos cinco idiomas; docs.yml constrói o mesmo site em main e o implanta no GitHub Pages.
Para executar localmente as mesmas checagens de documentação, veja Documentation and translations no CONTRIBUTING.md:
pip install 'mkdocs==1.6.*' 'mkdocs-material==9.5.*' 'pymdown-extensions==10.*'
python3 scripts/docs_i18n.py check
python3 -m unittest discover -s scripts -p 'test_docs*.py' -v
bash scripts/build-docs-site.sh
Verificar bundles no seu projeto¶
Um esboço que verifica um bundle com a CLI de referência de um checkout fixado (não executado para esta página). dcp verify-bundle sai com 0 quando o bundle é verificado e com um valor diferente de zero caso contrário, e só lê arquivos sob o diretório atual:
# .github/workflows/dcp.yml
name: DCP Verification
on: [push, pull_request]
jobs:
verify:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v4
with:
repository: dcp-ai-protocol/dcp-ai
ref: <full commit SHA you have reviewed>
path: dcp-ai
- uses: actions/setup-node@v4
with:
node-version: "22"
- name: Build the reference verifier
run: |
(cd dcp-ai/sdks/typescript && npm ci && npm run build)
(cd dcp-ai && npm install)
- name: Verify the agent's bundle
run: node dcp-ai/bin/dcp.js verify-bundle --policy hybrid_required my-agent/bundle.signed.json
Um bundle verificado está íntegro e assinado pelas chaves que nomeia; para aceitar bundles só de principais em que você confia, use a admissão (dcp admit-bundle, veja docs/ADMISSION.md).
Licença¶
Apache-2.0