Gerenciando e aproveitando componentes reutilizáveis no GitHub Actions
Na unidade anterior, você explorou como estruturar políticas e modelos do GitHub Actions nos níveis corporativo e organizacional. Nesta unidade, você se aprofundará em como gerenciar e manter componentes reutilizáveis, como fluxos de trabalho, ações personalizadas e scripts de automação, em vários repositórios.
Gerenciando e aproveitando componentes reutilizáveis no GitHub Actions
Componentes reutilizáveis no GitHub Actions referem-se a fluxos de trabalho, ações e scripts que são usados em vários repositórios para simplificar o desenvolvimento e a automação. Eles ajudam a padronizar pipelines de CI/CD, melhorar a manutenção e reduzir os esforços de configuração redundantes.
Tipos de componentes reutilizáveis
- Fluxos de trabalho reutilizáveis
- Definido uma vez e referenciado em vários repositórios.
- Exemplo: um fluxo de trabalho de build e implantação padrão para todos os projetos em uma empresa.
- Ações personalizadas do GitHub
- Criado para tarefas repetidas (por exemplo, configurando dependências, executando verificações de segurança).
- Exemplo: Uma ação em toda a empresa para impor o linting de código.
- Scripts Compartilhados
- Scripts Bash, PowerShell ou Python usados em fluxos de trabalho para automatizar tarefas.
- Exemplo: um script para gerar relatórios de conformidade para repositórios de código.
Criando repositórios centralizados para componentes reutilizáveis
Um repositório bem estruturado para fluxos de trabalho e ações reutilizáveis garante fácil acesso e padronização. Considere a criação do seguinte:
| Tipo do repositório | Finalidade | Convenção de nomenclatura de exemplo |
|---|---|---|
| Repositório de Ações | Armazena ações personalizadas do GitHub usadas em projetos. | org-actions-repo |
| Repositório de fluxos de trabalho | Contém fluxos de trabalho reutilizáveis para automação de CI/CD. | org-reusable-workflows |
| Repositório de scripts | Mantém scripts reutilizáveis para automação. | org-scripts-library |
Estrutura de exemplo para um repositório de ações:
org-actions-repo/
│── setup-node/ # Custom GitHub Action for Node.js setup
│ ├── action.yml
│ ├── Dockerfile
│ ├── README.md
│── security-scan/ # Custom GitHub Action for security scanning
│ ├── action.yml
│ ├── scan.py
│ ├── README.md
│── LICENSE
│── README.md
Convenções de nomenclatura para arquivos e pastas
Para garantir a manutenção e a facilidade de uso, siga as convenções de nomenclatura consistentes.
Nomenclatura do repositório
- Use nomes descritivos e consistentes para repositórios:
org-actions-repoorg-reusable-workflowsmy-random-actions
- Prefira nomes hifenizados para maior clareza:
ci-pipelineCIPipeline
Nomenclatura de fluxo de trabalho e ação
Siga um formato estruturado:
[scope]-[purpose]- Exemplos:
-
ci-test.yml→ para testes de integração contínua -
deploy-app.ymlFluxo de trabalho de implantação -
build-container.yml→ cria contêineres do Docker
-
Use diretórios versionados para manutenção a longo prazo:
reusable-workflows/ ├── v1/ │ ├── ci-test.yml │ ├── deploy-app.yml ├── v2/ │ ├── ci-test.yml │ ├── deploy-app.yml
Nomenclatura de ação
Usar PascalCase ou kebab-case para nomes de ação:
Run-Linterrun-linterRunlinter
Forneça descrições claras em
action.yml:name: "Run Linter" description: "A reusable action to run lint checks on JavaScript projects."
Planos para manutenção contínua de componentes reutilizáveis
1. Controle de versão e gerenciamento de dependência
-
Marcar versões usando lançamentos do GitHub (
v1.0.0,v2.0.0). -
Evite usar
latesttags em fluxos de trabalho para evitar mudanças inesperadas que causem interrupções. -
Usar o controle de versão semântico:
-
Atualizações de patch:
v1.0.1→ Corrige bugs, atualizações secundárias. -
Atualizações secundárias:
v1.1.0→ novos recursos, compatíveis com versões anteriores. -
Atualizações principais:
v2.0.0→ Alterações interruptivas.
-
Atualizações de patch:
Referenciando versões em fluxos de trabalho
Em vez de:
uses: org-actions-repo/setup-node@latest
Use uma versão estável:
uses: org-actions-repo/setup-node@v1.2.0
2. Automatizando atualizações e manutenção
- Implemente uma ação do GitHub para testar automaticamente fluxos de trabalho e ações antes de mesclar.
- Use o Dependabot para detectar dependências desatualizadas em ações reutilizáveis.
3. Documentando e fornecendo diretrizes de uso
- Cada repositório deve incluir:
-
README.md explicando:
- Finalidade do componente.
- Como usar.
- Exemplo de fluxos de trabalho.
- CHANGELOG.md para acompanhar as atualizações.
- CONTRIBUTING.md detalha as práticas recomendadas para modificações.
-
README.md explicando:
4. Controle de segurança e acesso
- Restrinja o acesso de gravação a repositórios de ações.
- Exigir revisões de código e CODEOWNERS do GitHub para gerenciar alterações.
- Use Escaneamento de segredos do GitHub para evitar a codificação de segredos em fluxos de trabalho.
5. Estratégia de monitoramento e descontinuação
- Configure problemas e discussões do GitHub para comentários.
-
Plano de substituição:
- Notifique os usuários antes de remover versões mais antigas.
- Oferecer guias de migração para alterações importantes.
Como distribuir ações para uma empresa
O GitHub Actions habilita a automação de fluxos de trabalho, como teste, implantação e verificação de segurança. Em uma empresa, a distribuição de ações com eficiência permite que várias equipes reutilizem tarefas comuns de automação em vez de reinventar os mesmos fluxos de trabalho.
Há três métodos principais para distribuir o GitHub Actions em uma empresa:
- Ações de publicação no GitHub Marketplace (para distribuição pública).
- Ações de hospedagem em repositórios de Organization-Owned (para distribuição corporativa interna).
- Usando pacotes do GitHub para distribuir ações em contêineres (para distribuição mais controlada).
Práticas recomendadas para distribuir ações em uma empresa
| Melhor prática | Recomendação |
|---|---|
| Padronização | Mantenha um único repositório para ações reutilizáveis com documentação clara. |
| Controle de versão | Use controle de versão semântico (v1.0.0, v2.0.0) e evite latest para estabilidade. |
| Revisões de segurança | Exigir revisões de código e verificações de segurança automatizadas antes de publicar ações. |
| Controle de acesso | Restrinja quem pode modificar e usar ações internas por meio de configurações de repositório. |
| Atualizações regulares | Mantenha um registro de alterações e notifique os usuários sobre as atualizações para evitar mudanças disruptivas. |
Comparação de métodos de distribuição
| Método | Caso de uso | Controle de acesso | Considerações sobre segurança |
|---|---|---|---|
| GitHub Marketplace | Distribuição pública | Sem restrições | Acessível publicamente, deve ser seguro |
| Repositórios de propriedade da organização | Uso interno da empresa | Equipes e funções de repositório | Requer um controle de permissão estrito |
| Pacotes do GitHub (ações contêinerizadas) | Uso interno seguro | Autenticação necessária | As imagens devem ser protegidas contra adulteração |
Escolher o método correto depende de requisitos de negócios, necessidades de segurança e considerações de escalabilidade. As empresas devem implementar uma abordagem estruturada para distribuir o GitHub Actions, garantindo eficiência, segurança e conformidade em seus fluxos de trabalho de DevOps.