The Wayback Machine - https://web.archive.org/web/20211006025832/https://docs.github.com/pt/actions/creating-actions/creating-a-composite-action

Creating a composite action

In this guide, you'll learn how to build a composite action.

GitHub Actions está disponível com GitHub Free, GitHub Pro, GitHub Free para organizações, GitHub Team, GitHub Enterprise Cloud e GitHub AE. GitHub Actions não está disponível para repositórios privados pertencentes a contas usando os planos de legado por repositório. Para obter mais informações, consulte os "produtos do GitHub".

Introdução

In this guide, you'll learn about the basic components needed to create and use a packaged composite action. 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 denominado goodbye.sh.

Once you complete this project, you should understand how to build your own composite action and test it in a workflow.

Aviso: Ao criar fluxos de trabalho e ações, você sempre deve considerar se seu código pode 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 obter mais informações, consulte "Entender o risco de injeções de scripts".

Pré-requisitos

Antes de começar, você criará um repositório GitHub.

  1. Crie um repositório público novo no GitHub. You can choose any repository name, or use the following hello-world-composite-action example. É possível adicionar esses arquivos após push do projeto no GitHub. Para obter mais informações, consulte "Criar um repositório novo".

  2. Clone o repositório para seu computador. Para obter mais informações, consulte "Clonar um repositório".

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

    cd hello-world-composite-action
  4. In the hello-world-composite-action repository, create a new file called goodbye.sh, and add the following example code:

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

    chmod +x goodbye.sh
  6. No terminal, verifique no seu arquivo goodbye.sh.

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

Criar um arquivo de metadados de ação

  1. In the hello-world-composite-action repository, create a new file called action.yml and add the following example code. For more information about this syntax, see "runs for a composite actions".

    action.yml

    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-id }}
    runs:
      using: "composite"
      steps:
        - run: echo Hello ${{ inputs.who-to-greet }}.
          shell: bash
        - id: random-number-generator
          run: echo "::set-output name=random-id::$(echo $RANDOM)"
          shell: bash
        - run: ${{ github.action_path }}/goodbye.sh
          shell: bash
    

    Este arquivo define a entrada de who-to-greet, mapeia o número aleatório gerado para a variável de saída random-number e executa o script goodbye.sh. It also tells the runner how to execute the composite action.

    For more information about managing outputs, see "outputs for a composite action".

    Para obter mais informações sobre como usar github.action_path, consulte "github context".

  2. No seu terminal, verifique o seu arquivo action.yml.

    git add action.yml
    git commit -m "Add action"
    git push
  3. No seu terminal, adicione uma tag. Este exemplo usa uma tag denominada v1. Para obter mais informações, consulte "Sobre ações".

    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 hello world completa que você fez em "Criando uma ação arquivo de metadados".

Copy the workflow code into a .github/workflows/main.yml file in another repository, but replace actions/hello-world-composite-action@v1 with the repository and tag you created. Você também pode substituir a entrada who-to-greet pelo seu nome.

.github/workflows/main.yml

on: [push]

jobs:
  hello_world_job:
    runs-on: ubuntu-latest
    name: A job to say hello
    steps:
      - uses: actions/checkout@v2
      - id: foo
        uses: actions/hello-world-composite-action@v1
        with:
          who-to-greet: 'Mona the Octocat'
      - run: echo random-number ${{ steps.foo.outputs.random-number }}
        shell: bash

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

Ajude-nos a tornar esses documentos ótimos!

Todos os documentos do GitHub são de código aberto. Você percebeu que algo que está errado ou não está claro? Envie um pull request.

Faça uma contribuição

Ou, aprenda como contribuir.