Skip to main content

Understanding GitHub Actions

Learn the basics of GitHub Actions, including core concepts and essential terminology.

Overview

GitHub Actions é uma plataforma de integração contínua e entrega contínua (CI/CD) que permite automatizar a sua compilação, testar e pipeline de implantação. You can create workflows that build and test every pull request to your repository, or deploy merged pull requests to production.

GitHub Actions goes beyond just DevOps and lets you run workflows when other events happen in your repository. For example, you can run a workflow to automatically add the appropriate labels whenever someone creates a new issue in your repository.

GitHub provides Linux, Windows, and macOS virtual machines to run your workflows, or you can host your own self-hosted runners in your own data center or cloud infrastructure.

For more information about introducing GitHub Actions to your enterprise, see "Introducing GitHub Actions to your enterprise."

The components of GitHub Actions

You can configure a GitHub Actions workflow to be triggered when an event occurs in your repository, such as a pull request being opened or an issue being created. Your workflow contains one or more jobs which can run in sequential order or in parallel. Each job will run inside its own virtual machine runner, or inside a container, and has one or more steps that either run a script that you define or run an action, which is a reusable extension that can simplify your workflow.

Workflow overview

Workflows

Um fluxo de trabalho é um processo automatizado configurável que executa um ou mais trabalhos. Os fluxos de trabalho são definidos por um arquivo YAML verificado no seu repositório e será executado quando acionado por um evento no repositório, ou eles podem ser acionados manualmente ou de acordo com um cronograma definido.

Os fluxos de trabalho são definidos no diretório .github/workflows em um repositório. Um repositório pode ter vários fluxos de trabalho, cada um dos quais pode executar um conjunto diferente de tarefas. Por exemplo, você pode ter um fluxo de trabalho para criar e testar pull requests, outro fluxo de trabalho para implantar seu aplicativo toda vez que uma versão for criada, e outro fluxo de trabalho que adiciona uma etiqueta toda vez que alguém abre um novo problema.

You can reference a workflow within another workflow, see "Reusing workflows."

For more information about workflows, see "Using workflows."

Events

An event is a specific activity in a repository that triggers a workflow run. For example, activity can originate from GitHub when someone creates a pull request, opens an issue, or pushes a commit to a repository. You can also trigger a workflow run on a schedule, by posting to a REST API, or manually.

For a complete list of events that can be used to trigger workflows, see Events that trigger workflows.

Jobs

A job is a set of steps in a workflow that execute on the same runner. Each step is either a shell script that will be executed, or an action that will be run. Steps are executed in order and are dependent on each other. Since each step is executed on the same runner, you can share data from one step to another. For example, you can have a step that builds your application followed by a step that tests the application that was built.

You can configure a job's dependencies with other jobs; by default, jobs have no dependencies and run in parallel with each other. When a job takes a dependency on another job, it will wait for the dependent job to complete before it can run. For example, you may have multiple build jobs for different architectures that have no dependencies, and a packaging job that is dependent on those jobs. The build jobs will run in parallel, and when they have all completed successfully, the packaging job will run.

For more information about jobs, see "Using jobs."

Actions

An action is a custom application for the GitHub Actions platform that performs a complex but frequently repeated task. Use an action to help reduce the amount of repetitive code that you write in your workflow files. An action can pull your git repository from GitHub, set up the correct toolchain for your build environment, or set up the authentication to your cloud provider.

You can write your own actions, or you can find actions to use in your workflows in the GitHub Marketplace.

Para compartilhar ações na empresa sem publicá-las publicamente, armazene as ações em um repositório interno e configure o repositório para permitir o acesso aos fluxos de trabalho do GitHub Actions em outros repositórios pertencentes à mesma organização ou a outras organizações da empresa. Para obter mais informações, confira "Como compartilhar ações e fluxos de trabalho com sua empresa".

For more information, see "Creating actions."

Runners

Um executor é um servidor que executa seus fluxos de trabalho quando são acionados. Each runner can run a single job at a time. GitHub provides Ubuntu Linux, Microsoft Windows, and macOS runners to run your workflows; each workflow run executes in a fresh, newly-provisioned virtual machine. GitHub also offers larger runners, which are available in larger configurations. For more information, see "Using larger runners." If you need a different operating system or require a specific hardware configuration, you can host your own runners. For more information about self-hosted runners, see "Hosting your own runners."

Criar um exemplo de fluxo de trabalho

GitHub Actions usa a sintaxe do YAML para definir o fluxo de trabalho. Cada fluxo de trabalho é armazenado como um arquivo YAML separado no seu repositório de código, em um diretório chamado .github/workflows.

Você pode criar um exemplo de fluxo de trabalho no repositório que aciona automaticamente uma série de comandos sempre que o código for carregado. Nesse fluxo de trabalho, GitHub Actions verifica o código enviado, instala a estrutura de teste bats e executa um comando básico para gerar a versão bats:bats -v.

  1. No repositório, crie o diretório .github/workflows/ para armazenar os arquivos de fluxo de trabalho.

  2. No diretório .github/workflows/, crie um arquivo chamado learn-github-actions.yml e adicione o código a seguir.

    name: learn-github-actions
    on: [push]
    jobs:
      check-bats-version:
        runs-on: ubuntu-latest
        steps:
          - uses: actions/checkout@v3
          - uses: actions/setup-node@v3
            with:
              node-version: '14'
          - run: npm install -g bats
          - run: bats -v
    
  3. Faça commit dessas alterações e faça push para o seu repositório do GitHub.

