mirror of
https://github.com/pyTooling/Actions.git
synced 2026-02-13 03:26:55 +08:00
117 lines
3.0 KiB
ReStructuredText
117 lines
3.0 KiB
ReStructuredText
Instantiantion
|
|
##############
|
|
|
|
The job templates (GitHub Action *Reusable Workflows*) need to be stored in the same directory where normal pipelines
|
|
(GitHub Action *Workflows*) are located: ``.github/workflows/<template>.yml``. These template files are distinguished
|
|
from a normal pipeline by a ``on:workflow_call:`` section compared to an ``on:push`` section.
|
|
|
|
**Job Template Definition:**
|
|
|
|
The ``workflow_call`` allows the definition of input and output parameters.
|
|
|
|
.. code-block:: yaml
|
|
|
|
on:
|
|
workflow_call:
|
|
inputs:
|
|
<Param1>:
|
|
# ...
|
|
outputs:
|
|
# ...
|
|
|
|
jobs:
|
|
<JobName>:
|
|
# ...
|
|
|
|
**Job Template Instantiation:**
|
|
|
|
When instantiating a template, a ``jobs:<Name>:uses`` is used to refer to a template file. Unfortunately, besides the
|
|
GitHub SLUG (*<Organization>/<Repository>*), also the full path to the template needs to be gives, but still it can't be
|
|
outside of ``.github/workflows`` to create a cleaner repository structure. Finally, the path contains a branch name
|
|
postfixed by ``@<branch>`` (tags are still not supported by GitHub Actions). A ``jobs:<Name>:with:`` section can be used
|
|
to handover input parameters to the template.
|
|
|
|
.. code-block:: yaml
|
|
|
|
on:
|
|
push:
|
|
workflow_dispatch:
|
|
schedule:
|
|
# Every Friday at 22:00 - rerun pipeline to check for dependency-based issues
|
|
- cron: '0 22 * * 5'
|
|
|
|
jobs:
|
|
<InstanceName>:
|
|
uses: <GitHubOrganization>/<Repository>/.github/workflows/<Template>.yml@r6
|
|
with:
|
|
<Param1>: <Value>
|
|
|
|
|
|
Example Pipelines
|
|
*****************
|
|
|
|
Documentation Only (Sphinx)
|
|
===========================
|
|
|
|
.. code-block:: yaml
|
|
|
|
name: Pipeline
|
|
|
|
on:
|
|
push:
|
|
workflow_dispatch:
|
|
schedule:
|
|
# Every Friday at 22:00 - rerun pipeline to check for dependency-based issues
|
|
- cron: '0 22 * * 5'
|
|
|
|
jobs:
|
|
BuildTheDocs:
|
|
uses: pyTooling/Actions/.github/workflows/BuildTheDocs.yml@r6
|
|
with:
|
|
artifact: Documentation
|
|
|
|
PublishToGitHubPages:
|
|
uses: pyTooling/Actions/.github/workflows/PublishToGitHubPages.yml@r6
|
|
needs:
|
|
- BuildTheDocs
|
|
with:
|
|
doc: Documentation
|
|
|
|
ArtifactCleanUp:
|
|
name: 🗑️ Artifact Cleanup
|
|
needs:
|
|
- BuildTheDocs
|
|
- PublishToGitHubPages
|
|
runs-on: ubuntu-24.04
|
|
|
|
steps:
|
|
- name: 🗑️ Delete artifacts
|
|
uses: geekyeggo/delete-artifact@v5
|
|
with:
|
|
name: Documentation
|
|
|
|
|
|
Simple Package
|
|
==============
|
|
|
|
|
|
Package with Unit Tests
|
|
=======================
|
|
|
|
|
|
Package with Code Coverage
|
|
==========================
|
|
|
|
Complex Pipeline
|
|
================
|
|
|
|
|
|
Further Reference Examples
|
|
**************************
|
|
|
|
Find further usage cases in the following list of projects:
|
|
|
|
- `edaa-org/pyEDAA.ProjectModel <https://github.com/edaa-org/pyEDAA.ProjectModel/tree/main/.github/workflows>`__
|
|
- `edaa-org/pySVModel <https://github.com/edaa-org/pySVModel/tree/main/.github/workflows>`__
|
|
- `VHDL/pyVHDLModel <https://github.com/VHDL/pyVHDLModel/tree/main/.github/workflows>`__
|