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:
stepscan 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
stepskey 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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file github-action-templates-0.0.5.tar.gz.
File metadata
- Download URL: github-action-templates-0.0.5.tar.gz
- Upload date:
- Size: 4.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.2 importlib_metadata/4.6.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
56a044ba34bbbf01ce34856aebcdc26b2bd50ae5d0bae9bb95072b9c38368f7a
|
|
| MD5 |
90843f191d70d0bc35899da0addafc82
|
|
| BLAKE2b-256 |
c41bf88e7b94004f0060960e020bdc881ce911ee1025e2a1ca30ea54a54c5ad1
|
File details
Details for the file github_action_templates-0.0.5-py3-none-any.whl.
File metadata
- Download URL: github_action_templates-0.0.5-py3-none-any.whl
- Upload date:
- Size: 5.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.2 importlib_metadata/4.6.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f21606cc0e64ccd94bacfe5b1ed5333cf6f57597e926aa55642d893a6115a795
|
|
| MD5 |
327e8d2b328f53e41bbe5438f4402339
|
|
| BLAKE2b-256 |
7cb373ae8979ea192b063e801cee8da1db2a8230854c860012f4cb28bb565e0f
|