GitHub Actions é uma plataforma de integração contínua e entrega contínua (CI/CD) que permite automatizar seu pipeline de compilação, teste e implantação. Você pode criar fluxos de trabalho (workflows) que compilam e testam cada pull request no seu repositório, ou implantam pull requests mesclados (merged) em produção.
Neste laboratório, você criará seu primeiro fluxo de trabalho simples. Você aprenderá a estrutura de diretórios padrão exigida pelo GitHub Actions, como definir o nome do fluxo de trabalho, como especificar quais eventos disparam o fluxo de trabalho e como definir trabalhos (jobs) para executar comandos.
Este laboratório baseia-se no repositório que você criou no laboratório anterior. Você clonará o repositório github-actions-demo para o seu ambiente LabEx e adicionará seu primeiro arquivo de fluxo de trabalho a ele.
Crie um novo arquivo YAML chamado hello-world.yml em .github/workflows
Nesta etapa, você fará o clone do repositório que criou no laboratório anterior e criará seu primeiro arquivo de fluxo de trabalho.
Na página do seu repositório GitHub para github-actions-demo, clique no botão verde Code.
Certifique-se de que a aba HTTPS esteja selecionada e copie a URL. Ela deve ser parecida com https://github.com/your-username/github-actions-demo.git.
Abra o terminal no ambiente LabEx. O caminho padrão é ~/project.
Use o comando git clone para baixar o repositório. Substitua your-username pelo seu nome de usuário real do GitHub.
cd ~/project
git clone https://github.com/your-username/github-actions-demo.git
Exemplo de Saída:
Cloning into 'github-actions-demo'...
remote: Enumerating objects: X, done.
remote: Counting objects: 100% (X/X), done.
remote: Total X (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (X/X), done.
Navegue até o repositório clonado:
cd ~/project/github-actions-demo
O diretório .github/workflows já deve existir do laboratório anterior. Verifique se ele existe:
ls -R .github
Crie um novo arquivo chamado hello-world.yml dentro do diretório .github/workflows. Este arquivo conterá a configuração do nosso fluxo de trabalho:
touch .github/workflows/hello-world.yml
Você pode verificar se o arquivo foi criado com sucesso:
ls -R .github
Você deverá ver o diretório workflows contendo tanto main.yml (do laboratório anterior) quanto hello-world.yml.
Adicione a chave 'name' com o valor 'Hello World Workflow' ao arquivo YAML
Nesta etapa, você começará a editar o arquivo YAML para definir seu fluxo de trabalho. O primeiro elemento que geralmente adicionamos é o name (nome) do fluxo de trabalho. Este nome aparecerá na aba Actions (Ações) do repositório do GitHub, facilitando a identificação.
Abra o arquivo hello-world.yml usando o editor WebIDE. Você pode encontrar o arquivo no explorador de arquivos no lado esquerdo, em project/github-actions-demo/.github/workflows/.
Adicione o seguinte conteúdo ao arquivo:
name: Hello World Workflow
Este par chave-valor atribui um nome legível por humanos ao seu fluxo de trabalho.
Após adicionar o conteúdo, salve o arquivo (Ctrl+S ou Cmd+S).
Você pode verificar o conteúdo do arquivo no terminal:
cat .github/workflows/hello-world.yml
Adicione a chave 'on' com o evento 'push' para acionar em pushes
Nesta etapa, você definirá quando o fluxo de trabalho deve ser executado. Isso é feito usando a palavra-chave on. Queremos que este fluxo de trabalho seja executado sempre que o código for enviado (pushed) para o repositório.
Abra novamente o arquivo .github/workflows/hello-world.yml e adicione as seguintes linhas abaixo da chave name:
on: [push]
Seu arquivo agora deve ser assim:
name: Hello World Workflow
on: [push]
A configuração on: [push] instrui o GitHub Actions a acionar este fluxo de trabalho toda vez que um git push for feito para qualquer branch no repositório.
Nota: O GitHub Actions suporta muitos outros eventos de gatilho. Por exemplo:
pull_request: Aciona quando uma pull request é aberta, sincronizada ou fechada
workflow_dispatch: Permite o acionamento manual a partir da aba GitHub Actions
schedule: Executa em um cronograma usando sintaxe cron
release: Aciona quando uma release é publicada
E muitos outros eventos como issues, pull_request_review, etc.
Neste laboratório, usamos on: [push] porque é o gatilho mais simples e comum. Você pode explorar outros tipos de gatilho à medida que avança em sua jornada com o GitHub Actions.
Salve o arquivo após fazer as alterações.
Adicione a seção 'jobs' com um job chamado 'build'
Nesta etapa, você definirá o trabalho real que o fluxo de trabalho (workflow) executará. Uma execução de fluxo de trabalho (workflow run) é composta por um ou mais jobs. Por padrão, os jobs são executados em paralelo.
Adicionaremos uma seção jobs contendo um único job chamado build. Este job será executado em um ambiente Ubuntu e executará um comando simples.
Adicione o seguinte conteúdo ao seu arquivo .github/workflows/hello-world.yml:
runs-on: ubuntu-latest: Especifica o tipo de máquina (runner) onde o job será executado.
steps:: Uma lista de tarefas a serem executadas no job.
run: echo "Hello, World!": Um comando shell a ser executado.
Seu arquivo completo deve agora se parecer com isto:
name: Hello World Workflow
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Say Hello
run: echo "Hello, World!"
Salve o arquivo.
Faça commit e push do arquivo de workflow usando comandos git
Nesta etapa, você fará o commit do novo arquivo de fluxo de trabalho e o enviará (push) para o GitHub. Isso acionará o fluxo de trabalho que você acabou de criar.
Certifique-se de estar no diretório do repositório:
cd ~/project/github-actions-demo
Verifique o status do seu repositório para ver o arquivo não rastreado:
git status
Adicione o novo arquivo à área de staging:
git add .github/workflows/hello-world.yml
Faça o commit das alterações com uma mensagem descritiva:
git commit -m "Add hello world workflow"
Exemplo de Saída:
[main ... ] Add hello world workflow
1 file changed, X insertions(+), X deletions(-)
create mode 100644 .github/workflows/hello-world.yml
Envie as alterações para o repositório remoto no GitHub:
git push
Nota sobre Autenticação:
Quando você executa git push, o WebIDE solicitará automaticamente a autenticação. Siga estas etapas detalhadas:
Um popup aparecerá com a mensagem: "The extension 'GitHub' wants to sign in using GitHub." Clique em Allow.
Uma nova notificação aparecerá. Clique em "Copy&Continue to GitHub" e, em seguida, clique em "Open" no próximo prompt.
Faça login na sua conta do GitHub na janela do navegador que se abrir e insira o código de autorização que foi copiado. Após confirmar a autorização, a página será fechada automaticamente.
Aguarde alguns segundos e você verá o terminal concluir a operação de push com sucesso.
Nota de Privacidade: O WebIDE solicitará acesso total à sua conta do GitHub para fins de autenticação. Você não precisa se preocupar com questões de privacidade - a VM LabEx será imediatamente destruída após você concluir o laboratório atual, e suas credenciais e informações de autorização não serão retidas.
Este processo de autenticação não requer configuração manual de nome de usuário ou Personal Access Token.
Após seguir as etapas de autenticação, você verá uma saída semelhante à seguinte:
Exemplo de Saída:
Enumerating objects: X, done.
Counting objects: 100% (X/X), done.
Delta compression using up to 4 threads
Compressing objects: 100% (X/X), done.
Writing objects: 100% (X/X), XXX bytes | XXX.00 KiB/s, done.
Total X (delta X), reused X (delta X), pack-reused 0
To https://github.com/your-username/github-actions-demo.git
XXXXXXX..XXXXXXX main -> main
Visite seu repositório no GitHub em um navegador da web e navegue até a aba Actions. Você deverá ver o "Hello World Workflow" em execução ou concluído.
Nota: Ao enviar código (push), várias Ações podem ser acionadas se você tiver vários arquivos de fluxo de trabalho no seu repositório. Identifique a execução de fluxo de trabalho correta verificando o nome do fluxo de trabalho na barra lateral esquerda ou usando a lista de execuções de fluxo de trabalho no lado direito.
Clique na execução do fluxo de trabalho para visualizar os logs de execução detalhados. Você verá:
O nome do fluxo de trabalho: "Hello World Workflow" no topo
O nome do job: "build" na barra lateral esquerda
A execução da etapa (step): Clique no job "build" para expandi-lo e, em seguida, clique na etapa "Say Hello"
A saída: Você deverá ver a saída Hello, World! exibida nos logs
Isso fornece uma visão completa de como seu fluxo de trabalho foi executado, incluindo quais etapas foram executadas com sucesso e qual saída elas produziram. Isso é muito útil para depurar e entender o que seu fluxo de trabalho está fazendo.
Resumo
Neste laboratório, você criou com sucesso seu primeiro fluxo de trabalho (workflow) do GitHub Actions. Você aprendeu a:
Criar a estrutura de diretórios .github/workflows necessária.
Definir um fluxo de trabalho usando sintaxe YAML.
Definir o name (nome) do fluxo de trabalho e os eventos de gatilho usando on.
Definir jobs (trabalhos) e steps (etapas) para executar comandos.
Fazer commit e push do fluxo de trabalho para um repositório.
Estes são os blocos de construção fundamentais para criar pipelines complexos de CI/CD que podem construir, testar e implantar seu software automaticamente.