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.
-
Crie um repositório público novo no GitHub. You can choose any repository name, or use the following
hello-world-composite-actionexample. É possível adicionar esses arquivos após push do projeto no GitHub. Para obter mais informações, consulte "Criar um repositório novo". -
Clone o repositório para seu computador. Para obter mais informações, consulte "Clonar um repositório".
-
No seu terminal, mude os diretórios para seu novo repositório.
cd hello-world-composite-action -
In the
hello-world-composite-actionrepository, create a new file calledgoodbye.sh, and add the following example code:echo "Goodbye" -
No seu terminal, torne
goodbye.shexecutável.chmod +x goodbye.sh -
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
-
In the
hello-world-composite-actionrepository, create a new file calledaction.ymland add the following example code. For more information about this syntax, see "runsfor 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: bashEste arquivo define a entrada de
who-to-greet, mapeia o número aleatório gerado para a variável de saídarandom-numbere executa o scriptgoodbye.sh. It also tells the runner how to execute the composite action.For more information about managing outputs, see "
outputsfor a composite action".Para obter mais informações sobre como usar
github.action_path, consulte "github context". -
No seu terminal, verifique o seu arquivo
action.yml.git add action.yml git commit -m "Add action" git push -
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.

