O GitHub Actions, uma plataforma integrada ao GitHub, permite que os desenvolvedores automatizem tarefas como testes, builds e implantações, impulsionando assim a velocidade e a confiabilidade do ciclo de desenvolvimento.
No artigo de hoje, abordaremos o que é GitHub Actions, detalhes de seu funcionamento, além de dicas para uso racional e eficiente da ferramenta.
O que é GitHub Actions?
É uma ferramenta open source (de código aberto) que permite automatizar, personalizar e executar fluxos de trabalho de desenvolvimento de software diretamente no repositório Github.
É possível usar, criar e compartilhar ações para realizar qualquer trabalho desejado, inclusive CI/CD, além de combinar ações em um fluxo de trabalho personalizado.
É permitida a criação de fluxos de trabalho que criam e testam cada pull request em seu repositório, ou implantar pull requests mesclados em produção.
Qual é a diferença entre GitHub Actions e CICD?
GitHub Actions é a ferramenta de automação integrada ao GitHub que pode ser usada para implementar tanto a CI quanto a CD - ambos os conceitos são distintos.
-
CI (Integração Contínua): O processo responsável pela automatização de código de diferentes desenvolvedores em um repositório central. Alterações de código são introduzidas frequentemente e testes automáticos são executados para garantir que o código funcione corretamente.
-
CD (Entrega/Implantação Contínua): Trata-se da automação da entrega de um código funcional para diferentes ambientes (staging, produção, entre outros), geralmente após a fase de CI. O intuito é acelerar o processo de lançamento do software, reduzir o tempo de implantação e garantir que as alterações necessárias sejam entregues de forma segura e confiável.
Para que serve o GitHub Actions?
O GitHub Actions é uma ferramenta do GitHub que auxilia no processo de CI e CD, como já destacado anteriormente. Isso significa que cada evento feito no GitHub, ou seja um push, é aberto o que se chama de issue (pendência que precisa ser resolvida durante o ciclo de vida do software).
Quando o GitHub verificar que essa issue está aberta, você terá um arquivo declarativo que constará que houve um push. Com isso, o arquivo será clonado em seu servidor do GitHub para que seja o feito o que se chama build, isto é, quando o código-fonte se torna um artefato executável; rodagem dos testes da aplicação, entre outros processos, para verificar se está tudo ok com o evento em questão.
Se tudo estiver dentro do esperado, é possível que o desenvolvedor faça um merge (combinação de alterações de código entre diferentes branches, ramificações em português de um projeto, ou intrigar outros processos para que seja feito o deploy da sua aplicação, ou seja, quando ela é colocada no ar.
Como funciona o GitHub Actions?
Basicamente, o GitHub Actions permite a execução de fluxos de trabalho quando outros eventos ocorrem no seu repositório. GitHub fornece máquinas virtuais do Linux, Windows e macOS para a execução dos seus fluxos de trabalho e possui como componentes principais os fluxos de trabalho (workflows), eventos, trabalhos e ações, como detalhamos abaixo.
Workflows (arquivos .yml)
Este é um processo automatizado configurável que executa um ou mais trabalhos. Tais fluxos de trabalho, ou workflows, são definidos por um arquivo .yml verificado em seu repositório e será executado quando acionado por um evento no repositório, ou podem ser acionados manualmente de acordo com um cronograma definido.
Os fluxos de trabalhos são definidos no diretório .github/workflows de um repositório, que pode conter vários fluxos de trabalho, sendo que cada um pode executar um tipo de tarefa diferente, tais como:
- como criar e testar pull requests;
- como implantar seu aplicativo sempre que uma nova versão for criada;
- como adicionar um rótulo sempre que um novo problema for aberto.
Steps
Também chamado de eventos, os steps são uma atividade específica em um repositório que dispara a execução de um fluxo de trabalho. Ademais, é possível acionar um fluxo de trabalho para execução de acordo com um agendamento ao postar em uma API Rest ou de forma manual.
Jobs
Job, ou trabalho, é um conjunto de etapas em um fluxo de trabalho executadas no mesmo executor. Cada etapa é um roteiro de shell (programa que permite o usuário interagir com o sistema operacional), ou uma ação que será executada. As etapas são executadas em ordem e uma depende da outra. Quando uma etapa é concluída em um mesmo executor, você pode compartilhar dados de um passo para outro.
É permitido que você configure as dependências de um trabalho com outros trabalhos, apesar de, por padrão, os trabalhos não possuírem dependências e serem executados em paralelo. Quando um trabalho depende de outro, ele aguarda a conclusão de um trabalho dependente antes de ser executado.
Um exemplo são os trabalhos de build para diferentes arquiteturas sem quaisquer dependências de trabalho e um trabalho de empacotamento que dependa dessas builds. Os trabalhos de build são executados em paralelo e, quando concluídos com êxito, o trabalho de empacotamento é executado.
Actions
Ação é um aplicativo personalizado para a plataforma GitHub Actions que executa uma tarefa difícil, mas repetida frequentemente. Uma ação pode ser usada para reduzir a quantidade de código repetitivo que você escreve nos arquivos de fluxo de trabalho. Ela também pode extrair seu repositório Git do GitHub, configurar a cadeia de ferramentas correta ou configurar a autenticação para seu provedor de nuvem.
Executores
São servidores que executa seus fluxos de trabalho quando são disparados. Cada executor pode realizar somente um único trabalho por vez. Alguns executores fornecidos pelo GitHub são Ubuntu Linux, Microsoft Windows e MacOS para executar seus fluxos de trabalho. Cada execução de fluxo de trabalho é executada em uma máquina virtual nova e recém-provisionada.
Mas vale destacar que GitHub também oferece executores avançados, disponíveis em configurações maiores.
Quais são as vantagens do uso do GitHub Actions?
Várias. Em síntese, a integração ao GitHub, versionamento de código ao projeto, suporte a diversos sistemas operacionais e linguagens, entre outras, que veremos a seguir.
Totalmente integrado ao GitHub
É isso mesmo. Por conta da integração do GitHub Actions ao GitHub, torna-se viável a configuração de fluxos de trabalho e usar ferramentas existentes, como o GitHub Package Registry, para armazenar e distribuir pacotes. Como os fluxos de trabalho são em YAML, é fácil versionar e gerenciar o código do fluxo de trabalho como parte do código-fonte do projeto.
Boa documentação e comunidade ativa
O GitHub é considerado um canal de aprendizado e colaboração. Desenvolvedores podem explorar projetos, contribuir com códigos abertos e acessar recursos educacionais que ajudam a reforçar habilidades.
Por meio do GitHub Explore, é possível ter acesso a repositórios populares, tendências e sugestões personalizadas, o que facilita a descoberta de novos projetos.
Automação poderosa com código versionado junto com o projeto
Outra vantagem atribuída ao GitHub é a facilidade de versionar e manter seu código versionado junto ao projeto. Isso evita retrabalhos, ajuda o time e mantém histórico das mudanças.
Suporte a diversos sistemas operacionais e linguagens
O GitHub tem como vantagem o suporte a praticamente qualquer sistema operacional, de cloud e linguagens. Isto é, há suporte às grandes plataformas de cloud do mercado (Azure, GCP, AWS, Hashicorp etc.), bem como sistemas operacionais com suas principais distribuições.
Além disso, há o suporte a diversas linguagens de desenvolvimento, como Java, Ruby, Python, Go, Rust, .Net, entre outras.
Gratuito com limites generosos para projetos open source
Um dos grandes benefícios do GitHub Actions é o fato de ele ser open source, ou código aberto, em português.
Apesar de possuir limites de rodagem, vale dizer que o GitHub Actions permite o uso gratuito de até 2000 minutos em workflow, nos repositórios privados, e essa quantidade é ilimitada em repositórios públicos.
No plano gratuito, estão disponíveis 500 MB para armazenamento de pacotes. Para mais detalhes, acesse a política de preços do GitHub.
6 boas práticas para o uso do GitHub Actions
Algumas boas práticas para o uso de GitHub Actions são a organização responsável de workflows, nomeação de steps (passos) com clareza, testes seguros com workflow, entre outros, como veremos a seguir.
Organizar os workflows por responsabilidade
Uma dica é utilizar workflows reutilizáveis, algo que é permitido pelo GitHub Actions atualmente. Vale dizer que várias etapas de workflows se repetem frequentemente nos fluxos de trabalho e implementações duplicadas tornam-se códigos mais difíceis de serem mantidos.
Outras dicas para um uso responsável de workflows são a definição de permissões mínimas para a execução de tarefas e evitar execução paralela de workflows desnecessários.
Usar caching para acelerar builds
O mecanismo de ação de cache do GitHub permite o armazenamento de dependências em cache e as saídas para melhorar o tempo de execução do fluxo de trabalho.
Vale dizer que as caches devem ser utilizadas frequentemente, pois caches que não forem acessadas em sete dias são removidas. Além disso, há o limite do tamanho total do cache de 10 GB por repositório.
Reaproveitamento com workflow_call
Como destacamos, workflows podem ser reutilizáveis, o que ajuda a melhorar o desempenho do seu processo de automação, com fluxos de trabalho mais completos e reutilizáveis.
A chave workflow_call é aquela que permite que você crie fluxos de trabalho reutilizáveis que podem ser chamados por outros fluxos em repositórios diferentes.
Para usá-la, siga os passos abaixo:
- Crie um arquivo de fluxo de trabalho que contenha a chamada;
- Importe a chamada no fluxo de trabalho que precisa do fluxo reutilizável, por meio de uma sintaxe específica;
- Use os inputs e outputs, para intercâmbio de informações entre os fluxos de trabalho.
Nomear e descrever steps de forma clara
Lembramos que step é um composto de um conjunto de comandos autônomos que realizam uma ação. A criação de códigos claros contribui para a criação de fluxos de trabalho de GitHub Actions fáceis de entender, manter e colaborar.
Para isso, algumas recomendações são:
- utilizar frases curtas e concisas que descrevam a ação a ser realizada pela etapa;
- usar palavras-chave que identifiquem a etapa, como “install”, “test”, “build”, “deploy”, entre outras;
- caso seja uma etapa que indique a execução de um roteiro ou com comando, usar um nome que indique o script ou comando, como “Executar script de build” ou “Executar comando de deploy”.
Testar workflow com segurança
Para o teste de workflows com segurança, use a ferramenta “act” para simular o ambiente do GitHub Actions localmente. Ademais, é recomendável configurar a proteção por push para identificar e bloquear segredos no seu código antes de antes de serem enviados.
Outra dica é a utilização do comando workflow_dispatch para a execução manual de workflows para testes.
Uso de documentação do GitHub Actions
A documentação do GitHub Actions oferece vários exemplos de fluxos de trabalho que podem servir como base para as suas automações, além de oferecer fluxos pré-definidos para várias tarefas como como publicação de pacotes do Node.js, criação e testes de PowerShell, entre outras.
O GitHub Actions é melhor que o Jenkins?
Em relação às funcionalidades, sim, o GitHub é considerado melhor que o Jenkins. Apesar daquele não possuir tanta escalabilidade se comparado a este, o GitHub Actions é mais fácil de usar, não necessita ser instalado e fornece total controle sobre pipelines de CI/CD.
Tanto o GitHub Actions quanto o Jenkins possuem ferramentas de CI/CD que permitem a automatização do processo de SDLC (Software Development Life Cycle, ciclo de vida de desenvolvimento de software, em português).
Ambas as ferramentas oferecem amplas opções de personalização - o GitHub Actions com o seu marketplace, enquanto o Jenkins tem um ecossistema poderoso de plugins.
Ademais, o GitHub Actions é considerado eficiente para builds simples e rápidas, enquanto processos de CI mais complexos são melhor recebidos pelo Jenkins, de acordo com desenvolvedores.
Simplifique sua gestão de documentos fiscais com a Focus NFe
O processo de emissão da nota fiscal de devolução exige atenção e paciência, afinal são muitos detalhes. Ter acesso a uma ferramenta que otimize e auxilie o setor fiscal faz toda a diferença.
Somos um ecossistema de soluções para a emissão e gestão de documentos fiscais, permitindo que empresas dos mais diversos portes e segmentos ganhem mais tempo para focar no que importa.
Sua empresa possui desenvolvedores, sistema interno e quer otimizar a emissão de notas? Conheça nosso conjunto de APIs para emissão de documentos fiscais!