Skip to main content

Criar uma ação composta

Neste tutorial, você aprenderá a criar uma ação composta.

Platform navigation

Introdução

Neste guia, você aprenderá os componentes básicos necessários para criar e usar uma ação composta empacotada. Para manter o foco deste guia nos componentes necessários para empacotar a ação, a funcionalidade do código da ação é mínima. A ação imprime "Hello World" e "Goodbye", ou, se você fornecer um nome personalizado, imprimirá "Hello [who-to-greet]" e "Goodbye". A ação também mapeia um número aleatório para a variável de saída random-number e executa um script chamado goodbye.sh.

Ao concluir este projeto, você entenderá como criar a sua própria ação composta e testá-la em um fluxo de trabalho.

Aviso

Ao criar fluxos de trabalho e ações, sempre considere se o código poderá executar entradas não confiáveis de possíveis invasores. Certos contextos devem ser tratados como entradas não confiáveis, uma vez que um invasor pode inserir seu próprio conteúdo malicioso. Para saber mais, confira Referência de uso seguro.

Ações compostas e fluxos de trabalho reutilizáveis

As ações compostas permitem coletar uma série de etapas de tarefas de fluxo de trabalho em uma única ação que você pode executar como uma única etapa de trabalho em vários fluxos de trabalho. Os fluxos de trabalho reutilizáveis fornecem outra maneira de evitar a duplicação, permitindo que você execute um fluxo de trabalho completo de dentro de outros fluxos de trabalho. Para saber mais, confira Reutilizando configurações de fluxo de trabalho.

Pré-requisitos

Observação

Este exemplo explica como criar uma ação composta em um repositório separado. No entanto, é possível criar uma ação composta no mesmo repositório. Para saber mais, confira Criar uma ação composta.

Antes de começar, crie um repositório em GitHub.

  1. Crie um repositório público novo em GitHub. Você pode escolher qualquer nome de repositório ou usar o exemplo de hello-world-composite-action a seguir. É possível adicionar esses arquivos após o push do projeto para o GitHub. Para saber mais, confira Criar um repositório.

  2. Clone o repositório para seu computador. Para saber mais, confira Clonar um repositório.

  3. No seu terminal, mude os diretórios para seu novo repositório.

    Shell
    cd hello-world-composite-action 
  4. No repositório hello-world-composite-action, crie um arquivo chamado goodbye.sh com o código de exemplo:

    Shell
    echo "echo Goodbye" > goodbye.sh 
  5. No terminal, torne goodbye.sh executável.

    Shell
    chmod +x goodbye.sh 
Shell
chmod +x goodbye.sh 
Shell
git add --chmod=+x -- goodbye.sh 
  1. No terminal, faça check-in do arquivo goodbye.sh.

    Shell
    git add goodbye.sh git commit -m "Add goodbye script" git push 
Shell
git add goodbye.sh git commit -m "Add goodbye script" git push 
Shell
git commit -m "Add goodbye script" git push 

Criar um arquivo de metadados de ação

  1. No repositório hello-world-composite-action, crie um arquivo chamado action.yml e adicione o código de exemplo a seguir. Para obter mais informações sobre essa sintaxe, confira Referência de sintaxe de metadados.

    YAML
    name: 'Hello World' description: 'Greet someone' inputs: who-to-greet: # id of input description: 'Who to greet' required: true default: 'World' outputs: random-number: description: "Random number" value: ${{ steps.random-number-generator.outputs.random-number }} runs: using: "composite" steps: - name: Set Greeting run: echo "Hello $INPUT_WHO_TO_GREET." shell: bash env: INPUT_WHO_TO_GREET: ${{ inputs.who-to-greet }} - name: Random Number Generator id: random-number-generator run: echo "random-number=$(echo $RANDOM)" >> $GITHUB_OUTPUT shell: bash - name: Set GitHub Path run: echo "$GITHUB_ACTION_PATH" >> $GITHUB_PATH shell: bash env: GITHUB_ACTION_PATH: ${{ github.action_path }} - name: Run goodbye.sh run: goodbye.sh shell: bash 

    Esse arquivo define a entrada dewho-to-greet, mapeia o número gerado aleatoriamente para a variável de saídarandom-number, adiciona o caminho da ação ao caminho do sistema executor (para localizar o scriptgoodbye.sh durante a execução) e executa o scriptgoodbye.sh.

    Para obter mais informações sobre como gerenciar saídas, confira Referência de sintaxe de metadados.

    Para obter mais informações sobre como usar o github.action_path, confira Referência de contextos.

  2. No terminal, faça check-in do arquivo action.yml.

    Shell
    git add action.yml git commit -m "Add action" git push 
  3. No seu terminal, adicione uma tag. Este exemplo usa uma tag chamada v1. Para saber mais, confira Sobre ações personalizadas.

    Shell
    git tag -a -m "Description of this release" v1 git push --follow-tags 

Testar sua ação em um fluxo de trabalho

O código de fluxo de trabalho a seguir usa a ação olá, mundo concluída que você criou em Criar uma ação composta.

Copie o código do fluxo de trabalho em um arquivo .github/workflows/main.yml em outro repositório, substituindo OWNER e SHA pelo proprietário do repositório e o SHA do commit que deseja usar, respectivamente. Você também pode substituir a entrada who-to-greet pelo seu nome.

YAML
on: [push] jobs: hello_world_job: runs-on: ubuntu-latest name: A job to say hello steps: - uses: actions/checkout@v5 - id: foo uses: OWNER/hello-world-composite-action@SHA with: who-to-greet: 'Mona the Octocat' - run: echo random-number "$RANDOM_NUMBER" shell: bash env: RANDOM_NUMBER: ${{ steps.foo.outputs.random-number }} 

No repositório, clique na guia Ações e selecione a execução mais recente do fluxo de trabalho. A saída deve incluir: "Hello Mona the Octocat", o resultado do script "Goodbye" e um número aleatório.

Criando uma ação composta no mesmo repositório

  1. Crie uma subpasta chamada hello-world-composite-action, que pode ser colocada em qualquer subpasta dentro do repositório. No entanto, é recomendável que seja colocada na subpasta .github/actions para facilitar a organização.

  2. Na pasta hello-world-composite-action, execute as mesmas etapas para criar o script goodbye.sh

    Shell
    echo "echo Goodbye" > goodbye.sh 
    Shell
    chmod +x goodbye.sh 
Shell
chmod +x goodbye.sh 
Shell
git add --chmod=+x -- goodbye.sh 
Shell
git add goodbye.sh git commit -m "Add goodbye script" git push 
Shell
git add goodbye.sh git commit -m "Add goodbye script" git push 
Shell
git commit -m "Add goodbye script" git push 
  1. Na pasta hello-world-composite-action, crie o arquivo action.yml com base nas etapas em Criar uma ação composta.
  2. Ao usar a ação, use o caminho relativo para a pasta em que o arquivo action.yml da ação composta está localizado na chave uses. O exemplo a seguir pressupõe que ele esteja na pasta .github/actions/hello-world-composite-action.
YAML
on: [push] jobs: hello_world_job: runs-on: ubuntu-latest name: A job to say hello steps: - uses: actions/checkout@v5 - id: foo uses: ./.github/actions/hello-world-composite-action with: who-to-greet: 'Mona the Octocat' - run: echo random-number "$RANDOM_NUMBER" shell: bash env: RANDOM_NUMBER: ${{ steps.foo.outputs.random-number }} 

Exemplo de ações compostas em GitHub

Encontre vários exemplos de ações compostas em GitHub.