Skip to main content

GitHub Actions

GitHub Acitions

Sendo um Github hoje o principal repositório de código é extrema importância conhecer melhor seus recursos.

Github Actions é um serviço de automação de workflow que permite que você automatize todos os tipos de processos e ações relacionados ao repositório.

Vale lembrar que conhecimento em git é necessário para criar pipelines mais elaboradas.

Provavelmente você já deve ter uma conta ano GitHub, senão tiver crie uma gratuitamente.

Conceitos Iniciais

Usamos a linguagem declarativa yaml para expressar o que queremos fazer. Esses arquivos ficam dentro do próprio repositório que criamos dentro da pasta .github/workflows.

Temos 3 blocos principais em um arquivo yaml que devemos entender.

  • Workflows serve para incluir os jobs.
  • jobs São agrupamento de steps. Os jobs serão executados em ordem que foram especificados dentro de um workflow ou em paralelo caso não tenha dependencia entre eles.
  • stepssão a menor e representado um passo de um job e são executados sequencialmente. Um job de build poderia ter vários steps como:
    • clonar o repo
    • baixar dependencias
    • compilar

Cada arquivo yml será um workflow e podemos ter quantos forem necessários. Workflows são os nosso processos automatizados quando algum evento que desejamos rastrear acontece no repositório. No mesmo arquivo yml do workflow configuramos quando deve ou não ser disparado através das triggers e events.

Um evento pode ser manual ou automático, quando um commit acontece por exemplo.

alt text

Cada job é um runner, ou seja, o ambiente de execução para os steps. Neste ambiente de execução temos o sistema operacional definido, itens instalados no sistema para que possa executar os steps. Essas definições são colocada dentro de cada bloco de job. O actions oferece suporte a Linux, Mac e windows, mas também é possível configurar seus próprios runners. Um job deve ter pelo menos um step.

Dentro de um workflow podemos definir muitos jobs que podem ou não serem executados se uma condição for definida.

São nas steps de cada job que realmente acontecem os comandos. Geralmente podemos ter um shell script para definir o que deve ser feito ou actions que seriam tasks predefinidas que veremos mais pra frente.

Steps não podem ser executados em paralelo como os jobs, mas podem sofrer condições.

alt text

Preço

Actions são gratuítos em repositós públicos. Em repositórios privados é restringido uma quantidade finita de execuções mensais tendo que pagar pelo excedente.

Configura como funciona a cobrança do actions.

A base de calculo de minutos são para ambiente Linux. Utilizar um ambiente Windows custa 2 vezes mais tempo que um ambiente linux e no mac custa 10 vezes mais.

Obviamente que se estamos utilizando máquinas para rodar nossos jobs, quanto mais recurso precisamos maior o preço. É a vida.

Podemos ter máquinas próprias linkadas ao github actions afim de fornecer o ambiente e evitar pagar esses recursos. Uma boa idéia são containers dentro de um kubernetes ou até mesmo containers na sua própria máquina se o projeto for só seu, mas este segundo caso é raro acontecer, pois se o projeto é pequeno os limites são suficientes.