Introduction
In this guide, you'll learn about the basic components needed to create and use a packaged composite run steps action. To focus this guide on the components needed to package the action, the functionality of the action's code is minimal. The action prints "Hello World" and then "Goodbye", or if you provide a custom name, it prints "Hello [who-to-greet]" and then "Goodbye". The action also maps a random number to the random-number output variable, and runs a script named goodbye.sh.
Once you complete this project, you should understand how to build your own composite run steps action and test it in a workflow.
Prerequisites
Before you begin, you'll create a GitHub repository.
-
Create a new public repository on GitHub. You can choose any repository name, or use the following
hello-world-composite-run-steps-actionexample. You can add these files after your project has been pushed to GitHub. For more information, see "Create a new repository." -
Clone your repository to your computer. For more information, see "Cloning a repository."
-
From your terminal, change directories into your new repository.
cd hello-world-composite-run-steps-action -
In the
hello-world-composite-run-steps-actionrepository, create a new file calledgoodbye.sh, and add the following example code:echo "Goodbye" -
From your terminal, make
goodbye.shexecutable and check it into your repository.chmod +x goodbye.sh -
From your terminal, check in your
goodbye.shfile.git add goodbye.sh git commit -m "Add goodbye script" git push
Creating an action metadata file
-
In the
hello-world-composite-run-steps-actionrepository, create a new file calledaction.ymland add the following example code. For more information about this syntax, see "runsfor a composite run steps".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: bashThis file defines the
who-to-greetinput, maps the random generated number to therandom-numberoutput variable, and runs thegoodbye.shscript. It also tells the runner how to execute the composite run steps action.For more information about managing outputs, see "
outputsfor a composite run steps".For more information about how to use
github.action_path, see "github context". -
Create a new label. This example uses a label called
v1for the main branch. For more information, see "Creating a label ."
Testing out your action in a workflow
The following workflow code uses the completed hello world action that you made in "Creating an action metadata file".
Copy the workflow code into a .github/workflows/main.yml file in another repository, but replace actions/hello-world-composite-run-steps-action@v1 with the repository and label you created. You can also replace the who-to-greet input with your name.
.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-run-steps-action@v1
with:
who-to-greet: 'Mona the Octocat'
- run: echo random-number ${{ steps.foo.outputs.random-number }}
shell: bash
From your repository, click the Actions tab, and select the latest workflow run. The output should include: "Hello Mona the Octocat", the result of the "Goodbye" script, and a random number.