Documentação sobre introdução e funcionamento do GitHub Actions
Anotações feitas de forma independente e amadora, informações mais completas e precisas encontram-se no link da documentação.
- O que é GitHub Actions
- Como funciona o CI/CD
- O que é um fluxo de trabalho
- Introdução ao YAML
- Montagem dos fluxos de trabalho
GitHub Actins é uma plataforma de integração contínua (CI - Continuous Integration)
e entrega contínua (CD - Continuous Delivery) entre o git e o seu repositório.
Ele permite, automatizar compilação, testar e montar pipelines de implantação. através
de fluxos de trabalhos
A integração/entrega contínua da plataforma do GitHub é uma rotina configurada pelo desenvolvedor
ativada quando captura um evento como um pull request,push ou até merge.
O fluxo de trabalho é um arquivo de configuração YAML file.yml ou file.yaml localizado no diretório .github/workflows/.
Nele conterá as rotinas executadas no Actions:
- Cada fluxo de trabalho possuirá um ou mais trabalhos (jobs);
- Cada trabalho possuirá uma série de taréfas a serem executadas, sendo elas, inclusão de fluxos pré-montados ou comandos bash;
- Os trabalhos podem serexecutados de forma sequencial ou paralela;
- Cada trabalho terá sua instancia rodada em uma máquina virtual ou container a parte.
YAML é um formato de serialização. YAML é um arquivo de texto formatado para estruturar dados de forma humanamente legível, embora também possa ser considerado uma linguagem de marcação rápida.
Seus blocos são definidos por identação, assim como em [Python]. Além disso, suas tabublações são compostas de espaços em branco e não o caractere 'TAB' em si.
Os membros das listas são encabeçados por traços -, ou seja, seu primeiro elemento deve conter um traço em seu inicio e os membros em cada linha.
- name:
element1: value 1
elementn: 'value n'
...
- key2:
...Ou entre colchetes e separados por ,
name: [ value1, value 2, 'value 3' ]Os vetores associativos se representam usando os dois pontos
:seguido por um espaço. No seguinte formato (Chave: Valor)
Seus comentários são formados com #
# This is a commentOs fluxos de trabalho podem começar adicionando um nome para aquele arquivo de configuração [opcional]:
name: 'My First Workflow Script'A captura de evento é relacionada ao acionamento do action quando o GitHub capturar uma atividade especificada.
Ela começa com a palavra-chave on, com a lista dos eventos requeridos:
name: 'My First Workflow Script'
on: [ push, pull_request, dispatch_workflow ]
workflow_dispatché uma flag que é relacionada ao acionamento manual do fluxo de trabalho- Se você quiser adicionar uma configuração específica à esses eventos (como filtrar uma branch específica por exemplo), você deve utilizar um modo diferente de criar essa lista de "Hooks"
name: 'My First Workflow Script'
on:
push:
pull_request:
branches:
main:
develop:
dispatch_workflow:
# Se você não possui configurações especificas
# para a sub-lista "branches", você pode encurta-la dessa forma
on:
push:
pull_request:
branches: [ main, develop ]
dispatch_workflow:As Rotinas de execução "Trabalhos", começam com a palavra-chave job, e então, todo sub-item dentro dessa palavra equivalerá a um trabalho próprio.
Os trabalhos não podem ter nomes repetidos
name: 'My First Workflow Script'
on:
push:
pull_request:
branches: [ main, develop ]
dispatch_workflow:
jobs:
job-1:
...
job-2:
...
job-n:
...
.
.
.Como dito antes, cada Trabalho irá rodar em sua própria máquina virtual/container zerado.
Cada rotina deve conter como requisito a sua VM/Container a se rodar usando a palavra-chave runs-on e a palavra-chave steps que irá iniciar os passos, os comandos de execução da rotina.
sua syntax segue dessa forma:
name: 'My First Workflow Script'
on:
push:
pull_request:
branches: [ main, develop ]
dispatch_workflow:
jobs:
job-1:
runs-on: ubuntu-latest
steps:
- run: echo job 1
job-2:
runs-on: macos-latest
steps:
- run: echo "job 2"
job-n:
runs-on: ubuntu-latest
steps:
- run: 'echo job 3'É possível atribuir configurações as palavras-chave, você pode encontrar essas possiveis alterações na documentação.
name: 'My First Workflow Script'
on:
push:
pull_request:
branches: [ main, develop ]
dispatch_workflow:
jobs:
job-1:
name: 'Job 1 Title'
runs-on: ubuntu-latest
steps:
- name: 'Running first task'
run: echo job 1
job-2:
name: 'Job 2 Title'
runs-on: macos-latest
steps:
- name: 'Running inline command'
run: echo "job 2"
- name: 'Running multi-line command'
run: |
echo "This is a multi-line command"
ls -al
if [ -f "Makefile" ]; then { make; } fi
job-n:
runs-on: ubuntu-latest
steps:
- name: 'Running first task'
run: 'echo job 3'
- name: 'Running second task'
run: 'echo "Hello" && echo "$USER" ; cat $(ls)'Veja explicações mais detalhadas sobre o fluxo de trabalho do GitHub Actions na página de documentação.
Vá para Página de documentação.
Author: Thiago Firmino dos S. (Thfirmin)
Institution: 42 | Rio
Source: Markdown
This repository's under MIT license, read more about here.
Keep Swimming!