Integração com GitHub Actions

O Archyl oferece seis GitHub Actions oficiais que integram a governança arquitetural diretamente no seu pipeline de CI/CD.
| Action | Gatilho | Finalidade |
|---|---|---|
| Conformance Check | Pull requests | Validar alterações de código contra as regras de arquitetura |
| Drift Score | Pull requests | Calcular a pontuação de desvio e aplicar um quality gate |
| Generate Context | Push para main | Gerar o archyl.txt para agentes de IA |
| Auto CR | Push para main | Criar solicitações de mudança de arquitetura no merge |
| Release | Push / tags | Registrar releases no Archyl |
| Sync | Push para main | Sincronizar a DSL archyl.yaml com o Archyl |
Todas as actions são publicadas em archyl-com/actions e versionadas com @v1.
Pré-requisitos
Antes de usar as actions, você precisa de:
- Uma chave de API do Archyl -- Vá em Perfil > Chaves de API e crie uma com escopo de escrita
- Um ID da organização -- Encontrado na página de configurações da sua organização
- Um ID do projeto -- Encontrado na URL ou na página de configurações do seu projeto
- Armazene esses valores como secrets e variáveis do GitHub:
Settings > Secrets > Actions:
ARCHYL_API_KEY # Your API key (secret)
Settings > Variables > Actions:
ARCHYL_ORG_ID # Organization UUID
ARCHYL_PROJECT_ID # Project UUID
Início Rápido
A forma mais rápida de começar é usar os workflows reutilizáveis do Archyl -- um para PRs e outro para pushes na branch main:
# .github/workflows/archyl.yml
name: Archyl Architecture
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
# Conformance check + drift score on PRs (run in parallel)
pr-checks:
if: github.event_name == 'pull_request'
uses: archyl-com/actions/.github/workflows/archyl-pr.yml@v1
with:
organization-id: ${{ vars.ARCHYL_ORG_ID }}
project-id: ${{ vars.ARCHYL_PROJECT_ID }}
drift-threshold: 70
secrets:
api-key: ${{ secrets.ARCHYL_API_KEY }}
# Generate context + sync + release on merge to main
main-sync:
if: github.event_name == 'push'
uses: archyl-com/actions/.github/workflows/archyl-main.yml@v1
with:
organization-id: ${{ vars.ARCHYL_ORG_ID }}
project-id: ${{ vars.ARCHYL_PROJECT_ID }}
sync: true
release: true
release-environment: 'production'
secrets:
api-key: ${{ secrets.ARCHYL_API_KEY }}
Isso fornece um ciclo completo de governança arquitetural: as regras de conformidade validam cada PR, a pontuação de desvio acompanha o quanto seu código corresponde ao modelo e, no merge, o modelo se mantém sincronizado automaticamente.
Actions Individuais
Conformance Check
Executa suas regras de conformidade nos arquivos alterados em um pull request. Anota as violações diretamente nas linhas e publica um comentário de resumo no PR.
- uses: archyl-com/actions/conformance-check@v1
with:
api-key: ${{ secrets.ARCHYL_API_KEY }}
organization-id: ${{ vars.ARCHYL_ORG_ID }}
project-id: ${{ vars.ARCHYL_PROJECT_ID }}
Entradas
| Entrada | Obrigatória | Padrão | Descrição |
|---|---|---|---|
api-key |
Sim | -- | Chave de API do Archyl com escopo de escrita |
organization-id |
Sim | -- | UUID da organização no Archyl |
project-id |
Sim | -- | UUID do projeto no Archyl |
api-url |
Não | https://api.archyl.com |
URL de API personalizada (para instalações auto-hospedadas) |
fail-on |
Não | error |
Severidade mínima que faz a verificação falhar: error, warning ou none |
comment-on-pr |
Não | true |
Publicar um comentário de resumo no pull request |
github-token |
Não | ${{ github.token }} |
Token do GitHub para os comentários no PR |
max-file-lines |
Não | 200 |
Número máximo de linhas enviadas por arquivo (reduz o uso de tokens) |
chunk-size |
Não | 20 |
Número de arquivos enviados por chamada à API (para diffs grandes) |
Saídas
| Saída | Descrição |
|---|---|
check-id |
UUID da verificação de conformidade |
total-violations |
Número total de violações encontradas |
errors |
Número de violações de nível error |
warnings |
Número de violações de nível warning |
infos |
Número de violações de nível info |
status |
Resultado da verificação: pass ou fail |
Uso das Saídas
- uses: archyl-com/actions/conformance-check@v1
id: conformance
with:
api-key: ${{ secrets.ARCHYL_API_KEY }}
organization-id: ${{ vars.ARCHYL_ORG_ID }}
project-id: ${{ vars.ARCHYL_PROJECT_ID }}
fail-on: none # Don't fail, handle manually
- name: Custom handling
if: steps.conformance.outputs.status == 'fail'
run: |
echo "Found ${{ steps.conformance.outputs.total-violations }} violations"
echo "Errors: ${{ steps.conformance.outputs.errors }}"
echo "Warnings: ${{ steps.conformance.outputs.warnings }}"
Drift Score
Calcula a pontuação de desvio arquitetural -- o quanto sua base de código corresponde ao seu modelo C4. Opcionalmente, aplica um quality gate fazendo o build falhar se a pontuação cair abaixo de um limite.
- uses: archyl-com/actions/drift-score@v1
with:
api-key: ${{ secrets.ARCHYL_API_KEY }}
organization-id: ${{ vars.ARCHYL_ORG_ID }}
project-id: ${{ vars.ARCHYL_PROJECT_ID }}
threshold: 70
Entradas
| Entrada | Obrigatória | Padrão | Descrição |
|---|---|---|---|
api-key |
Sim | -- | Chave de API do Archyl com escopo de escrita |
organization-id |
Sim | -- | UUID da organização no Archyl |
project-id |
Sim | -- | UUID do projeto no Archyl |
api-url |
Não | https://api.archyl.com |
URL de API personalizada (para instalações auto-hospedadas) |
threshold |
Não | 0 |
Pontuação de desvio mínima aceitável (0-100). Falha se a pontuação ficar abaixo desse valor. Defina como 0 para nunca falhar. |
poll-interval |
Não | 5 |
Segundos entre consultas de status enquanto aguarda o cálculo |
poll-timeout |
Não | 300 |
Tempo máximo, em segundos, de espera pela conclusão do cálculo |
comment-on-pr |
Não | false |
Publicar um comentário de resumo no pull request |
github-token |
Não | ${{ github.token }} |
Token do GitHub para os comentários no PR |
Saídas
| Saída | Descrição |
|---|---|
score |
Pontuação de desvio (0-100) |
score-id |
UUID do registro da pontuação de desvio |
total-elements |
Número total de elementos comparados |
matched-count |
Número de elementos correspondentes |
missing-in-code |
Número de elementos ausentes no código |
new-in-code |
Número de novos elementos encontrados no código |
status |
Status do cálculo: completed ou failed |
Generate Context
Gera um arquivo archyl.txt com o contexto da sua arquitetura, otimizado para agentes de IA e LLMs. Pode fazer commit automático do arquivo quando ele muda.
- uses: archyl-com/actions/generate-context@v1
with:
api-key: ${{ secrets.ARCHYL_API_KEY }}
organization-id: ${{ vars.ARCHYL_ORG_ID }}
project-id: ${{ vars.ARCHYL_PROJECT_ID }}
commit: 'true'
Entradas
| Entrada | Obrigatória | Padrão | Descrição |
|---|---|---|---|
api-key |
Sim | -- | Chave de API do Archyl com escopo de leitura |
organization-id |
Sim | -- | UUID da organização no Archyl |
project-id |
Sim | -- | UUID do projeto no Archyl |
api-url |
Não | https://api.archyl.com |
URL de API personalizada (para instalações auto-hospedadas) |
output-file |
Não | archyl.txt |
Caminho onde o arquivo de contexto gerado é gravado |
format |
Não | markdown |
Formato de saída: markdown para um briefing otimizado para LLMs, full para JSON estruturado + markdown |
commit |
Não | false |
Fazer commit automático do arquivo gerado se ele tiver mudado |
commit-message |
Não | chore: update archyl.txt architecture context |
Mensagem de commit usada no commit automático |
Saídas
| Saída | Descrição |
|---|---|
file-path |
Caminho do arquivo de contexto gerado |
changed |
Se o conteúdo do arquivo mudou (true ou false) |
token-count |
Número aproximado de tokens do arquivo gerado |
Auto CR
Cria automaticamente uma solicitação de mudança de arquitetura no Archyl quando o código é mesclado na main. Analisa o diff para detectar alterações relevantes para a arquitetura e as registra para revisão.
- uses: archyl-com/actions/auto-cr@v1
with:
api-key: ${{ secrets.ARCHYL_API_KEY }}
organization-id: ${{ vars.ARCHYL_ORG_ID }}
project-id: ${{ vars.ARCHYL_PROJECT_ID }}
Entradas
| Entrada | Obrigatória | Padrão | Descrição |
|---|---|---|---|
api-key |
Sim | -- | Chave de API do Archyl com escopo de escrita |
organization-id |
Sim | -- | UUID da organização no Archyl |
project-id |
Sim | -- | UUID do projeto no Archyl |
api-url |
Não | https://api.archyl.com |
URL de API personalizada (para instalações auto-hospedadas) |
github-token |
Não | ${{ github.token }} |
Token do GitHub para comentários em commits e acesso ao diff |
base-ref |
Não | (detectado automaticamente) | Ref base usada na comparação |
comment-on-commit |
Não | false |
Publicar um comentário no commit de merge com o link da solicitação de mudança |
Saídas
| Saída | Descrição |
|---|---|
request-id |
UUID da solicitação de mudança criada |
changes-detected |
Número de alterações relevantes para a arquitetura encontradas |
status |
created, skipped (sem alterações) ou failed |
Release
Cria ou atualiza uma release no Archyl a partir do seu pipeline de CI. Registre deploys, associe-os a ambientes e elementos C4 e alimente suas métricas DORA.
- uses: archyl-com/actions/release@v1
with:
api-key: ${{ secrets.ARCHYL_API_KEY }}
project-id: ${{ vars.ARCHYL_PROJECT_ID }}
status: deployed
environment: production
Entradas
| Entrada | Obrigatória | Padrão | Descrição |
|---|---|---|---|
api-key |
Sim | -- | Chave de API do Archyl com escopo de escrita |
project-id |
Sim | -- | UUID do projeto no Archyl |
api-url |
Não | https://api.archyl.com |
URL de API personalizada (para instalações auto-hospedadas) |
version |
Não | $GITHUB_REF_NAME |
Versão da release |
status |
Não | deployed |
Status da release: planned, in_progress, deployed, rolled_back, failed |
changelog |
Não | -- | Changelog ou descrição da release |
environment |
Não | -- | Nome do ambiente de destino (ex.: production, staging). Criado automaticamente se não existir. |
container-id |
Não | -- | UUID do contêiner no Archyl a associar a esta release |
system-id |
Não | -- | UUID do sistema no Archyl a associar a esta release |
source-url |
Não | -- | URL de volta para a origem (commit, página da release etc.) |
Saídas
| Saída | Descrição |
|---|---|
release-id |
UUID da release criada ou atualizada |
Sync
Sincroniza seu arquivo DSL archyl.yaml com o Archyl. Declare sua arquitetura como código e envie as alterações a cada commit.
- uses: archyl-com/actions/sync@v1
with:
api-key: ${{ secrets.ARCHYL_API_KEY }}
project-id: ${{ vars.ARCHYL_PROJECT_ID }}
Entradas
| Entrada | Obrigatória | Padrão | Descrição |
|---|---|---|---|
api-key |
Sim | -- | Chave de API do Archyl com escopo de escrita |
project-id |
Sim | -- | UUID do projeto no Archyl |
api-url |
Não | https://api.archyl.com |
URL de API personalizada (para instalações auto-hospedadas) |
file |
Não | archyl.yaml |
Caminho do arquivo archyl.yaml relativo à raiz do repositório |
Saídas
| Saída | Descrição |
|---|---|
systems-created |
Número de sistemas criados |
containers-created |
Número de contêineres criados |
components-created |
Número de componentes criados |
relationships-created |
Número de relacionamentos criados |
summary |
Resumo legível do resultado da sincronização |
Workflows Reutilizáveis
O Archyl oferece dois workflows reutilizáveis que combinam várias actions para os cenários mais comuns.
archyl-pr.yml
Executa o conformance check e o drift score em paralelo em cada pull request.
jobs:
archyl:
uses: archyl-com/actions/.github/workflows/archyl-pr.yml@v1
with:
organization-id: ${{ vars.ARCHYL_ORG_ID }}
project-id: ${{ vars.ARCHYL_PROJECT_ID }}
drift-threshold: 70 # Fail if drift score drops below 70
fail-on: error # Fail on error-level conformance violations
comment-on-pr: true # Post PR comments with results
secrets:
api-key: ${{ secrets.ARCHYL_API_KEY }}
Todas as entradas são opcionais, exceto organization-id, project-id e api-key.
archyl-main.yml
Executa generate-context, sync e release a cada push na main. Cada job pode ser ativado ou desativado de forma independente.
jobs:
archyl:
uses: archyl-com/actions/.github/workflows/archyl-main.yml@v1
with:
organization-id: ${{ vars.ARCHYL_ORG_ID }}
project-id: ${{ vars.ARCHYL_PROJECT_ID }}
generate-context: true # Generate and auto-commit archyl.txt
context-format: markdown # LLM-optimized format
sync: true # Sync archyl.yaml to Archyl
sync-file: archyl.yaml # Path to your archyl.yaml
release: true # Create a release record
release-status: deployed
release-environment: production
secrets:
api-key: ${{ secrets.ARCHYL_API_KEY }}
Outras Plataformas de CI
GitLab CI
O Archyl oferece um template de CI para incluir no GitLab. Ele executa o conformance check e o drift score em merge requests e gera o contexto a cada push na branch padrão.
Configuração:
Adicione as variáveis de CI/CD necessárias em Configurações > CI/CD > Variáveis:
ARCHYL_API_KEY(mascarada, protegida)ARCHYL_ORG_IDARCHYL_PROJECT_ID
Inclua o template no seu
.gitlab-ci.yml:
include:
- remote: 'https://raw.githubusercontent.com/archyl-com/actions/main/ci-templates/gitlab/.archyl-ci.yml'
Isso adiciona três jobs ao seu pipeline:
archyl:conformance-- executado em merge requestsarchyl:drift-score-- executado em merge requestsarchyl:generate-context-- executado a cada push na branch padrão
Variáveis opcionais: ARCHYL_API_URL, ARCHYL_DRIFT_THRESHOLD.
Bitbucket Pipelines
Copie o template de pipelines do Archyl para o seu bitbucket-pipelines.yml.
Configuração:
Adicione as variáveis de repositório necessárias em Configurações > Variáveis do repositório:
ARCHYL_API_KEY(protegida)ARCHYL_ORG_IDARCHYL_PROJECT_ID
Adicione as etapas do pipeline:
pipelines:
pull-requests:
'**':
- step:
name: "Archyl Conformance Check"
image: alpine:3.20
script:
- apk add --no-cache curl jq git
- # ... conformance check script
- step:
name: "Archyl Drift Score"
image: alpine:3.20
script:
- apk add --no-cache curl jq
- # ... drift score script
branches:
main:
- step:
name: "Archyl Generate Context"
image: alpine:3.20
script:
- apk add --no-cache curl jq git
- # ... generate context script
O template completo está disponível em archyl-com/actions/ci-templates/bitbucket/archyl-pipelines.yml.
Exemplo Combinado
Um workflow completo que usa as seis actions juntas:
# .github/workflows/architecture.yml
name: Archyl Architecture
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
# --- PR checks (parallel) ---
conformance:
if: github.event_name == 'pull_request'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: archyl-com/actions/conformance-check@v1
with:
api-key: ${{ secrets.ARCHYL_API_KEY }}
organization-id: ${{ vars.ARCHYL_ORG_ID }}
project-id: ${{ vars.ARCHYL_PROJECT_ID }}
drift:
if: github.event_name == 'pull_request'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: archyl-com/actions/drift-score@v1
with:
api-key: ${{ secrets.ARCHYL_API_KEY }}
organization-id: ${{ vars.ARCHYL_ORG_ID }}
project-id: ${{ vars.ARCHYL_PROJECT_ID }}
threshold: 70
comment-on-pr: 'true'
# --- Main branch (after merge) ---
generate-context:
if: github.event_name == 'push'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: archyl-com/actions/generate-context@v1
with:
api-key: ${{ secrets.ARCHYL_API_KEY }}
organization-id: ${{ vars.ARCHYL_ORG_ID }}
project-id: ${{ vars.ARCHYL_PROJECT_ID }}
commit: 'true'
sync:
if: github.event_name == 'push'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: archyl-com/actions/sync@v1
with:
api-key: ${{ secrets.ARCHYL_API_KEY }}
project-id: ${{ vars.ARCHYL_PROJECT_ID }}
auto-cr:
if: github.event_name == 'push'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: archyl-com/actions/auto-cr@v1
with:
api-key: ${{ secrets.ARCHYL_API_KEY }}
organization-id: ${{ vars.ARCHYL_ORG_ID }}
project-id: ${{ vars.ARCHYL_PROJECT_ID }}
release:
if: github.event_name == 'push'
runs-on: ubuntu-latest
steps:
- uses: archyl-com/actions/release@v1
with:
api-key: ${{ secrets.ARCHYL_API_KEY }}
project-id: ${{ vars.ARCHYL_PROJECT_ID }}
status: deployed
environment: production
source-url: ${{ github.server_url }}/${{ github.repository }}/commit/${{ github.sha }}
Visualizando os Resultados
Os resultados de todas as verificações disparadas pelo CI aparecem no Archyl:
- Verificações de conformidade -- visíveis no painel de conformidade (aba Hub de Agentes > Painel). Clique em qualquer verificação para ver as violações agrupadas por arquivo.
- Pontuações de desvio -- visíveis na seção de desvio arquitetural do seu projeto. Acompanhe o histórico da pontuação ao longo do tempo.
- Solicitações de mudança -- visíveis na seção Solicitações. Revise as mudanças de arquitetura antes de aceitá-las.
- Releases -- visíveis na seção Releases e na página Ambientes. Alimentam suas métricas DORA.
- Resultados da sincronização -- refletidos imediatamente no seu modelo C4.
Consulte Regras de Conformidade para mais detalhes sobre o painel de conformidade.
Archyl Auto-hospedado
Se você executa o Archyl on-premise, defina a entrada api-url de qualquer action para apontar para a sua instância:
- uses: archyl-com/actions/conformance-check@v1
with:
api-key: ${{ secrets.ARCHYL_API_KEY }}
organization-id: ${{ vars.ARCHYL_ORG_ID }}
project-id: ${{ vars.ARCHYL_PROJECT_ID }}
api-url: "https://archyl.internal.company.com"
O padrão é https://api.archyl.com para todas as actions.