From 6d75b849f59ec466ad36f4a6d5180b2c18c24b5a Mon Sep 17 00:00:00 2001 From: Patrick Lehmann Date: Sat, 23 Aug 2025 01:09:58 +0200 Subject: [PATCH] Updated CompletePipeline. --- doc/JobTemplate/AllInOne/CompletePipeline.rst | 526 +++++++++--------- doc/JobTemplate/Setup/PrepareJob.rst | 230 ++++---- doc/JobTemplate/index.rst | 40 +- doc/_static/pyTooling-Actions-PrepareJob.png | Bin 0 -> 126748 bytes 4 files changed, 415 insertions(+), 381 deletions(-) create mode 100644 doc/_static/pyTooling-Actions-PrepareJob.png diff --git a/doc/JobTemplate/AllInOne/CompletePipeline.rst b/doc/JobTemplate/AllInOne/CompletePipeline.rst index 4e305ca..ea7168a 100644 --- a/doc/JobTemplate/AllInOne/CompletePipeline.rst +++ b/doc/JobTemplate/AllInOne/CompletePipeline.rst @@ -155,6 +155,7 @@ It can be used for simple Python packages as well as namespace packages. * :ref:`pyTooling/Actions/.github/workflows/PrepareJob.yml ` * :gh:`actions/checkout` + * :gh:`GitHub command line tool 'gh' ` * :ref:`pyTooling/Actions/.github/workflows/Parameters.yml ` * :ref:`pyTooling/Actions/.github/workflows/ExtractConfiguration.yml ` @@ -185,11 +186,8 @@ It can be used for simple Python packages as well as namespace packages. Instantiation ************* -Simple Example -============== - -The following instantiation example creates a job `Params` derived from job template `Parameters` version `r0`. It only -requires a `name` parameter to create the artifact names. +The following instantiation example creates a job ``Params`` derived from job template ``Parameters`` version ``@r5``. +It only requires a `name` parameter to create the artifact names. .. code-block:: yaml @@ -205,394 +203,381 @@ requires a `name` parameter to create the artifact names. with: name: pyTooling + .. _JOBTMPL/CompletePipeline/Parameters: -Parameters -********** +Parameter Summary +***************** -.. topic:: Parameter Summary +.. rubric:: Goto :ref:`input parameters ` - +---------------------------------------------------------------------+----------+----------+----------------------------------------------+ - | Parameter Name | Required | Type | Default | - +=====================================================================+==========+==========+==============================================+ - | :ref:`JOBTMPL/CompletePipeline/Param/package_namespace` | no | string | ``''`` | - +---------------------------------------------------------------------+----------+----------+----------------------------------------------+ - | :ref:`JOBTMPL/CompletePipeline/Param/package_name` | yes | string | — — — — | - +---------------------------------------------------------------------+----------+----------+----------------------------------------------+ - | :ref:`JOBTMPL/CompletePipeline/Param/unittest_python_version` | no | string | ``'3.13'`` | - +---------------------------------------------------------------------+----------+----------+----------------------------------------------+ - | :ref:`JOBTMPL/CompletePipeline/Param/unittest_python_version_list` | no | string | ``'3.9 3.10 3.11 3.12 3.13'`` | - +---------------------------------------------------------------------+----------+----------+----------------------------------------------+ - | :ref:`JOBTMPL/CompletePipeline/Param/unittest_system_list` | no | string | ``'ubuntu windows macos macos-arm ucrt64'`` | - +---------------------------------------------------------------------+----------+----------+----------------------------------------------+ - | :ref:`JOBTMPL/CompletePipeline/Param/unittest_include_list` | no | string | ``''`` | - +---------------------------------------------------------------------+----------+----------+----------------------------------------------+ - | :ref:`JOBTMPL/CompletePipeline/Param/unittest_exclude_list` | no | string | ``''`` | - +---------------------------------------------------------------------+----------+----------+----------------------------------------------+ - | :ref:`JOBTMPL/CompletePipeline/Param/unittest_disable_list` | no | string | ``''`` | - +---------------------------------------------------------------------+----------+----------+----------------------------------------------+ - | :ref:`JOBTMPL/CompletePipeline/Param/apptest_python_version` | no | string | ``'3.13'`` | - +---------------------------------------------------------------------+----------+----------+----------------------------------------------+ - | :ref:`JOBTMPL/CompletePipeline/Param/apptest_python_version_list` | no | string | ``''`` | - +---------------------------------------------------------------------+----------+----------+----------------------------------------------+ - | :ref:`JOBTMPL/CompletePipeline/Param/apptest_system_list` | no | string | ``'ubuntu windows macos macos-arm ucrt64'`` | - +---------------------------------------------------------------------+----------+----------+----------------------------------------------+ - | :ref:`JOBTMPL/CompletePipeline/Param/apptest_include_list` | no | string | ``''`` | - +---------------------------------------------------------------------+----------+----------+----------------------------------------------+ - | :ref:`JOBTMPL/CompletePipeline/Param/apptest_exclude_list` | no | string | ``''`` | - +---------------------------------------------------------------------+----------+----------+----------------------------------------------+ - | :ref:`JOBTMPL/CompletePipeline/Param/apptest_disable_list` | no | string | ``''`` | - +---------------------------------------------------------------------+----------+----------+----------------------------------------------+ - | :ref:`JOBTMPL/CompletePipeline/Param/codecov` | no | string | ``'false'`` | - +---------------------------------------------------------------------+----------+----------+----------------------------------------------+ - | :ref:`JOBTMPL/CompletePipeline/Param/codacy` | no | string | ``'false'`` | - +---------------------------------------------------------------------+----------+----------+----------------------------------------------+ - | :ref:`JOBTMPL/CompletePipeline/Param/dorny` | no | string | ``'false'`` | - +---------------------------------------------------------------------+----------+----------+----------------------------------------------+ - | :ref:`JOBTMPL/CompletePipeline/Param/cleanup` | no | string | ``'true'`` | - +---------------------------------------------------------------------+----------+----------+----------------------------------------------+ ++---------------------------------------------------------------------+----------+----------+----------------------------------------------+ +| Parameter Name | Required | Type | Default | ++=====================================================================+==========+==========+==============================================+ +| :ref:`JOBTMPL/CompletePipeline/Input/package_namespace` | no | string | ``''`` | ++---------------------------------------------------------------------+----------+----------+----------------------------------------------+ +| :ref:`JOBTMPL/CompletePipeline/Input/package_name` | yes | string | — — — — | ++---------------------------------------------------------------------+----------+----------+----------------------------------------------+ +| :ref:`JOBTMPL/CompletePipeline/Input/unittest_python_version` | no | string | ``'3.13'`` | ++---------------------------------------------------------------------+----------+----------+----------------------------------------------+ +| :ref:`JOBTMPL/CompletePipeline/Input/unittest_python_version_list` | no | string | ``'3.9 3.10 3.11 3.12 3.13'`` | ++---------------------------------------------------------------------+----------+----------+----------------------------------------------+ +| :ref:`JOBTMPL/CompletePipeline/Input/unittest_system_list` | no | string | ``'ubuntu windows macos macos-arm ucrt64'`` | ++---------------------------------------------------------------------+----------+----------+----------------------------------------------+ +| :ref:`JOBTMPL/CompletePipeline/Input/unittest_include_list` | no | string | ``''`` | ++---------------------------------------------------------------------+----------+----------+----------------------------------------------+ +| :ref:`JOBTMPL/CompletePipeline/Input/unittest_exclude_list` | no | string | ``''`` | ++---------------------------------------------------------------------+----------+----------+----------------------------------------------+ +| :ref:`JOBTMPL/CompletePipeline/Input/unittest_disable_list` | no | string | ``''`` | ++---------------------------------------------------------------------+----------+----------+----------------------------------------------+ +| :ref:`JOBTMPL/CompletePipeline/Input/apptest_python_version` | no | string | ``'3.13'`` | ++---------------------------------------------------------------------+----------+----------+----------------------------------------------+ +| :ref:`JOBTMPL/CompletePipeline/Input/apptest_python_version_list` | no | string | ``''`` | ++---------------------------------------------------------------------+----------+----------+----------------------------------------------+ +| :ref:`JOBTMPL/CompletePipeline/Input/apptest_system_list` | no | string | ``'ubuntu windows macos macos-arm ucrt64'`` | ++---------------------------------------------------------------------+----------+----------+----------------------------------------------+ +| :ref:`JOBTMPL/CompletePipeline/Input/apptest_include_list` | no | string | ``''`` | ++---------------------------------------------------------------------+----------+----------+----------------------------------------------+ +| :ref:`JOBTMPL/CompletePipeline/Input/apptest_exclude_list` | no | string | ``''`` | ++---------------------------------------------------------------------+----------+----------+----------------------------------------------+ +| :ref:`JOBTMPL/CompletePipeline/Input/apptest_disable_list` | no | string | ``''`` | ++---------------------------------------------------------------------+----------+----------+----------------------------------------------+ +| :ref:`JOBTMPL/CompletePipeline/Input/codecov` | no | string | ``'false'`` | ++---------------------------------------------------------------------+----------+----------+----------------------------------------------+ +| :ref:`JOBTMPL/CompletePipeline/Input/codacy` | no | string | ``'false'`` | ++---------------------------------------------------------------------+----------+----------+----------------------------------------------+ +| :ref:`JOBTMPL/CompletePipeline/Input/dorny` | no | string | ``'false'`` | ++---------------------------------------------------------------------+----------+----------+----------------------------------------------+ +| :ref:`JOBTMPL/CompletePipeline/Input/cleanup` | no | string | ``'true'`` | ++---------------------------------------------------------------------+----------+----------+----------------------------------------------+ -.. topic:: :ref:`Secret Summary ` +.. rubric:: Goto Goto :ref:`secrets ` - +-----------------------------------------------------------+----------+----------+--------------+ - | Token Name | Required | Type | Default | - +===========================================================+==========+==========+==============+ - | :ref:`JOBTMPL/CompletePipeline/Secret/PYPI_TOKEN` | no | string | — — — — | - +-----------------------------------------------------------+----------+----------+--------------+ - | :ref:`JOBTMPL/CompletePipeline/Secret/CODECOV_TOKEN` | no | string | — — — — | - +-----------------------------------------------------------+----------+----------+--------------+ - | :ref:`JOBTMPL/CompletePipeline/Secret/CODACY_TOKEN` | no | string | — — — — | - +-----------------------------------------------------------+----------+----------+--------------+ ++-----------------------------------------------------------+----------+----------+--------------+ +| Token Name | Required | Type | Default | ++===========================================================+==========+==========+==============+ +| :ref:`JOBTMPL/CompletePipeline/Secret/PYPI_TOKEN` | no | string | — — — — | ++-----------------------------------------------------------+----------+----------+--------------+ +| :ref:`JOBTMPL/CompletePipeline/Secret/CODECOV_TOKEN` | no | string | — — — — | ++-----------------------------------------------------------+----------+----------+--------------+ +| :ref:`JOBTMPL/CompletePipeline/Secret/CODACY_TOKEN` | no | string | — — — — | ++-----------------------------------------------------------+----------+----------+--------------+ -.. topic:: :ref:`Output Summary ` +.. rubric:: Goto Goto :ref:`output parameters ` - This job template has no output parameters. +This job template has no output parameters. -.. _JOBTMPL/CompletePipeline/Param/package_namespace: +.. _JOBTMPL/CompletePipeline/Inputs: + +Input Parameters +**************** + +.. _JOBTMPL/CompletePipeline/Input/package_namespace: package_namespace ================= -+-------------------------------+----------+----------+--------------+ -| Parameter Name | Required | Type | Default | -+===============================+==========+==========+==============+ -| package_namespace | no | string | ``''`` | -+-------------------------------+----------+----------+--------------+ +:Type: string +:Required: no +:Default Value: ``''`` +:Possible Values: Any valid Python namespace. +:Description: In case the package is a Python namespace package, the name of the library's or package's namespace + needs to be specified using this parameter. |br| + In case of a simple Python package, this parameter must be specified as an empty string (``''``), + which is the default. -In case the package is a Python namespace package, the name of the library's or package's namespace needs to be -specified using this parameter. |br| -In case of a simple Python package, this parameter must be specified as an empty string (``''``), which is the default. +:Example: + .. grid:: 2 -.. grid:: 2 + .. grid-item:: + :columns: 5 - .. grid-item:: - :columns: 4 + .. rubric:: Example Instantiation - .. rubric:: Example + .. code-block:: yaml - .. code-block:: yaml + name: Pipeline - jobs: - NamespacePackage: - uses: pyTooling/Actions/.github/workflows/CompletePipeline.yml@r5 - with: - package_namespace: myFramework - package_name: Extension + jobs: + NamespacePackage: + uses: pyTooling/Actions/.github/workflows/CompletePipeline.yml@r5 + with: + package_namespace: myFramework + package_name: Extension - .. grid-item:: - :columns: 4 + .. grid-item:: + :columns: 4 - .. rubric:: Example + .. rubric:: Example Directory Structure - .. code-block:: + .. code-block:: - 📂ProjectRoot/ - 📂myFramework/ - 📂Extension/ - 📦SubPackage/ - 🐍__init__.py - 🐍SubModuleA.py - 🐍__init__.py - 🐍ModuleB.py + 📂ProjectRoot/ + 📂myFramework/ + 📂Extension/ + 📦SubPackage/ + 🐍__init__.py + 🐍SubModuleA.py + 🐍__init__.py + 🐍ModuleB.py -.. _JOBTMPL/CompletePipeline/Param/package_name: +.. _JOBTMPL/CompletePipeline/Input/package_name: package_name ============ -+-------------------------------+----------+----------+--------------+ -| Parameter Name | Required | Type | Default | -+===============================+==========+==========+==============+ -| package_name | yes | string | — — — — | -+-------------------------------+----------+----------+--------------+ +:Type: string +:Required: yes +:Default Value: — — — — +:Possible Values: Any valid Python package name. +:Description: In case of a simple Python package, this package's name is specified using this parameter. |br| + In case the package is a Python namespace package, the parameter + :ref:`JOBTMPL/CompletePipeline/Input/package_namespace` must be specified, too. +:Example: + .. grid:: 2 -In case of a simple Python package, this package's name is specified using this parameter. |br| -In case the package is a Python namespace package, the parameter :ref:`JOBTMPL/CompletePipeline/Param/package_namespace` -must be specified, too. + .. grid-item:: + :columns: 5 -.. rubric:: Example + .. rubric:: Example Instantiation -.. grid:: 2 + .. code-block:: yaml - .. grid-item:: - :columns: 4 + name: Pipeline - .. rubric:: Example + jobs: + SimplePackage: + uses: pyTooling/Actions/.github/workflows/CompletePipeline.yml@r5 + with: + package_name: myPackage - .. code-block:: yaml + .. grid-item:: + :columns: 4 - jobs: - SimplePackage: - uses: pyTooling/Actions/.github/workflows/CompletePipeline.yml@r5 - with: - package_name: myPackage + .. rubric:: Example Directory Structure - .. grid-item:: - :columns: 4 + .. code-block:: - .. rubric:: Example + 📂ProjectRoot/ + 📂myFramework/ + 📦SubPackage/ + 🐍__init__.py + 🐍SubModuleA.py + 🐍__init__.py + 🐍ModuleB.py - .. code-block:: - 📂ProjectRoot/ - 📂myFramework/ - 📦SubPackage/ - 🐍__init__.py - 🐍SubModuleA.py - 🐍__init__.py - 🐍ModuleB.py - -.. _JOBTMPL/CompletePipeline/Param/unittest_python_version: +.. _JOBTMPL/CompletePipeline/Input/unittest_python_version: unittest_python_version ======================= -+-------------------------------+----------+----------+--------------+ -| Parameter Name | Required | Type | Default | -+===============================+==========+==========+==============+ -| unittest_python_version | no | string | ``'3.13'`` | -+-------------------------------+----------+----------+--------------+ +:Type: string +:Required: no +:Default Value: ``'3.13'`` +:Possible Values: Any valid Python version conforming to the pattern ``major.minor``. +:Description: The default Python version used for intermediate jobs using Python tools. -The default Python version used for intermediate jobs using Python tools. - -In case :ref:`JOBTMPL/CompletePipeline/Param/unittest_python_version_list` is empty, this default version is used to -populate the ``unittest_python_version_list`` parameter. + In case :ref:`JOBTMPL/CompletePipeline/Input/unittest_python_version_list` is empty, this default + version is used to populate the :ref:`JOBTMPL/CompletePipeline/Input/unittest_python_version_list` + parameter. -.. _JOBTMPL/CompletePipeline/Param/unittest_python_version_list: +.. _JOBTMPL/CompletePipeline/Input/unittest_python_version_list: unittest_python_version_list ============================ -+-------------------------------+----------+----------+-------------------------------------+ -| Parameter Name | Required | Type | Default | -+===============================+==========+==========+=====================================+ -| unittest_python_version_list | no | string | ``'3.9 3.10 3.11 3.12 3.13'`` | -+-------------------------------+----------+----------+-------------------------------------+ +:Type: string +:Required: no +:Default Value: ``'3.9 3.10 3.11 3.12 3.13'`` +:Possible Values: A space separated list of valid Python versions conforming to the pattern ``major.minor``. +:Description: The list of space-separated Python versions used for unit testing. -The list of space-separated Python versions used for unit testing. - -.. include:: ../PythonVersionList.rst + .. include:: ../PythonVersionList.rst -.. _JOBTMPL/CompletePipeline/Param/unittest_system_list: +.. _JOBTMPL/CompletePipeline/Input/unittest_system_list: unittest_system_list ==================== -+-------------------------------+----------+----------+-----------------------------------------------------+ -| Parameter Name | Required | Type | Default | -+===============================+==========+==========+=====================================================+ -| unittest_system_list | no | string | ``'ubuntu windows macos macos-arm mingw64 ucrt64'`` | -+-------------------------------+----------+----------+-----------------------------------------------------+ +:Type: string +:Required: no +:Default Value: ``'ubuntu windows macos macos-arm mingw64 ucrt64'`` +:Possible Values: A space separated list of system names. +:Description: The list of space-separated systems used for unit testing. -The list of space-separated systems used for unit testing. - -.. include:: ../SystemList.rst + .. include:: ../SystemList.rst -.. _JOBTMPL/CompletePipeline/Param/unittest_include_list: +.. _JOBTMPL/CompletePipeline/Input/unittest_include_list: unittest_include_list ===================== -+-------------------------------+----------+----------+--------------+ -| Parameter Name | Required | Type | Default | -+===============================+==========+==========+==============+ -| unittest_include_list | no | string | ``''`` | -+-------------------------------+----------+----------+--------------+ - -The name of the library or package. +:Type: string +:Required: no +:Default Value: ``''`` +:Possible Values: A space separated list of ``system:python_version`` tuples. +:Description: -.. _JOBTMPL/CompletePipeline/Param/unittest_exclude_list: +.. _JOBTMPL/CompletePipeline/Input/unittest_exclude_list: unittest_exclude_list ===================== -+-------------------------------+----------+----------+--------------+ -| Parameter Name | Required | Type | Default | -+===============================+==========+==========+==============+ -| unittest_exclude_list | no | string | ``''`` | -+-------------------------------+----------+----------+--------------+ - -The name of the library or package. +:Type: string +:Required: no +:Default Value: ``''`` +:Possible Values: A space separated list of ``system:python_version`` tuples. +:Description: -.. _JOBTMPL/CompletePipeline/Param/unittest_disable_list: +.. _JOBTMPL/CompletePipeline/Input/unittest_disable_list: unittest_disable_list ===================== -+-------------------------------+----------+----------+--------------+ -| Parameter Name | Required | Type | Default | -+===============================+==========+==========+==============+ -| unittest_disable_list | no | string | ``''`` | -+-------------------------------+----------+----------+--------------+ - -The name of the library or package. +:Type: string +:Required: no +:Default Value: ``''`` +:Possible Values: A space separated list of ``system:python_version`` tuples. +:Description: -.. _JOBTMPL/CompletePipeline/Param/apptest_python_version: +.. _JOBTMPL/CompletePipeline/Input/apptest_python_version: apptest_python_version ====================== -+-------------------------------+----------+----------+--------------+ -| Parameter Name | Required | Type | Default | -+===============================+==========+==========+==============+ -| apptest_python_version | no | string | ``'3.13'`` | -+-------------------------------+----------+----------+--------------+ +:Type: string +:Required: no +:Default Value: ``'3.13'`` +:Possible Values: Any valid Python version conforming to the pattern ``major.minor``. +:Description: The default Python version used for intermediate jobs using Python tools. -The name of the library or package. + In case :ref:`JOBTMPL/CompletePipeline/Input/apptest_python_version_list` is empty, this default + version is used to populate the :ref:`JOBTMPL/CompletePipeline/Input/apptest_python_version_list` + parameter. -.. _JOBTMPL/CompletePipeline/Param/apptest_python_version_list: +.. _JOBTMPL/CompletePipeline/Input/apptest_python_version_list: apptest_python_version_list =========================== -+-------------------------------+----------+----------+--------------+ -| Parameter Name | Required | Type | Default | -+===============================+==========+==========+==============+ -| apptest_python_version_list | no | string | ``''`` | -+-------------------------------+----------+----------+--------------+ +:Type: string +:Required: no +:Default Value: ``''`` +:Possible Values: A space separated list of valid Python versions conforming to the pattern ``major.minor``. +:Description: The list of space-separated Python versions used for application testing. -The name of the library or package. + As this list is empty by default, the value is derived from + :ref:`JOBTMPL/CompletePipeline/Input/apptest_python_version`. + + .. include:: ../PythonVersionList.rst -.. _JOBTMPL/CompletePipeline/Param/apptest_system_list: +.. _JOBTMPL/CompletePipeline/Input/apptest_system_list: apptest_system_list =================== -+-------------------------------+----------+----------+--------------------------------------------------+ -| Parameter Name | Required | Type | Default | -+===============================+==========+==========+==================================================+ -| apptest_system_list | no | string | ``'ubuntu windows macos macos-arm ucrt64'`` | -+-------------------------------+----------+----------+--------------------------------------------------+ +:Type: string +:Required: no +:Default Value: ``'ubuntu windows macos macos-arm mingw64 ucrt64'`` +:Possible Values: A space separated list of system names. +:Description: The list of space-separated systems used for application testing. -The name of the library or package. + .. include:: ../SystemList.rst -.. _JOBTMPL/CompletePipeline/Param/apptest_include_list: +.. _JOBTMPL/CompletePipeline/Input/apptest_include_list: apptest_include_list ==================== -+-------------------------------+----------+----------+--------------+ -| Parameter Name | Required | Type | Default | -+===============================+==========+==========+==============+ -| apptest_include_list | no | string | ``''`` | -+-------------------------------+----------+----------+--------------+ - -The name of the library or package. +:Type: string +:Required: no +:Default Value: ``''`` +:Possible Values: A space separated list of ``system:python_version`` tuples. +:Description: -.. _JOBTMPL/CompletePipeline/Param/apptest_exclude_list: +.. _JOBTMPL/CompletePipeline/Input/apptest_exclude_list: apptest_exclude_list ==================== -+-------------------------------+----------+----------+--------------+ -| Parameter Name | Required | Type | Default | -+===============================+==========+==========+==============+ -| apptest_exclude_list | no | string | ``''`` | -+-------------------------------+----------+----------+--------------+ - -The name of the library or package. +:Type: string +:Required: no +:Default Value: ``''`` +:Possible Values: A space separated list of ``system:python_version`` tuples. +:Description: -.. _JOBTMPL/CompletePipeline/Param/apptest_disable_list: +.. _JOBTMPL/CompletePipeline/Input/apptest_disable_list: apptest_disable_list ==================== -+-------------------------------+----------+----------+--------------+ -| Parameter Name | Required | Type | Default | -+===============================+==========+==========+==============+ -| apptest_disable_list | no | string | ``''`` | -+-------------------------------+----------+----------+--------------+ - -The name of the library or package. +:Type: string +:Required: no +:Default Value: ``''`` +:Possible Values: A space separated list of ``system:python_version`` tuples. +:Description: -.. _JOBTMPL/CompletePipeline/Param/codecov: +.. _JOBTMPL/CompletePipeline/Input/codecov: codecov ======= -+-------------------------------+----------+----------+--------------+ -| Parameter Name | Required | Type | Default | -+===============================+==========+==========+==============+ -| codecov | no | string | ``'false'`` | -+-------------------------------+----------+----------+--------------+ - -The name of the library or package. +:Type: string +:Required: no +:Default Value: ``'false'`` +:Possible Values: ``'true'``, ``'false'`` +:Description: -.. _JOBTMPL/CompletePipeline/Param/codacy: +.. _JOBTMPL/CompletePipeline/Input/codacy: codacy ====== -+-------------------------------+----------+----------+--------------+ -| Parameter Name | Required | Type | Default | -+===============================+==========+==========+==============+ -| codacy | no | string | ``'false'`` | -+-------------------------------+----------+----------+--------------+ - -The name of the library or package. +:Type: string +:Required: no +:Default Value: ``'false'`` +:Possible Values: ``'true'``, ``'false'`` +:Description: -.. _JOBTMPL/CompletePipeline/Param/dorny: +.. _JOBTMPL/CompletePipeline/Input/dorny: dorny ===== -+-------------------------------+----------+----------+--------------+ -| Parameter Name | Required | Type | Default | -+===============================+==========+==========+==============+ -| dorny | no | string | ``'false'`` | -+-------------------------------+----------+----------+--------------+ - -The name of the library or package. +:Type: string +:Required: no +:Default Value: ``'false'`` +:Possible Values: ``'true'``, ``'false'`` +:Description: -.. _JOBTMPL/CompletePipeline/Param/cleanup: +.. _JOBTMPL/CompletePipeline/Input/cleanup: cleanup ======= -+-------------------------------+----------+----------+--------------+ -| Parameter Name | Required | Type | Default | -+===============================+==========+==========+==============+ -| cleanup | no | string | ``'true'`` | -+-------------------------------+----------+----------+--------------+ - -The name of the library or package. +:Type: string +:Required: no +:Default Value: ``'true'`` +:Possible Values: ``'true'``, ``'false'`` +:Description: .. _JOBTMPL/CompletePipeline/Secrets: @@ -602,18 +587,16 @@ Secrets The workflow template uses the following secrets to publish results to other services. + .. _JOBTMPL/CompletePipeline/Secret/PYPI_TOKEN: PYPI_TOKEN ========== -+-------------------------------+----------+----------+--------------+ -| Token Name | Required | Type | Default | -+===============================+==========+==========+==============+ -| PYPI_TOKEN | no | string | — — — — | -+-------------------------------+----------+----------+--------------+ - -The name of the library or package. +:Type: string +:Required: no +:Default Value: — — — — +:Description: The token to publish and upload packages on `PyPI `__. .. _JOBTMPL/CompletePipeline/Secret/CODECOV_TOKEN: @@ -621,13 +604,10 @@ The name of the library or package. CODECOV_TOKEN ============= -+-------------------------------+----------+----------+--------------+ -| Token Name | Required | Type | Default | -+===============================+==========+==========+==============+ -| CODECOV_TOKEN | no | string | — — — — | -+-------------------------------+----------+----------+--------------+ - -The name of the library or package. +:Type: string +:Required: no +:Default Value: — — — — +:Description: The token to publish code coverage and unit test results to `CodeCov `__. .. _JOBTMPL/CompletePipeline/Secret/CODACY_TOKEN: @@ -635,17 +615,15 @@ The name of the library or package. CODACY_TOKEN ============ -+-------------------------------+----------+----------+--------------+ -| Token Name | Required | Type | Default | -+===============================+==========+==========+==============+ -| CODACY_TOKEN | no | string | — — — — | -+-------------------------------+----------+----------+--------------+ +:Type: string +:Required: no +:Default Value: — — — — +:Description: The token to publish code coverage results to `Codacy `__. -The name of the library or package. -.. _JOBTMPL/CompletePipeline/Results: +.. _JOBTMPL/CompletePipeline/Outputs: -Results +Outputs ******* This job template has no output parameters. diff --git a/doc/JobTemplate/Setup/PrepareJob.rst b/doc/JobTemplate/Setup/PrepareJob.rst index 026a989..2defbdb 100644 --- a/doc/JobTemplate/Setup/PrepareJob.rst +++ b/doc/JobTemplate/Setup/PrepareJob.rst @@ -25,7 +25,7 @@ The job template generates various output parameters derived from Due to GitHub Action's broken type system and missing implicit type conversions in YAML files, *boolean* values need to be returned as *string* values otherwise type compatibility and comparison are broken. This also requires all - inputs to be *string* parameters, otherwise an step's, job's or template's output cannot be assigned to a template's + inputs to be *string* parameters, otherwise step's, job's or template's output cannot be assigned to a template's input. **Problems:** @@ -39,6 +39,11 @@ The job template generates various output parameters derived from comparison will not work as expected. Either the comparison works with ``inputs.param == false`` for the default value, **or** it works with a value from ``${{ needs }}`` context, which is a string ``inputs.param == 'false'``. +.. topic:: Job Execution + + .. image:: ../../_static/pyTooling-Actions-PrepareJob.png + :width: 600px + .. topic:: Dependencies * :gh:`actions/checkout` @@ -50,10 +55,10 @@ The job template generates various output parameters derived from Instantiation ************* -Simple Example -============== - -The following instantiation example creates a job `Params` derived from job template `PrepareJob` version `r5`. +The following instantiation example creates a job ``Prepare`` derived from job template ``PrepareJob`` version ``@r5``. +In a default usecase, no input parameters need to be specified for the job template assuming a main-branch and +release-branch called ``main``, a development-branch called ``dev``, as well as semantic versioning for tags and +pull-request titles. .. code-block:: yaml @@ -75,69 +80,84 @@ The following instantiation example creates a job `Params` derived from job temp with: version: ${{ needs.Prepare.outputs.version }} +.. seealso:: + + :ref:`JOBTMPL/TagReleaseCommit` + ``PrepareJob`` is usualy used to identify if a pipeline's commit is a merge commit created by a pull-request. If + so, this commit can be tagged automatically to trigger a release pipeline (tag pipeline) for the same commit + resulting in a full release (PyPI, GitHub Pages, GitHub Release, ...). + :ref:`JOBTMPL/PublishReleaseNotes` + ``PrepareJob`` is usually used to identify if a tag pipeline is a release pipeline. + .. _JOBTMPL/PrepareJob/Parameters: -Parameters -********** +Parameter Summary +***************** -.. topic:: Parameter Summary +.. rubric:: Goto :ref:`input parameters ` - +---------------------------------------------------------------------+----------+----------+-------------------------------------------------------------------+ - | Parameter Name | Required | Type | Default | - +=====================================================================+==========+==========+===================================================================+ - | :ref:`JOBTMPL/PrepareJob/Param/ubuntu_image` | no | string | ``'ubuntu-24.04'`` | - +---------------------------------------------------------------------+----------+----------+-------------------------------------------------------------------+ - | :ref:`JOBTMPL/PrepareJob/Param/main_branch` | no | string | ``'main'`` | - +---------------------------------------------------------------------+----------+----------+-------------------------------------------------------------------+ - | :ref:`JOBTMPL/PrepareJob/Param/development_branch` | no | string | ``'dev'`` | - +---------------------------------------------------------------------+----------+----------+-------------------------------------------------------------------+ - | :ref:`JOBTMPL/PrepareJob/Param/release_branch` | no | string | ``'main'`` | - +---------------------------------------------------------------------+----------+----------+-------------------------------------------------------------------+ - | :ref:`JOBTMPL/PrepareJob/Param/nightly_tag_pattern` | no | string | ``'nightly'`` | - +---------------------------------------------------------------------+----------+----------+-------------------------------------------------------------------+ - | :ref:`JOBTMPL/PrepareJob/Param/release_tag_pattern` | no | string | ``'(v|r)?[0-9]+(\.[0-9]+){0,2}(-(dev|alpha|beta|rc)([0-9]*))?'`` | - +---------------------------------------------------------------------+----------+----------+-------------------------------------------------------------------+ ++---------------------------------------------------------------------+----------+----------+-------------------------------------------------------------------+ +| Parameter Name | Required | Type | Default | ++=====================================================================+==========+==========+===================================================================+ +| :ref:`JOBTMPL/PrepareJob/Input/ubuntu_image` | no | string | ``'ubuntu-24.04'`` | ++---------------------------------------------------------------------+----------+----------+-------------------------------------------------------------------+ +| :ref:`JOBTMPL/PrepareJob/Input/main_branch` | no | string | ``'main'`` | ++---------------------------------------------------------------------+----------+----------+-------------------------------------------------------------------+ +| :ref:`JOBTMPL/PrepareJob/Input/development_branch` | no | string | ``'dev'`` | ++---------------------------------------------------------------------+----------+----------+-------------------------------------------------------------------+ +| :ref:`JOBTMPL/PrepareJob/Input/release_branch` | no | string | ``'main'`` | ++---------------------------------------------------------------------+----------+----------+-------------------------------------------------------------------+ +| :ref:`JOBTMPL/PrepareJob/Input/nightly_tag_pattern` | no | string | ``'nightly'`` | ++---------------------------------------------------------------------+----------+----------+-------------------------------------------------------------------+ +| :ref:`JOBTMPL/PrepareJob/Input/release_tag_pattern` | no | string | ``'(v|r)?[0-9]+(\.[0-9]+){0,2}(-(dev|alpha|beta|rc)([0-9]*))?'`` | ++---------------------------------------------------------------------+----------+----------+-------------------------------------------------------------------+ -.. topic:: :ref:`Secret Summary ` +.. rubric:: Goto Goto :ref:`secrets ` - This job template needs no secrets. +This job template needs no secrets. -.. topic:: :ref:`Output Summary ` +.. rubric:: Goto Goto :ref:`output parameters ` - +---------------------------------------------------------------------+----------+-------------------------------------------------------------------+ - | Result Name | Type | Description | - +=====================================================================+==========+===================================================================+ - | :ref:`JOBTMPL/PrepareJob/Result/on_main_branch` | string | | - +---------------------------------------------------------------------+----------+-------------------------------------------------------------------+ - | :ref:`JOBTMPL/PrepareJob/Result/on_dev_branch` | string | | - +---------------------------------------------------------------------+----------+-------------------------------------------------------------------+ - | :ref:`JOBTMPL/PrepareJob/Result/on_release_branch` | string | | - +---------------------------------------------------------------------+----------+-------------------------------------------------------------------+ - | :ref:`JOBTMPL/PrepareJob/Result/is_regular_commit` | string | | - +---------------------------------------------------------------------+----------+-------------------------------------------------------------------+ - | :ref:`JOBTMPL/PrepareJob/Result/is_merge_commit` | string | | - +---------------------------------------------------------------------+----------+-------------------------------------------------------------------+ - | :ref:`JOBTMPL/PrepareJob/Result/is_release_commit` | string | | - +---------------------------------------------------------------------+----------+-------------------------------------------------------------------+ - | :ref:`JOBTMPL/PrepareJob/Result/is_nightly_tag` | string | | - +---------------------------------------------------------------------+----------+-------------------------------------------------------------------+ - | :ref:`JOBTMPL/PrepareJob/Result/is_release_tag` | string | | - +---------------------------------------------------------------------+----------+-------------------------------------------------------------------+ - | :ref:`JOBTMPL/PrepareJob/Result/ref_kind` | string | | - +---------------------------------------------------------------------+----------+-------------------------------------------------------------------+ - | :ref:`JOBTMPL/PrepareJob/Result/branch` | string | | - +---------------------------------------------------------------------+----------+-------------------------------------------------------------------+ - | :ref:`JOBTMPL/PrepareJob/Result/tag` | string | | - +---------------------------------------------------------------------+----------+-------------------------------------------------------------------+ - | :ref:`JOBTMPL/PrepareJob/Result/version` | string | | - +---------------------------------------------------------------------+----------+-------------------------------------------------------------------+ - | :ref:`JOBTMPL/PrepareJob/Result/pr_title` | string | | - +---------------------------------------------------------------------+----------+-------------------------------------------------------------------+ - | :ref:`JOBTMPL/PrepareJob/Result/pr_number` | string | | - +---------------------------------------------------------------------+----------+-------------------------------------------------------------------+ ++---------------------------------------------------------------------+----------+-------------------------------------------------------------------+ +| Result Name | Type | Description | ++=====================================================================+==========+===================================================================+ +| :ref:`JOBTMPL/PrepareJob/Output/on_main_branch` | string | | ++---------------------------------------------------------------------+----------+-------------------------------------------------------------------+ +| :ref:`JOBTMPL/PrepareJob/Output/on_dev_branch` | string | | ++---------------------------------------------------------------------+----------+-------------------------------------------------------------------+ +| :ref:`JOBTMPL/PrepareJob/Output/on_release_branch` | string | | ++---------------------------------------------------------------------+----------+-------------------------------------------------------------------+ +| :ref:`JOBTMPL/PrepareJob/Output/is_regular_commit` | string | | ++---------------------------------------------------------------------+----------+-------------------------------------------------------------------+ +| :ref:`JOBTMPL/PrepareJob/Output/is_merge_commit` | string | | ++---------------------------------------------------------------------+----------+-------------------------------------------------------------------+ +| :ref:`JOBTMPL/PrepareJob/Output/is_release_commit` | string | | ++---------------------------------------------------------------------+----------+-------------------------------------------------------------------+ +| :ref:`JOBTMPL/PrepareJob/Output/is_nightly_tag` | string | | ++---------------------------------------------------------------------+----------+-------------------------------------------------------------------+ +| :ref:`JOBTMPL/PrepareJob/Output/is_release_tag` | string | | ++---------------------------------------------------------------------+----------+-------------------------------------------------------------------+ +| :ref:`JOBTMPL/PrepareJob/Output/ref_kind` | string | | ++---------------------------------------------------------------------+----------+-------------------------------------------------------------------+ +| :ref:`JOBTMPL/PrepareJob/Output/branch` | string | | ++---------------------------------------------------------------------+----------+-------------------------------------------------------------------+ +| :ref:`JOBTMPL/PrepareJob/Output/tag` | string | | ++---------------------------------------------------------------------+----------+-------------------------------------------------------------------+ +| :ref:`JOBTMPL/PrepareJob/Output/version` | string | | ++---------------------------------------------------------------------+----------+-------------------------------------------------------------------+ +| :ref:`JOBTMPL/PrepareJob/Output/pr_title` | string | | ++---------------------------------------------------------------------+----------+-------------------------------------------------------------------+ +| :ref:`JOBTMPL/PrepareJob/Output/pr_number` | string | | ++---------------------------------------------------------------------+----------+-------------------------------------------------------------------+ -.. _JOBTMPL/PrepareJob/Param/ubuntu_image: + +.. _JOBTMPL/PrepareJob/Inputs: + +Input Parameters +**************** + +.. _JOBTMPL/PrepareJob/Input/ubuntu_image: ubuntu_image ============ @@ -149,7 +169,7 @@ ubuntu_image :Description: Name of the Ubuntu image used to run this job. -.. _JOBTMPL/PrepareJob/Param/main_branch: +.. _JOBTMPL/PrepareJob/Input/main_branch: main_branch =========== @@ -161,7 +181,7 @@ main_branch :Description: Name of the main branch. -.. _JOBTMPL/PrepareJob/Param/development_branch: +.. _JOBTMPL/PrepareJob/Input/development_branch: development_branch ================== @@ -173,7 +193,7 @@ development_branch :Description: Name of the development branch. -.. _JOBTMPL/PrepareJob/Param/release_branch: +.. _JOBTMPL/PrepareJob/Input/release_branch: release_branch ============== @@ -185,7 +205,7 @@ release_branch :Description: Name of the branch containing releases. -.. _JOBTMPL/PrepareJob/Param/nightly_tag_pattern: +.. _JOBTMPL/PrepareJob/Input/nightly_tag_pattern: nightly_tag_pattern =================== @@ -199,7 +219,7 @@ nightly_tag_pattern -.. _JOBTMPL/PrepareJob/Param/release_tag_pattern: +.. _JOBTMPL/PrepareJob/Input/release_tag_pattern: release_tag_pattern =================== @@ -232,12 +252,12 @@ Secrets This job template needs no secrets. -.. _JOBTMPL/PrepareJob/Results: +.. _JOBTMPL/PrepareJob/Outputs: -Results +Outputs ******* -.. _JOBTMPL/PrepareJob/Result/on_main_branch: +.. _JOBTMPL/PrepareJob/Output/on_main_branch: on_main_branch ============== @@ -245,11 +265,11 @@ on_main_branch :Type: string :Default Value: ``'false'`` :Possible Values: ``'true'``, ``'false'`` -:Description: Returns ``'true'`` if the pipeline's commit is on :ref:`main branch `, +:Description: Returns ``'true'`` if the pipeline's commit is on :ref:`main branch `, otherwise return ``'false'``. -.. _JOBTMPL/PrepareJob/Result/on_dev_branch: +.. _JOBTMPL/PrepareJob/Output/on_dev_branch: on_dev_branch ============= @@ -257,11 +277,11 @@ on_dev_branch :Type: string :Default Value: ``'false'`` :Possible Values: ``'true'``, ``'false'`` -:Description: Returns ``'true'`` if the pipeline's commit is on :ref:`development branch `, +:Description: Returns ``'true'`` if the pipeline's commit is on :ref:`development branch `, otherwise return ``'false'``. -.. _JOBTMPL/PrepareJob/Result/on_release_branch: +.. _JOBTMPL/PrepareJob/Output/on_release_branch: on_release_branch ================= @@ -269,11 +289,11 @@ on_release_branch :Type: string :Default Value: ``'false'`` :Possible Values: ``'true'``, ``'false'`` -:Description: Returns ``'true'`` if the pipeline's commit is on :ref:`release branch `, +:Description: Returns ``'true'`` if the pipeline's commit is on :ref:`release branch `, otherwise return ``'false'``. -.. _JOBTMPL/PrepareJob/Result/is_regular_commit: +.. _JOBTMPL/PrepareJob/Output/is_regular_commit: is_regular_commit ================= @@ -281,11 +301,11 @@ is_regular_commit :Type: string :Default Value: ``'false'`` :Possible Values: ``'true'``, ``'false'`` -:Description: Returns ``'true'`` if the pipeline's commit is not a :ref:`merge commit ` - nor :ref:`release commit `, otherwise return ``'false'``. +:Description: Returns ``'true'`` if the pipeline's commit is not a :ref:`merge commit ` + nor :ref:`release commit `, otherwise return ``'false'``. -.. _JOBTMPL/PrepareJob/Result/is_merge_commit: +.. _JOBTMPL/PrepareJob/Output/is_merge_commit: is_merge_commit =============== @@ -293,12 +313,12 @@ is_merge_commit :Type: string :Default Value: ``'false'`` :Possible Values: ``'true'``, ``'false'`` -:Description: Returns ``'true'`` if the pipeline's commit is on :ref:`main branch ` - or :ref:`development branch ` and has more than one +:Description: Returns ``'true'`` if the pipeline's commit is on :ref:`main branch ` + or :ref:`development branch ` and has more than one parent (merge commit), otherwise return ``'false'``. -.. _JOBTMPL/PrepareJob/Result/is_release_commit: +.. _JOBTMPL/PrepareJob/Output/is_release_commit: is_release_commit ================= @@ -306,11 +326,11 @@ is_release_commit :Type: string :Default Value: ``'false'`` :Possible Values: ``'true'``, ``'false'`` -:Description: Returns ``'true'`` if the pipeline's commit is on :ref:`release branch ` +:Description: Returns ``'true'`` if the pipeline's commit is on :ref:`release branch ` and has more than one parent (merge commit), otherwise return ``'false'``. -.. _JOBTMPL/PrepareJob/Result/is_nightly_tag: +.. _JOBTMPL/PrepareJob/Output/is_nightly_tag: is_nightly_tag ============== @@ -318,12 +338,12 @@ is_nightly_tag :Type: string :Default Value: ``'false'`` :Possible Values: ``'true'``, ``'false'`` -:Description: Returns ``'true'`` if the pipeline is a tag pipeline for a commit on :ref:`release branch ` - and the tag's name matches the :ref:`nightly tag pattern `, +:Description: Returns ``'true'`` if the pipeline is a tag pipeline for a commit on :ref:`release branch ` + and the tag's name matches the :ref:`nightly tag pattern `, otherwise return ``'false'``. -.. _JOBTMPL/PrepareJob/Result/is_release_tag: +.. _JOBTMPL/PrepareJob/Output/is_release_tag: is_release_tag ============== @@ -331,12 +351,12 @@ is_release_tag :Type: string :Default Value: ``'false'`` :Possible Values: ``'true'``, ``'false'`` -:Description: Returns ``'true'`` if the pipeline is a tag pipeline for a commit on :ref:`release branch ` - and the tag's name matches the :ref:`release tag pattern `, +:Description: Returns ``'true'`` if the pipeline is a tag pipeline for a commit on :ref:`release branch ` + and the tag's name matches the :ref:`release tag pattern `, otherwise return ``'false'``. -.. _JOBTMPL/PrepareJob/Result/ref_kind: +.. _JOBTMPL/PrepareJob/Output/ref_kind: ref_kind ======== @@ -347,12 +367,12 @@ ref_kind :Description: Returns ``'branch'`` if pipeline's commit is on a branch or returns ``'tag'`` if the pipeline runs for a tagged commit, otherwise returns ``'unknown'`` in case of an internal error. - If the kind is a branch, the branch name is available in the job's :ref:`JOBTMPL/PrepareJob/Result/branch` + If the kind is a branch, the branch name is available in the job's :ref:`JOBTMPL/PrepareJob/Output/branch` result. |br| - If the kind is a tag, the tags name is available in the job's :ref:`JOBTMPL/PrepareJob/Result/tag` + If the kind is a tag, the tags name is available in the job's :ref:`JOBTMPL/PrepareJob/Output/tag` result. |br| - Moreover, if the tag matches the :ref:`JOBTMPL/PrepareJob/Param/release_tag_pattern`, the extracted - version is available in the job's :ref:`JOBTMPL/PrepareJob/Result/version` result. + Moreover, if the tag matches the :ref:`JOBTMPL/PrepareJob/Input/release_tag_pattern`, the extracted + version is available in the job's :ref:`JOBTMPL/PrepareJob/Output/version` result. .. note:: @@ -361,7 +381,7 @@ ref_kind and derives if a pipeline runs for a commit on a branch or a tagged commit. -.. _JOBTMPL/PrepareJob/Result/branch: +.. _JOBTMPL/PrepareJob/Output/branch: branch ====== @@ -369,10 +389,10 @@ branch :Type: string :Default Value: ``''`` :Possible Values: Any valid branch name. -:Description: Returns the branch's name the pipeline's commit is associated to, if :ref:`JOBTMPL/PrepareJob/Result/ref_kind` +:Description: Returns the branch's name the pipeline's commit is associated to, if :ref:`JOBTMPL/PrepareJob/Output/ref_kind` is ``'branch'``, otherwise returns an empty string ``''``. -.. _JOBTMPL/PrepareJob/Result/tag: +.. _JOBTMPL/PrepareJob/Output/tag: tag === @@ -380,28 +400,28 @@ tag :Type: string :Default Value: ``''`` :Possible Values: Any valid tag name. -:Description: Returns the tag's name the pipeline's commit is associated to, if :ref:`JOBTMPL/PrepareJob/Result/ref_kind` +:Description: Returns the tag's name the pipeline's commit is associated to, if :ref:`JOBTMPL/PrepareJob/Output/ref_kind` is ``'tag'``, otherwise returns an empty string ``''``. -.. _JOBTMPL/PrepareJob/Result/version: +.. _JOBTMPL/PrepareJob/Output/version: version ======= :Type: string :Default Value: ``''`` -:Possible Values: Any valid version matching :ref:`JOBTMPL/PrepareJob/Param/release_tag_pattern`. +:Possible Values: Any valid version matching :ref:`JOBTMPL/PrepareJob/Input/release_tag_pattern`. :Description: In case the pipeline runs for a tag, it returns the tag's name, if the name matches - :ref:`JOBTMPL/PrepareJob/Param/release_tag_pattern`, otherwise returns an empty string ``''``. |br| + :ref:`JOBTMPL/PrepareJob/Input/release_tag_pattern`, otherwise returns an empty string ``''``. |br| In case the pipeline runs for a branch, then the commit is checked if it's a - :ref:`merge commit ` and corresponding pull-request (PR) is + :ref:`merge commit ` and corresponding pull-request (PR) is searched. When a matching PR can be located and it's title matches - :ref:`JOBTMPL/PrepareJob/Param/release_tag_pattern`, then this title is returned as a version, + :ref:`JOBTMPL/PrepareJob/Input/release_tag_pattern`, then this title is returned as a version, otherwise it returns an empty string ``''``. -.. _JOBTMPL/PrepareJob/Result/pr_title: +.. _JOBTMPL/PrepareJob/Output/pr_title: pr_title ======== @@ -410,12 +430,12 @@ pr_title :Default Value: ``''`` :Possible Values: ``'true'``, ``'false'`` :Description: Returns the associated pull-request's title, if the pipeline's commit is a - :ref:`merge commit ` and the located pull-request's title - for this commit matches :ref:`JOBTMPL/PrepareJob/Param/release_tag_pattern`, otherwise returns an + :ref:`merge commit ` and the located pull-request's title + for this commit matches :ref:`JOBTMPL/PrepareJob/Input/release_tag_pattern`, otherwise returns an empty string ``''``. -.. _JOBTMPL/PrepareJob/Result/pr_number: +.. _JOBTMPL/PrepareJob/Output/pr_number: pr_number ========= @@ -424,6 +444,6 @@ pr_number :Default Value: ``''`` :Possible Values: ``'true'``, ``'false'`` :Description: Returns the associated pull-request's number, if the pipeline's commit is a - :ref:`merge commit ` and the located pull-request's title - for this commit matches :ref:`JOBTMPL/PrepareJob/Param/release_tag_pattern`, otherwise returns an + :ref:`merge commit ` and the located pull-request's title + for this commit matches :ref:`JOBTMPL/PrepareJob/Input/release_tag_pattern`, otherwise returns an empty string ``''``. diff --git a/doc/JobTemplate/index.rst b/doc/JobTemplate/index.rst index b8ab033..870263b 100644 --- a/doc/JobTemplate/index.rst +++ b/doc/JobTemplate/index.rst @@ -4,7 +4,8 @@ Overview ######## The following list categorizes all pre-defined job templates, which can be instantiated in a pipeline (GitHub Action -Workflow). They can also serve as an example for creating or deriving own job templates. +Workflow). They can also serve as an example for creating or deriving own job templates. All job templates are highly +customizable. .. include:: Templates.rst @@ -47,9 +48,44 @@ Some templates might provide output parameters, which can be used in dependent j : ${{ secrets. }} : - ... needs: - ... with: : ${{ needs..outputs. }} + + +.. _JOBTMPL/CommonParameters: + +Common Parameters +***************** + +All jobs specified in the templates are executed in +`images provided by GitHub Actions `__. +Except for platform specific jobs (e.g., unit testing on macOS, Ubuntu, Windows Server, ...) allmost all other jobs use +an Ubuntu image. This image can be configured by the job template input parameter :ref:`JOBTMPL/Common/Input/ubuntu_image`. +Similarly, many jobs rely on Python scripting and therefore need a Python version, which can be configured via +:ref:`JOBTMPL/Common/Input/python_version`. + +.. _JOBTMPL/Common/Input/ubuntu_image: + +ubuntu_image +============ + +:Type: string +:Required: usually no +:Default Value: ``'ubuntu-24.04'`` +:Possible Values: See `actions/runner-images - Available Images `__ +:Description: Name of the Ubuntu image used to run a job. + + +.. _JOBTMPL/Common/Input/python_version: + +python_version +============== + +:Type: string +:Required: usually no +:Default Value: ``'3.13'`` +:Possible Values: See `actions/runner-images - Available Images `__ +:Description: Python version used to run Python scripts in a job. diff --git a/doc/_static/pyTooling-Actions-PrepareJob.png b/doc/_static/pyTooling-Actions-PrepareJob.png new file mode 100644 index 0000000000000000000000000000000000000000..99d125ee4ea47ffefa4fde7538a5e4ca5f75b7a3 GIT binary patch literal 126748 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 Mlbc_O)E#nHNIs+^rfRKgRLRp{^?Phq|`xH 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 BmZf?Tw`Hvfi9x_582z$U*@@iqeteC+K}%Z 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

)#mLrB#bk;o4kXVQh+Y&QRDO#g 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