O documento introduz o Github Actions, que facilita a automação de workflows de software para integração e entrega contínua através de estratégias de CI/CD. Ele descreve os tipos de máquinas (hospedadas pelo Github ou auto-hospedadas), componentes de um workflow (jobs e actions) e gatilhos de eventos para disparar workflows.
3. Github Actions
O GitHub Actions facilita a automação de
todos os workflows de software para CI e CD.
Com isso você pode testar e implantar código
direto do GitHub através de estratégias de CI
e/ou CD.
4.
5. Máquinas
● GitHub-hosted runners
● Self-hosted runners
GitHub-hosted runners oferecem um jeito rápido e simples para rodar seus
workflows, enquanto self-hosted runners são um jeito altamente
configurável de rodar seus workflows no seu próprio ambiente.
6. Máquinas
GitHub-hosted runners:
● Receba atualizações automáticas para o sistema operacional, pacotes e ferramentas pré-
instalados e o app a ser hospedado.
● São gerenciados e mantidos pelo GitHub.
● Fornece uma nova execução de instância para cada workflow.
● Use minutos grátis em seu plano GitHub, com taxas por minuto aplicadas após ultrapassar os
minutos grátis.
Self-hosted runners:
● Receba atualizações automáticas apenas para o aplicativo hospedado. Você é responsável por
atualizar o sistema operacional e todos os outros softwares.
● Pode usar serviços em nuvem ou máquinas locais pelos quais você já pagou.
● São personalizáveis para seu hardware, sistema operacional, software e requisitos de segurança.
● Não precisa ter uma nova execução de instância para cada workflow.
● São gratuitos para usar com o GitHub Actions, mas você é responsável pelo custo de manutenção
de suas máquinas runner.
7. Github hosted runners
Virtual environment YAML workflow label
Windows Server 2019 windows-latest or windows-2019
Windows Server 2016 windows-2016
Ubuntu 20.04 ubuntu-latest or ubuntu-20.04
Ubuntu 18.04 ubuntu-18.04
macOS Big Sur 11 macos-11
macOS Catalina 10.15 macos-latest or macos-10.15
8. Workflow
● Um workflow é um processo configurável que pode ter
um ou mais jobs para executar alguma automação
● Você pode configurar seus workflows com arquivos *.yml
e seguindo o padrão YAML na pasta .github/workflows
do seu repositório de github.
● Você define no workflow os eventos que vão startar sua
execução.(push, pull reques, tag)
10. Job
● Define as tarefas (steps) para a execução do workflow
● Um workflow pode ter um ou mais jobs
● Jobs podem ser paralelos ou sequenciais
● Cada job no Github Hosted Runners é executado em uma nova
instância de uma máquina virtual
● runs-on: macos-latest /** windows-latest , ubuntu-
latest, etc */
11. Action
● Uma action é uma tarefa a ser executada dentro do
workflow (exemplos: baixar o código do github, executar
um comando de build, etc)
● Existem 2 tipos de actions: local actions ou actions
publicadas para a comunidade
Exemplos: Local action
https://github.com/jeffeb3/hello-world-composite-run-steps-action
Exemplo action publicada para a comunidade
https://github.com/actions/cache
● Para usar uma action você precisa especificar o local da
action no seu step usando a propriedade abaixo:
- uses: actions/checkout@v2 (action da comunidade)
- uses: ./.github/actions/hello (action local)
12. Secrets e Envs
- name: Run pr check
env:
GITHUB_TOKEN: ${{ secrets.REPO_TOKEN }}
RENAMED_VAR: ${{ env.ANOTHER_ENV_VAR }}
GITHUB_TOKEN_STATIC: 'borracha'
STATIC_ENV_VAR: 'Mona the Octocat'