O que esperar desta apresentação ● Visão geral sobre GitHub Actions ● Introdução ao Minicli ● Visão geral da aplicação demo ● Transformando a aplicação demo em uma GitHub Action ● Espaço para perguntas
GitHub Actions: Visão Geral ● Recurso oferecido pelo GitHub que permite a criação de pipelines automatizadas (workflows) ● Podem ser engatilhadas por eventos, mas que também podem rodar em agendamento ● Popular para CI/CD ● Repositórios open source têm acesso gratuito ao recurso ● O GitHub Marketplace oferece uma vasta coleção de Actions prontas para uso
GitHub Actions: Visão Geral ● Casos de uso comuns: rodar testes ao fazer merge / PR etc ● Caso de uso menos comum: scripts / containers rodando em agendamento
Actions ● Unidades de execução que podem ser combinadas em um workflow ● Ficam em um repositório dedicado com um arquivo action.yml que as define ● Podemos combinar Actions do Marketplace com as nossas próprias Actions customizadas ● Precisam ser "empacotadas" em uma imagem OCI (Docker)
Workflows ● Definido em um arquivo YAML, um repositório pode ter vários ● Um processo configurável que pode executar um ou mais "jobs" ● Cada job pode ter múltiplos "steps" ● Cada step pode executar uma Action ou um shell script ● Steps são executados em ordem e compartilham dados entre si ● Jobs rodam em paralelo por padrão
Triggers (Gatilhos) ● A execução de um workflow pode ser engatilhada por eventos (mais comum para CI/CD) ● Também é possível executar workflows em agendamento ● Ao rodar em agendamento, o intervalo de execução mínimo é de 5 minutos
Action Secrets ● Variáveis de ambiente encriptadas que só podem ser acessadas por GitHub Actions ● Podem ser configuradas por repositório ou por "environments" ● Ideais para guardar chaves de API e outros dados sigilosos
Minicli: Visão Geral ● Microframework para aplicações PHP em linha de comando ● Arquitetura simplificada ● Comandos podem ser definidos como callback ou controllers ● Zero dependências (exceto DEV) ● Ideal para pequenos bots, workers, scripts que rodam em cron
Criando uma nova App $ composer create-project minicli/application myApp $ composer require minicli/minicli Aplicação estruturada com comandos e subcomandos: Aplicação mínima, ou para incluir em projeto existente:
Preparação 1. Qual será o gatilho desta Action? 2. Preciso combinar essa Action com outras? 3. Vou precisar de Action Secrets ou variáveis de ambiente para configurar minha Action? 4. Se minha Action gera output de algum conteúdo, para onde vai?
Referências / Links Úteis ● Video Playlist (pt-BR): Criando uma GitHub Action em PHP com Minicli ● Demo: ImportDevTo Action ● Tutorial (Eng): How to Create a GitHub Action to Import Posts from DEV to a Repository you Own ● GitHub Actions docs: https://docs.github.com/en/actions ● Minicli docs: https://docs.minicli.dev ● Outras Actions criadas com Minicli ○ Dynacover: https://github.com/erikaheidi/dynacover-actions ○ Update CONTRIBUTORS: https://github.com/minicli/action-contributors