Introdução
O GitHub Actions é um sistema de automação de workflows integrado ao GitHub. Ele reage a eventos do repositório, como pushes, pull requests ou gatilhos manuais, e então executa automaticamente os jobs definidos.
Essa automação pode realizar várias tarefas de DevOps, como testar código, criar artefatos e implantar aplicações. A lista de instruções é chamada de workflow.
Em um nível mais alto, um workflow é uma definição de pipeline. Ele transforma eventos do repositório em uma automação repetível, para que a mesma sequência não dependa de uma pessoa se lembrar de executá-la corretamente todas as vezes.
Neste laboratório, você escreverá seu primeiro manual de instruções (workflow) para esse robô. Você aprenderá os quatro componentes básicos presentes em todo workflow:
- Gatilhos: quando o robô deve ser ativado? (por exemplo, quando você faz push do código).
- Jobs: qual tarefa principal o robô deve executar?
- Runners: qual computador o robô deve usar para realizar o trabalho?
- Etapas: quais comandos específicos o robô deve executar?
Ao final deste laboratório, você terá um pipeline funcional que imprime automaticamente uma saudação sempre que você atualizar seu código.
Pré-requisitos
O GitHub Actions é importante porque a entrega moderna de software depende de automação repetível, em vez de cliques manuais e da memorização de etapas.
Criar um repositório
Para começar a usar o GitHub Actions, você precisa primeiro de um projeto no GitHub. Criaremos um repositório novo para este módulo. Esse repositório será usado em vários laboratórios, portanto siga cuidadosamente a convenção de nomenclatura.
Abra o navegador e faça login no GitHub. Clique no ícone + no canto superior direito de qualquer página do GitHub e selecione New repository.
No campo "Repository name", digite github-actions-basics. Tornar o repositório Public garante que ele seja gratuito e fácil de usar. Marque a caixa Add a README file para inicializar o repositório com um arquivo. Por fim, clique no botão Create repository.

