Note
No momento, não há suporte para executores hospedados no GitHub no GitHub Enterprise Server. Você pode ver mais informações sobre o suporte futuro planejado no GitHub public roadmap.
Visão geral
Você pode usar blocos de construção pré-gravados, chamados de ações, no seu fluxo de trabalho. Uma ação é um conjunto predefinido e reutilizável de trabalhos ou código que desempenham tarefas específicas dentro de um fluxo de trabalho.
As ações podem ser:
- Reutilizáveis: as ações podem ser usadas em diferentes fluxos de trabalho e repositórios, permitindo que você evite regravar o mesmo código.
- Pré-gravadas: muitas ações estão disponíveis no GitHub Marketplace, abrangendo uma ampla variedade de tarefas como fazer check-out de código, configurar ambientes, executar testes e implantar aplicativos.
- Configuráveis: você pode configurar as ações com entradas, saídas e variáveis de ambiente para adaptá-las às suas necessidades específicas.
- Orientadas à comunidade: você pode criar as próprias ações e compartilhá-las com outras pessoas ou usar ações desenvolvidas pela comunidade.
As ações que você usa no seu fluxo de trabalho podem ser definidas em:
- O mesmo repositório do arquivo do fluxo de trabalho
- Um repositório interno na mesma conta corporativa que está configurado para permitir acesso aos fluxos de trabalho
- Qualquer repositório público
- Em uma imagem de contêiner Docker publicada no Docker Hub.
O GitHub Marketplace é um local central para você encontrar ações criadas pela comunidade do GitHub.
Note
O GitHub Actions no GitHub Enterprise Server pode ter acesso limitado às ações do GitHub.com ou do GitHub Marketplace. Para saber mais, confira "Gerenciar o acesso a ações do GitHub.com" e entre em contato com o administrador do site do GitHub Enterprise.
Adicionando uma ação do mesmo repositório
Se uma ação for definida no mesmo repositório em que o arquivo de fluxo de trabalho usa a ação, você poderá referenciar a ação com a sintaxe {owner}/{repo}@{ref}
ou ./path/to/dir
no arquivo de fluxo de trabalho.
Exemplo de estrutura de arquivo de repositório:
|-- hello-world (repository)
| |__ .github
| └── workflows
| └── my-first-workflow.yml
| └── actions
| |__ hello-world-action
| └── action.yml
O caminho é relativo (./
) ao diretório de trabalho padrão (github.workspace
, $GITHUB_WORKSPACE
). Se a ação fizer check-out do repositório para um local diferente do fluxo de trabalho, o caminho relativo usado para ações locais deverá ser atualizado.
Exemplo de arquivo de fluxo de trabalho:
jobs:
my_first_job:
runs-on: ubuntu-latest
steps:
# This step checks out a copy of your repository.
- name: My first step - check out repository
uses: actions/checkout@v4
# This step references the directory that contains the action.
- name: Use local hello-world-action
uses: ./.github/actions/hello-world-action
O arquivo action.yml
é usado para fornecer metadados para a ação. Saiba mais sobre o conteúdo deste arquivo em Sintaxe de metadados para o GitHub Actions.
Adicionando uma ação de um repositório diferente
Se uma ação for definida em um repositório diferente do arquivo de fluxo de trabalho, você poderá referenciar a ação com a sintaxe {owner}/{repo}@{ref}
no arquivo de fluxo de trabalho.
A ação precisa ser armazenada em um repositório público ou em um repositório interno configurado para permitir acesso a fluxos de trabalho. Para obter mais informações, confira Compartilhando ações e fluxos de trabalho com sua empresa.
jobs:
my_first_job:
steps:
- name: My first step
uses: actions/setup-node@v4
Se um proprietário da empresa tiver habilitado o acesso a ações no GitHub.com, você poderá usar essa sintaxe para referenciar as ações na sua empresa ou no GitHub.com. O GitHub Actions vai procurar a ação na sua empresa primeiro e, em seguida, vai recorrer ao GitHub.com.
Fazer referência a um contêiner no Docker Hub
Se uma ação for definida em uma imagem de contêiner do Docker publicada no Docker Hub, você precisará referenciar a ação com a sintaxe docker://{image}:{tag}
no arquivo de fluxo de trabalho. Para proteger seu código e os dados, é altamente recomendável verificar a integridade da imagem do contêiner Docker no Docker Hub antes de usá-la no fluxo de trabalho.
jobs:
my_first_job:
steps:
- name: My first step
uses: docker://alpine:3.8
Para ver alguns exemplos de ações do Docker, confira o fluxo de trabalho Docker-image.yml e o Criando uma ação de contêiner do Docker.
Proteção de segurança para usar ações em seus fluxos de trabalho
O GitHub oferece recursos de segurança que você pode usar para aumentar a segurança de seus fluxos de trabalho. Você pode usar os recursos internos do GitHub para garantir que receba notificações sobre vulnerabilidades nas ações que consome ou para automatizar o processo de manter as ações em seus fluxos de trabalho atualizadas. Para obter mais informações, confira "Usar os recursos de segurança do GitHub para proteger seu uso do GitHub Actions".
Usar o gerenciamento de versões para suas ações personalizadas
Os criadores de uma ação da comunidade têm a opção de usar tags, branches ou valores do SHA para gerenciar as versçoes da ação. Semelhante a qualquer dependência, você deve indicar a versão da ação que gostaria de usar com para o seu conforto para aceitar automaticamente as atualizações da ação.
Você irá designar a versão da ação no seu arquivo de fluxo de trabalho. Verifique a documentação da ação para informações sobre suas abordagens de gerenciamento de versões e para ver qual tag, branch ou valor de SHA usar.
Note
Recomendamos que você use um valor SHA ao usar ações de terceiros. No entanto, é importante observar que o Dependabot apenas criará Dependabot alerts para GitHub Actions vulneráveis que usam controle de versão semântico. Para saber mais, confira Fortalecimento de segurança para o GitHub Actions e Sobre alertas do Dependabot.
Usar tags
As tags são úteis para permitir que você decida quando alternar entre versões maiores e menores, mas estas são mais efêmeras e podem ser movidas ou excluídas pelo mantenedor. Este exemplo demonstra como direcionar uma ação que foi marcada como v1.0.1
:
steps:
- uses: actions/javascript-action@v1.0.1
Usar SHAs
Se você precisar de uma versão mais confiável, você deverá usar o valor de SHA associado à versão da ação. Os SHAs são imutáveis e, portanto, mais confiáveis que tags ou branches. No entanto, esta abordagem significa que você não receberá automaticamente atualizações de uma ação, incluindo correções de bugs e atualizações de segurança importantes. Você deve usar o valor SHA completo de um commit e não um valor abreviado. Ao selecionar um SHA, verifique se ele está no repositório da ação e não em uma bifurcação do repositório. Este exemplo tem como destino um SHA de uma ação:
steps:
- uses: actions/javascript-action@a824008085750b8e136effc585c3cd6082bd575f
Usar branches
Especificar um branch de destino para a ação significa que ele sempre irá executar a versão atualmente nesse branch. Essa abordagem pode criar problemas se uma atualização do branch incluir mudanças significativas. Este exemplo é direcionado a um branch chamado @main
:
steps:
- uses: actions/javascript-action@main
Para saber mais, confira Sobre ações personalizadas.
Usar entradas e saídas com uma ação
Uma ação geralmente aceita ou exige entradas e gera saídas que você pode usar. Por exemplo, uma ação pode exigir que você especifique um caminho para um arquivo, o nome de uma etiqueta ou outros dados que usará como parte do processamento da ação.
Para ver as entradas e as saídas de uma ação, verifique o action.yml
ou o action.yaml
no diretório raiz do repositório.
Neste exemplo de action.yml
, a palavra-chave inputs
define uma entrada obrigatória chamada file-path
e inclui um valor padrão que será usado se nenhum for especificado. A palavra-chave outputs
define uma saída chamada results-file
, que informa o local em que os resultados se encontram.
name: "Example"
description: "Receives file and generates output"
inputs:
file-path: # id of input
description: "Path to test script"
required: true
default: "test-file.js"
outputs:
results-file: # id of output
description: "Path to results file"
Próximas etapas
Para continuar aprendendo sobre o GitHub Actions, confira Entendendo o GitHub Actions.