Skip to main content

Criar uma ação composta

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

Observação: no momento, não há suporte para os executores hospedados no GitHub no GitHub Enterprise Server. Você pode ver mais informações sobre o suporte futuro planejado no GitHub public roadmap.

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, você sempre deve considerar se o 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, confira "Noções básicas sobre o risco de injeções de script".

Pré-requisitos

Antes de começar, você criará um repositório em your GitHub Enterprise Server instance.

  1. Crie um repositório público novo no your GitHub Enterprise Server instance. 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 push do projeto no GitHub Enterprise Server. Para obter mais informações, confira "Criar um repositório".

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

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

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

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

    chmod +x goodbye.sh
  6. Ainda no terminal, faça check-in do arquivo goodbye.sh.

    git add goodbye.sh
    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 "runs para uma ação composta".

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

    Esse arquivo define a entrada who-to-greet, mapeia o número gerado aleatoriamente para a variável de saída random-number e executa o script goodbye.sh. Também informa ao executor como executar a ação composta.

    Para obter mais informações sobre como gerenciar saídas, confira "outputs para uma ação composta".

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

  2. No terminal, faça check-in do 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 chamada v1. Para obter mais informações, confira "Sobre as 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 olá, mundo concluída criada em "Como criar um arquivo de metadados de ação".

Copie o código de fluxo de trabalho em um arquivo .github/workflows/main.yml em outro repositório, mas substitua actions/hello-world-composite-action@v1 pelo repositório e pela tag que você criou. 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@v3
      - 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 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.