Agora que o projeto existe na nuvem (GitHub), você precisa trazer uma cópia dele para este ambiente de laboratório para poder trabalhar nele. Esse processo é chamado de clonagem.
No terminal abaixo, use o comando git clone. Substitua your-username pelo seu nome de usuário real do GitHub.
cd ~/project
git clone https://github.com/your-username/github-actions-basics.git
Quando o processo de clonagem terminar, você verá uma nova pasta chamada github-actions-basics. Entre nesse diretório para começar a trabalhar.
cd ~/project/github-actions-basics
O GitHub Actions tem uma regra rígida sobre onde procura as instruções. Ele verifica apenas uma pasta oculta específica chamada .github, que contém uma subpasta chamada workflows. Se você colocar os arquivos de workflow em outro local, o assistente robô simplesmente os ignorará.
Crie essa estrutura de diretórios obrigatória. A opção -p informa ao comando que ele deve criar os diretórios pai e filho de uma só vez, caso ainda não existam.
mkdir -p .github/workflows
Em seguida, crie um arquivo vazio chamado main.yml dentro dessa nova pasta. É nesse arquivo que escreveremos nossas instruções.
touch .github/workflows/main.yml
Verifique se a configuração está correta listando os arquivos recursivamente. Você deverá ver a pasta .github contendo workflows, que por sua vez contém main.yml.
ls -R .github
Definir o gatilho
Os arquivos de workflow são escritos em YAML. Esse é um formato de texto simples que usa indentação (espaços) para organizar as informações, de modo semelhante à indentação usada em um esboço.
Todo workflow precisa de um nome e de um gatilho. O gatilho informa ao robô quando começar a trabalhar. Sem um gatilho, seu workflow nunca seria executado. Queremos que nosso robô seja ativado sempre que fizermos push de um novo código para o repositório.
Esse modelo orientado a eventos é uma das principais ideias por trás dos sistemas de CI/CD. Os pipelines reagem a mudanças no ciclo de vida do software, em vez de esperar que alguém execute scripts manualmente.
Abra o arquivo vazio main.yml usando o editor de texto nano.
nano .github/workflows/main.yml
Digite o conteúdo a seguir no arquivo.
name: First Workflow
on: push
A palavra-chave name atribui ao workflow um nome que aparece no GitHub. A linha on: push é o comando principal: ela significa "quando ocorrer um push, execute isto".
Pressione Ctrl+X, depois Y e, em seguida, Enter para salvar as alterações e sair do editor.
Definir o job e o runner
Agora que o robô sabe quando ser ativado, precisamos informar onde ele deve trabalhar. Isso é feito definindo um Job e um Runner.
Um Job é um conjunto de tarefas. Você pode ter vários jobs, como "Test Code" e "Deploy App", mas, por enquanto, teremos apenas um.
Um Runner é o servidor fornecido pelo GitHub para executar seu job. Pense nele como o computador onde seu assistente robô trabalha. Usaremos ubuntu-latest, o que significa que o GitHub nos fornecerá um computador novo executando a versão mais recente do Ubuntu Linux.
Esse runner novo é importante porque os jobs do workflow devem ser reproduzíveis. Cada execução começa em um ambiente limpo, sem depender de resíduos de uma configuração manual anterior.
Abra o arquivo main.yml novamente.
nano .github/workflows/main.yml
Adicione as linhas a seguir ao final do arquivo. Preste muita atenção ao espaçamento. No YAML, a indentação é fundamental. A palavra first-job deve ter dois espaços de indentação, e runs-on deve ter quatro espaços.
jobs:
first-job:
runs-on: ubuntu-latest
Agora, o arquivo completo deverá estar igual ao bloco abaixo. Verifique se a estrutura corresponde exatamente à apresentada.
name: First Workflow
on: push
jobs:
first-job:
runs-on: ubuntu-latest
Salve e saia do editor (Ctrl+X, Y, Enter).
Adicionar etapas e fazer push
Já temos o "Quando" (on: push) e o "Onde" (ubuntu-latest). Agora falta a parte mais importante: o "O quê". Isso é definido na seção Steps.
As etapas são os comandos que o robô realmente executará. Neste primeiro laboratório, pediremos apenas que o robô diga olá. Usaremos a palavra-chave run para executar um comando Linux padrão.
Abra main.yml uma última vez.
nano .github/workflows/main.yml
Adicione a seção steps abaixo de first-job. Verifique se steps: fica alinhado verticalmente com runs-on:.
steps:
- name: Print greeting
run: echo "Hello World from LabEx"
O hífen - indica um item de lista. Estamos listando as etapas do job.
O arquivo final deve estar exatamente assim:
name: First Workflow
on: push
jobs:
first-job:
runs-on: ubuntu-latest
steps:
- name: Print greeting
run: echo "Hello World from LabEx"
Salve e saia do editor.
Agora que nosso manual de instruções está completo, precisamos enviá-lo ao GitHub. O robô verifica apenas o código que está no GitHub, não o código no seu computador local.
Execute os comandos Git padrão para salvar e enviar suas alterações.
git add .
git commit -m "Add my first workflow"
git push
O sistema solicitará seu nome de usuário e sua senha do GitHub.
Importante: se aparecer um erro informando que o suporte à autenticação por senha foi removido, você deverá usar um Personal Access Token (PAT) em vez da senha da sua conta. Você pode gerar um token em GitHub Settings -> Developer settings -> Personal access tokens. Selecione "Tokens (classic)", gere um novo token com o escopo repo e cole esse token no terminal quando ele solicitar sua senha.

Quando o push for concluído com sucesso, volte ao navegador. Acesse a página do seu repositório e localize a aba Actions na parte superior.
Você deverá ver uma lista de workflows com o nome "First Workflow". Ela pode exibir um círculo amarelo girando (em execução) ou uma marca de verificação verde (sucesso). Clique nela. Em seguida, clique em first-job para ver os detalhes. Você pode expandir a etapa "Print greeting" para ver a mensagem "Hello World from LabEx" impressa nos logs.

Resumo
Parabéns! Você criou e executou seu primeiro workflow do GitHub Actions com sucesso.
Neste laboratório, você aprendeu os quatro pilares de um arquivo de workflow:
- Gatilho (
on): informa à action quando iniciar. - Job: agrupa tarefas.
- Runner (
runs-on): especifica o ambiente do servidor. - Etapa: define o comando que será executado.
Agora você tem um "assistente robô" ativo observando seu repositório. Nos próximos laboratórios, ensinaremos esse assistente a fazer tarefas mais úteis, como testar seu código automaticamente!



