Lab de GitHub Actions: Primeiros Passos em Automação CI/CD
👉 Veja meu curso da Udemy: Curso DevOps na Prática
Bem-vindo(a) ao seu laboratório de GitHub Actions! Aqui você dará os primeiros passos para automatizar tarefas de desenvolvimento e implantação, transformando o "medo do terminal" em domínio da automação.
Lab-01: Overview do GitHub Actions
O GitHub Actions é uma plataforma de Integração Contínua (CI) e Entrega Contínua (CD) que permite automatizar o seu fluxo de trabalho de desenvolvimento diretamente no GitHub.
Com ele, você pode:
- Construir e testar seu código automaticamente.
- Implantar suas aplicações em diferentes ambientes.
- Automatizar tarefas de rotina, como linting, formatação de código, etc.
- Tudo isso a partir de arquivos YAML configurados no seu repositório.
Pense no GitHub Actions como um "robô" que executa tarefas por você, a cada vez que uma condição que você define é atendida (como um push de código ou a abertura de um Pull Request).
Lab-02: Primeiro Workflow
Neste lab, vamos criar nosso primeiro workflow bem simples para entender a estrutura básica de um arquivo YAML de GitHub Actions.
-
Crie um Repositório no GitHub:
- Vá para o seu GitHub e crie um novo repositório com o nome
mdc-githubactions. Você pode deixá-lo público ou privado.
- Vá para o seu GitHub e crie um novo repositório com o nome
-
Abra o Repositório no seu Ambiente Local:
- Clone o repositório para o seu computador local usando o Git:
git clone https://github.com/SEU_USUARIO/mdc-githubactions.git
cd mdc-githubactions
- Clone o repositório para o seu computador local usando o Git:
-
Crie o Diretório do Workflow:
- Na raiz do seu repositório local, crie a estrutura de diretórios necessária para os workflows. É onde o GitHub Actions espera encontrar seus arquivos de configuração.
mkdir -p .github/workflows
- Na raiz do seu repositório local, crie a estrutura de diretórios necessária para os workflows. É onde o GitHub Actions espera encontrar seus arquivos de configuração.
-
Crie e Edite o Arquivo YAML do Workflow:
-
Dentro do diretório recém-criado (
.github/workflows/), crie um arquivo YAML com o nomemdc-workflow.yml.touch .github/workflows/mdc-workflow.yml -
Abra o arquivo
mdc-workflow.ymlem um editor de texto (VS Code, Sublime Text, etc.) e cole o conteúdo abaixo:name: Mdc Workflow
on:
push:
branches:
- main # Ou 'master', dependendo do nome da sua branch principal
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout do Código
uses: actions/checkout@v2 # Action para clonar o repositório
- name: Mostrar Mensagem
run: echo "Olá, MDC, GitHub Actions!" # Comando a ser executado
-
-
Entendendo a Estrutura do Workflow:
-
name: Define o nome do workflow. Este é um rótulo que aparecerá na interface do GitHub Actions para identificar o workflow (ex: "Mdc Workflow"). -
on: Define quando o workflow será acionado.push: Indica que o evento é umpush(envio) de código.branches: Especifica as branches que devem acionar o workflow. Nesse caso, o workflow será acionado apenas quando houver umpushna branchmain(oumaster, se for o caso do seu repositório).
-
jobs: Define osjobs(tarefas) a serem executados no workflow. Um workflow pode ter um ou vários jobs.build: É o nome do seu primeiro (e único, por enquanto) job. Pode ser um nome descritivo (ex:test,deploy).runs-on: Especifica o sistema operacional em que o job será executado. Neste caso, o job será executado em uma máquina com sistema operacional Ubuntu (ubuntu-latest).
-
steps: Define as etapas a serem executadas dentro de umjob. Um job pode ter um ou vários steps, que são executados em sequência.- name: Checkout do Código: Define o nome da primeira etapa.uses: actions/checkout@v2: Especifica uma ação pré-construída que será utilizada na etapa. Aactions/checkout@v2é uma ação comum que clona o código do seu repositório para o ambiente de execução do workflow.- name: Mostrar Mensagem: Define o nome da segunda etapa.run: echo "Olá, MDC, GitHub Actions!": Especifica o comando ou script a ser executado na etapa. Neste caso, o comandoechoé usado para mostrar a mensagem no console de saída do workflow.
-
-
Faça o Commit e Push do Código:
- Salve o arquivo
mdc-workflow.yml. - Adicione os arquivos ao Git, faça o commit e envie para o GitHub:
git add .
git commit -m "feat: Adiciona primeiro workflow de GitHub Actions"
git push origin main # Ou 'master'
- Salve o arquivo
-
Verifique a Execução no GitHub:
- Após o
push, vá para o seu repositório no GitHub. Clique na aba "Actions". - Você verá o seu workflow (
Mdc Workflow) sendo executado (ou já concluído com sucesso). Clique nele para ver os detalhes, incluindo a saída do comandoecho.
- Após o
Lab-03: Múltiplos Stages (Jobs) e Dependências
Neste lab, vamos expandir nosso workflow para simular um processo de CI/CD mais complexo, com múltiplos "estágios" ou "jobs" que dependem uns dos outros. Isso é fundamental para orquestrar fluxos de trabalho como build -> deploy-dev -> deploy-qa -> deploy-prod.
-
Edite o Arquivo YAML do Workflow:
-
Abra novamente o arquivo
.github/workflows/mdc-workflow.ymlno seu editor. -
Substitua todo o conteúdo atual pelo YAML abaixo:
name: Mdc Workflow
on:
push:
branches:
- main # Ou 'master'
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout do Código
uses: actions/checkout@v2
dev:
needs: build # Este job SÓ roda depois que 'build' terminar com sucesso
runs-on: ubuntu-latest
steps:
- name: Fase de Desenvolvimento
run: echo "Executando deploy de DEV"
qa:
needs: build # Este job TAMBÉM SÓ roda depois que 'build' terminar com sucesso
runs-on: ubuntu-latest
steps:
- name: Fase de Qualidade
run: echo "Executando deploy de QA"
homologacao:
needs:
- dev # Este job SÓ roda depois que 'dev' e 'qa' terminarem com sucesso
- qa
runs-on: ubuntu-latest
steps:
- name: Fase de Homologação
run: echo "Executando deploy de HML"
producao:
needs: homologacao # Este job SÓ roda depois que 'homologacao' terminar com sucesso
runs-on: ubuntu-latest
steps:
- name: Fase de Produção
run: echo "Executando deploy de PRD"
-
-
Entendendo as Novidades:
- Múltiplos
jobs: Agora temos cinco jobs:build,dev,qa,homologacaoeproducao. needs: Esta é a palavra-chave mais importante aqui. Ela define as dependências entre os jobs.deveqasó serão executados depois que o jobbuildfor concluído com sucesso. Eles podem rodar em paralelo entre si, pois ambos dependem apenas debuild.homologacaosó será executado depois que ambos os jobsdeveqaforem concluídos com sucesso.producaosó será executado depois que o jobhomologacaofor concluído com sucesso.
- Múltiplos
-
Faça o Commit e Push do Código Novamente:
- Salve o arquivo
mdc-workflow.yml. - Adicione os arquivos ao Git, faça o commit e envie para o GitHub:
git add .
git commit -m "feat: Adiciona multiplos stages com dependencias"
git push origin main # Ou 'master'
- Salve o arquivo
-
Verifique a Orquestração no GitHub:
- Volte para a aba "Actions" no seu repositório do GitHub.
- Você verá a nova execução do workflow. Clique nela.
- Observe o gráfico visual que o GitHub Actions mostra. Ele ilustra claramente a ordem de execução e as dependências entre os jobs, mostrando como
deveqarodam em paralelo apósbuild, e comohomologacaoespera por ambos antes deproducaoser acionado.
Com este lab, você não apenas criou seu primeiro workflow, mas também aprendeu a orquestrar múltiplas tarefas em um fluxo sequencial e paralelo. Isso é a base para construir pipelines de CI/CD robustos!