Seu novo arquivo de fluxo de trabalho de GitHub Actions agora está instalado no seu repositório e será executado automaticamente toda vez que alguém fizer push de uma alteração no repositório. Para conferir os detalhes sobre o histórico de execução de um fluxo de trabalho, confira "Exibir a atividade de uma execução de fluxo de trabalho".

Entender o arquivo de fluxo de trabalho

Para ajudar você a entender como a sintaxe de YAML é usada para criar um arquivo de fluxo de trabalho, esta seção explica cada linha do exemplo Introdução:

name: learn-github-actions
Opcional – O nome do fluxo de trabalho, conforme ele será exibido na guia Ações do repositório do GitHub.
on: [push]
Especifica o gatilho para este fluxo de trabalho. Este exemplo usa o evento push, para que uma execução de fluxo de trabalho seja disparada sempre que alguém efetuar push de uma alteração para o repositório ou mesclar uma solicitação de pull. Isso é disparado por um push para cada branch. Para ver exemplos de sintaxe que são executados somente em pushes para branches, marcas ou caminhos específicos, confira "Sintaxe de fluxo de trabalho do GitHub Actions".
jobs:
Agrupa todos os trabalhos executados no fluxo de trabalho learn-github-actions.
check-bats-version:
Define um trabalho chamado check-bats-version. As chaves secundaárias definirão as propriedades do trabalho.
  runs-on: ubuntu-latest
Configura o trabalho a ser executado na versão mais recente de um executor do Linux do Ubuntu. Isto significa que o trabalho será executado em uma nova máquina virtual hospedada pelo GitHub. Para ver exemplos de sintaxe que usam outros executores, confira "Sintaxe de fluxo de trabalho do GitHub Actions".
  steps:
Agrupa todas as etapas que são executadas no trabalho check-bats-version. Cada item aninhado nesta seção é uma ação separada ou script do shell.
    - uses: actions/checkout@v3
A palavra-chave uses especifica que esta etapa executará v3 da ação actions/checkout. Esta é uma ação que faz o check-out do seu repositório para o executor, permitindo que você execute scripts ou outras ações com base no seu código (como ferramentas de compilação e teste). Você deve usar a ação de checkout sempre que o fluxo de trabalho for executado no código do repositório.
    - uses: actions/setup-node@v3
      with:
        node-version: '14'
Esta etapa usa a ação actions/setup-node@v3 para instalar a versão especificada do Node.js (este exemplo usa a v14). Isso insere os comandos node e npm no PATH.
    - run: npm install -g bats
A palavra-chave run instrui o trabalho a executar um comando no executor. Nesse caso, você está usando npm para instalar o pacote de teste de software bats.
    - run: bats -v
Por fim, você executará o comando bats com um parâmetro que gera a versão do software.

Visualizar o arquivo de fluxo de trabalho

Neste diagrama, você pode ver o arquivo de fluxo de trabalho que acabou de criar e como os componentes de GitHub Actions estão organizados em uma hierarquia. Cada etapa executa uma única ação ou script do shell. As etapas 1 e 2 executam ações, enquanto as etapas 3 e 4 executam scripts de shell. Para encontrar mais ações predefinidas para seus fluxos de trabalho, confira "Como localizar e personalizar ações".

Visão geral do fluxo de trabalho

Exibir a atividade para uma execução de fluxo de trabalho

Quando seu fluxo de trabalho é acionado, é criada uma execução de fluxo de trabalho que executa o fluxo de trabalho. Após o início de uma execução de fluxo de trabalho, você pode ver um gráfico de visualização do progresso da execução e visualizar a atividade de cada etapa em GitHub.

  1. No GitHub.com, navegue até a página principal do repositório.

  2. Abaixo do nome do seu repositório, clique em Ações.

    Acesse o repositório

  3. Na barra lateral esquerda, clique no fluxo de trabalho que deseja ver.

    Captura de tela dos resultados do fluxo de trabalho

  4. Em "Execuções do fluxo de trabalho", clique no nome da execução que você deseja ver.

    Captura de tela das execuções do fluxo de trabalho

  5. Em Trabalhos ou no grafo de visualização, clique no trabalho que deseja ver.

    Selecionar trabalho

  6. Exiba os resultados detalhados de cada etapa.

    Captura de tela dos detalhes de execução do fluxo de trabalho

More complex examples

Para obter exemplos que demonstram recursos mais complexos do GitHub Actions, confira " Exemplos". Você pode ver exemplos detalhados que explicam como testar seu código em um executor, acessar a CLI do GitHub e usar recursos avançados, como simultaneidade e matrizes de teste.

Next steps

Contacting support

Se você precisar de ajuda com qualquer questão relacionada à configuração do fluxo de trabalho, como sintaxe, executores hospedados em GitHub ou ações de build, procure um tópico existente ou inicie um novo nas variáveis de dados na categoria GitHub Actions e GitHub Packages de GitHub Community.

Se você tiver comentários ou solicitações de recursos para GitHub Actions, compartilhe-os na GitHub Community discussions for GitHub Actions.

Contatar GitHub Support para qualquer uma das seguintes opções, se o uso ou uso pretendido se enquadra nas categorias limite:

  • Se você acredita que sua conta foi restrita incorretamente
  • Se você encontrar um erro inesperado ao executar uma de suas Ações, por exemplo: um ID exclusivo
  • Se você encontrar uma situação onde o comportamento existente contradiz o esperado, mas nem sempre documentado, comportamento

Further reading