Template GitHub Actions
Project description
Github Action Templates
Github Action Templates is a tool that allows for templating of yaml files to compose a github action. This allows for re-use of jobs, steps and events.
Quick Start
Create a new directory for your templates.
mkdir -p .action_templates/{jobs,steps,events}
Templated jobs should go in the jobs
directory.
# .action_templates/jobs/hello-world.yaml
HelloWorld:
if: success()
runs-on: ubuntu-latest
Note:
steps
can be ommited if you are also providing a additional steps templates.- There should be a single job per file.
Templated steps go under the steps
directory.
The contents of this file should be a yaml array with the step items to be templated.
# .action_templates/steps/python-setup.yaml
- uses: actions/setup-python@v2
with:
python-version: '3.6'
- run: pip install -r requirements.txt
- run: python my-script.py
Note
- The
steps
key is ommited, we just provide the contents.
Templated events go in the events
directory
# .action_templates/events/on-pull-request-master.yaml
pull_request:
branches:
- master
Create the Template file to pull everything together
# .action_templates/my-github-action.yaml
name: "My Github Action"
jobs:
- template: hello-world
if: success()
steps:
- template: python-setup
if: always()
events:
- template: on-pull-request-master
Generate the template
python main.py -t .action_templates/my-github-action.yaml
The generated contents will be
name: My Github Action
on:
pull_request:
branches:
- master
jobs:
HelloWorld:
if: success()
runs-on: ubuntu-latest
steps:
# template: python-setup
- uses: actions/setup-python@v2
with:
python-version: '3.6'
if: always()
- run: pip install -r requirements.txt
if: always()
- run: python my-script.py
if: always()
Alternatively, install the python package and use the provided library in your applications.
pip install .
python
>>> from ghat.template import template_github_action
>>> template_github_action(".action_templates/my-github-action.yaml")
{'name': 'My Github Action', 'on': {'pull_request': ordereddict([('branches', ['master'])])}, 'jobs': {'HelloWorld': ordereddict([('if', 'success()'), ('runs-on', 'ubuntu-latest'), ('steps', [ordereddict([('uses', 'actions/setup-python@v2'), ('with', ordereddict([('python-version', '3.6')])), ('if', 'always()')]), ordereddict([('run', 'pip install -r requirements.txt'), ('if', 'always()')]), ordereddict([('run', 'python my-script.py'), ('if', 'always()')])])])}}
>>>
Structure of the template file
Field | Type | Description | Sample Value |
---|---|---|---|
name | String | Name of the GitHub Action. | My Github Action |
jobs | Array | Array of jobs which the Github Action will contain | |
jobs[n].template | String | Location of the file to the template file. | .action_templates/jobs/hello-world.yaml |
jobs[n].if | String | Contents of the if: condition that will be used for this job. |
github.event.pull_request.head.repo.full_name == '<some-value>' |
jobs[n].steps | Array | Array of step template objects | |
jobs[n].steps[n].template | String | Location of the file to the template file. | python-setup |
jobs[n].steps[n].if | String | Contents of the if: condition that will be used for all steps in this template. |
always() |
events | Array | Array of events, these correspond to the on section of a workflow file. |
|
events[n].template | String | Full or relative path to the template file. Can be just the name if the default location (.action_templates/events) is used. | on-pull-request-master |
Note on file locations.
File location can be the absolute or relative path of a file. An optional argument is accepted to the template_github_action
. This accepts a directory to search for template files.
Just the name of the file can be provided if it exists within this directory and has a .yml or .yaml extension.
A url can also be used as long as the response contains valid yaml. E.g. https://raw.githubusercontent.com/mongodb/mongodb-kubernetes-operator/master/.action_templates/jobs/tests.yaml
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for github-action-templates-0.0.4.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9f55af56052ce624b6da10897f31ec8b8245f207f5f1c0784f933012a99b82a6 |
|
MD5 | 118e03a751b1105cf3b9714db4233fbf |
|
BLAKE2b-256 | 5ce9191c6206388341e50e4025005c2668fa2f1a85cc4f0329d47d7986c7af77 |
Hashes for github_action_templates-0.0.4-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c21bb8c597d8ba675acb84acb2e22f8b8ace6ea2ce397048f4651a8b21012b64 |
|
MD5 | 2f37d81efb838dda31931a2f5a721fb3 |
|
BLAKE2b-256 | 9e951c7f0bafe09f423ffe1cf7d4246577c1163c4e2ea272a8076cfb185ee5b1 |