-
Problemas do GitHub Actions
- Recentemente, foi gasto muito tempo reescrevendo scripts de CI com GitHub Actions. Antes era usado o Earthly, mas como foi descontinuado, houve um retorno ao GitHub Actions.
- CI é complexo e inclui fila de merge, vários runners, builds em Rust, imagens Docker, testes de integração etc. Cada merge de PR consome muito tempo de CI.
- Como boa prática de software, todos os testes devem passar, erros triviais devem ser corrigidos automaticamente e os artefatos testados devem ser idênticos aos da release. O GitHub Actions permite isso, mas a configuração é complexa e inconsistente.
-
Verificações de status e fila de merge
- A fila de merge do GitHub executa o CI depois de fazer rebase do PR na branch principal. Porém, é preciso rodar o CI tanto antes quanto depois de entrar na fila, e configurar isso é difícil.
- A solução é definir o mesmo nome de job nas duas etapas. Assim, ambas precisam passar.
-
Problemas de segurança
- Recentemente, uma GitHub Action popular foi comprometida. Como resposta, recomendou-se fixar dependências por hash, mas a maioria dos usuários não faz isso.
- O modelo de segurança do GitHub é complexo e difícil de entender. É possível definir as permissões padrão do
GITHUB_TOKEN, mas não é claro como remover permissões.
- As permissões do workflow não dependem da action em si, e elevar permissões dentro do código parece algo estranho.
-
A combinação de Docker e GitHub Actions
- No GitHub Actions é possível executar tarefas dentro de contêineres, mas isso causa problemas como permissões de arquivos e mudança da localização do diretório
$HOME.
- O campo de contêiner tem muitas limitações, o que impede sobrescrever o entrypoint ou executar apenas algumas etapas dentro do contêiner.
-
Desenvolvimento de workflows em YAML
- Escrever lógica em YAML pode ficar complexo e é fácil cometer erros. Foi usado o IDE RustRover para fazer algumas verificações, mas são necessárias análises estáticas melhores.
- É difícil testar localmente, então é preciso criar um repositório equivalente e repetir commits e pushes até o CI funcionar.
- Os workflows são mantidos pequenos e os artefatos são enviados para poderem ser reutilizados em outros workflows. Porém, é necessário um token para baixar os artefatos.
-
Conclusão
- O tempo de merge caiu bastante com os novos scripts de CI, mas o processo de configuração é complexo e o debugging é difícil. É necessária inovação.
1 comentários
Opiniões do Hacker News
Há quem diga que o GitLab é melhor, mas o GitLab também tem problemas de outro tipo
É interessante como o GitHub Actions e o DevOps são amplamente criticados
Usei GitLab e depois mudei para o GitHub, mas fiquei decepcionado
O pior é ter um loop de feedback de 30–60 segundos
Não quero que o CI modifique o código automaticamente
É decepcionante que a evolução do GitHub Actions pareça ter parado
O GitHub Actions incentiva o mau uso de contêineres como scripts de instalação
Escolher a ferramenta certa é importante
Por causa dos problemas de segurança do GitHub Action, é preciso fixar dependências usando hashes
O GitHub Actions tem muitos problemas