From d005debf6976e4254495e8ef32e67a9b605cf6fb Mon Sep 17 00:00:00 2001 From: Patrick Lehmann Date: Sun, 7 Sep 2025 08:19:12 +0200 Subject: [PATCH] Documented IntermediateCleanup and ArtifactCleanup. --- doc/JobTemplate/AllInOne/CompletePipeline.rst | 11 ++ doc/JobTemplate/Cleanup/ArtifactCleanup.rst | 120 +++++++++++--- .../Cleanup/IntermediateCleanup.rst | 146 +++++++++++++++++- .../pyTooling-Actions-ArtifactCleanup.png | Bin 0 -> 21708 bytes .../pyTooling-Actions-IntermediateCleanup.png | Bin 0 -> 26712 bytes 5 files changed, 248 insertions(+), 29 deletions(-) create mode 100644 doc/_static/pyTooling-Actions-ArtifactCleanup.png create mode 100644 doc/_static/pyTooling-Actions-IntermediateCleanup.png diff --git a/doc/JobTemplate/AllInOne/CompletePipeline.rst b/doc/JobTemplate/AllInOne/CompletePipeline.rst index 29b537d..48e1b14 100644 --- a/doc/JobTemplate/AllInOne/CompletePipeline.rst +++ b/doc/JobTemplate/AllInOne/CompletePipeline.rst @@ -245,7 +245,18 @@ It can be used for simple Python packages as well as namespace packages. * :ref:`pyTooling/Actions/.github/workflows/PublishToGitHubPages.yml ` * :ref:`pyTooling/Actions/.github/workflows/PublishOnPyPI.yml ` * :ref:`pyTooling/Actions/.github/workflows/TagReleaseCommit.yml ` + + * :gh:`actions/github-script` + * :ref:`pyTooling/Actions/.github/workflows/PublishReleaseNotes.yml ` + + * :gh:`actions/checkout` + * ``gh`` (GitHub command line interface) + * ``jq`` (JSON processing) + * apt + + zstd + * :ref:`pyTooling/Actions/.github/workflows/IntermediateCleanUp.yml ` * :gh:`geekyeggo/delete-artifact` diff --git a/doc/JobTemplate/Cleanup/ArtifactCleanup.rst b/doc/JobTemplate/Cleanup/ArtifactCleanup.rst index 09c92a3..7147775 100644 --- a/doc/JobTemplate/Cleanup/ArtifactCleanup.rst +++ b/doc/JobTemplate/Cleanup/ArtifactCleanup.rst @@ -3,17 +3,28 @@ ArtifactCleanUp ############### -This job removes artifacts used to exchange data from job to job. +This job removes artifacts which were used to exchange data from job to job. -**Behavior:** +.. topic:: Features -1. Delete the package artifact if the current pipeline run was not a tagged run. -2. Delete all remaining artifacts if given as a parameter. + * Delete artifacts from pipeline. -**Dependencies:** +.. topic:: Behavior -* :gh:`geekyeggo/delete-artifact` + 1. Delete the package artifact if the current pipeline run was not a tagged run. + 2. Delete all remaining artifacts if given as a parameter. +.. topic:: Job Execution + + .. image:: ../../_static/pyTooling-Actions-ArtifactCleanup.png + :width: 350px + +.. topic:: Dependencies + + * :gh:`geekyeggo/delete-artifact` + + +.. _JOBTMPL/ArtifactCleanup/Instantiation: Instantiation ************* @@ -52,39 +63,106 @@ Complex Example ${{ fromJson(needs.Params.outputs.artifact_names).unittesting_xml }}-* -Parameters -********** +.. seealso:: + + :ref:`JOBTMPL/IntermediateCleanUp` + ``IntermediateCleanUp`` is used to remove intermediate artifacts like unit test artifacts for each job variant + after test results have been merged into a single file. + + +.. _JOBTMPL/ArtifactCleanup/Parameters: + +Parameter Summary +***************** + +.. rubric:: Goto :ref:`input parameters ` + ++---------------------------------------------------------------------+----------+----------+---------------------------------------------------+ +| Parameter Name | Required | Type | Default | ++=====================================================================+==========+==========+===================================================+ +| :ref:`JOBTMPL/ArtifactCleanup/Input/ubuntu_image_version` | no | string | ``'24.04'`` | ++---------------------------------------------------------------------+----------+----------+---------------------------------------------------+ +| :ref:`JOBTMPL/ArtifactCleanup/Input/package` | yes | string | — — — — | ++---------------------------------------------------------------------+----------+----------+---------------------------------------------------+ +| :ref:`JOBTMPL/ArtifactCleanup/Input/remaining` | no | string | ``''`` | ++---------------------------------------------------------------------+----------+----------+---------------------------------------------------+ + +.. rubric:: Goto :ref:`secrets ` + +This job template needs no secrets. + +.. rubric:: Goto :ref:`output parameters ` + +This job template has no output parameters. + + +.. _JOBTMPL/ArtifactCleanup/Inputs: + +Input Parameters +**************** + +.. _JOBTMPL/ArtifactCleanup/Input/ubuntu_image_version: + +ubuntu_image_version +==================== + +:Type: string +:Required: no +:Default Value: ``'24.04'`` +:Possible Values: See `actions/runner-images - Available Images `__ + for available Ubuntu image versions. +:Description: Version of the Ubuntu image used to run this job. + + .. note:: + + Unfortunately, GitHub Actions has only a `limited set of functions `__, + thus, the usual Ubuntu image name like ``'ubuntu-24.04'`` can't be split into image name and image + version. + + +.. _JOBTMPL/ArtifactCleanup/Input/package: package ======= -+----------------+----------+----------+----------+ -| Parameter Name | Required | Type | Default | -+================+==========+==========+==========+ -| package | yes | string | — — — — | -+----------------+----------+----------+----------+ +:Type: string +:Required: yes +:Default Value: — — — — +:Possible Values: Multi-line string accepting any valid artifact name per line. +:Description: Artifacts to be removed on not tagged runs. -Artifacts to be removed on not tagged runs. +.. _JOBTMPL/ArtifactCleanup/Input/remaining: remaining ========= -+----------------+----------+----------+----------+ -| Parameter Name | Required | Type | Default | -+================+==========+==========+==========+ -| remaining | optional | string | ``""`` | -+----------------+----------+----------+----------+ +:Type: string +:Required: no +:Default Value: ``''`` +:Possible Values: Multi-line string accepting any valid artifact name per line. +:Description: Versi -Artifacts to be removed unconditionally. +.. _JOBTMPL/ArtifactCleanup/Secrets: Secrets ******* This job template needs no secrets. -Results + +.. _JOBTMPL/ArtifactCleanup/Outputs: + +Outputs ******* This job template has no output parameters. + + +.. _JOBTMPL/ArtifactCleanup/Optimizations: + +Optimizations +************* + +This template offers no optimizations (reduced job runtime). diff --git a/doc/JobTemplate/Cleanup/IntermediateCleanup.rst b/doc/JobTemplate/Cleanup/IntermediateCleanup.rst index 7608264..be7fb7b 100644 --- a/doc/JobTemplate/Cleanup/IntermediateCleanup.rst +++ b/doc/JobTemplate/Cleanup/IntermediateCleanup.rst @@ -3,20 +3,150 @@ IntermediateCleanUp ################### -.. todo:: IntermediateCleanUp:Needs documentation. +The ``IntermediateCleanUp`` job template is used to remove intermediate artifacts like unit test artifacts for each job +variant after test results have been merged into a single file. -**Behavior:** +.. topic:: Features -.. todo:: IntermediateCleanUp:Behavior needs documentation. + * Delete artifacts from pipeline. -**Dependencies:** +.. topic:: Behavior -* :gh:`geekyeggo/delete-artifact` + 1. Delete all SQLite code coverage artifacts if given as a parameter. + 2. Delete all JUnit XML report artifacts if given as a parameter. + +.. topic:: Job Execution + + .. image:: ../../_static/pyTooling-Actions-IntermediateCleanUp.png + :width: 400px + +.. topic:: Dependencies + + * :gh:`geekyeggo/delete-artifact` + + +.. _JOBTMPL/IntermediateCleanUp/Instantiation: Instantiation ************* -Simple Example -============== +The following instantiation example creates a ``Params`` job derived from job template ``Parameters`` version ``@r5``. It only +requires a `name` parameter to create the artifact names. -.. todo:: IntermediateCleanUp:Simple example needs documentation. +.. code-block:: yaml + + name: Pipeline + + on: + push: + workflow_dispatch: + + jobs: + Params: + uses: pyTooling/Actions/.github/workflows/ExtractConfiguration.yml@r5 + with: + name: pyTooling + + +.. seealso:: + + :ref:`JOBTMPL/ArtifactCleanup` + ``ArtifactCleanup`` is usualy + + +.. _JOBTMPL/IntermediateCleanUp/Parameters: + +Parameter Summary +***************** + +.. rubric:: Goto :ref:`input parameters ` + ++----------------------------------------------------------------------------+----------+----------+---------------------------------------------------+ +| Parameter Name | Required | Type | Default | ++============================================================================+==========+==========+===================================================+ +| :ref:`JOBTMPL/IntermediateCleanUp/Input/ubuntu_image_version` | no | string | ``'24.04'`` | ++----------------------------------------------------------------------------+----------+----------+---------------------------------------------------+ +| :ref:`JOBTMPL/IntermediateCleanUp/Input/sqlite_coverage_artifacts_prefix` | no | string | ``''`` | ++----------------------------------------------------------------------------+----------+----------+---------------------------------------------------+ +| :ref:`JOBTMPL/IntermediateCleanUp/Input/xml_unittest_artifacts_prefix` | no | string | ``''`` | ++----------------------------------------------------------------------------+----------+----------+---------------------------------------------------+ + +.. rubric:: Goto :ref:`secrets ` + +This job template needs no secrets. + +.. rubric:: Goto :ref:`output parameters ` + +This job template has no output parameters. + + +.. _JOBTMPL/IntermediateCleanUp/Inputs: + +Input Parameters +**************** + +.. _JOBTMPL/IntermediateCleanUp/Input/ubuntu_image_version: + +ubuntu_image_version +==================== + +:Type: string +:Required: no +:Default Value: ``'24.04'`` +:Possible Values: See `actions/runner-images - Available Images `__ + for available Ubuntu image versions. +:Description: Version of the Ubuntu image used to run this job. + + .. note:: + + Unfortunately, GitHub Actions has only a `limited set of functions `__, + thus, the usual Ubuntu image name like ``'ubuntu-24.04'`` can't be split into image name and image + version. + + +.. _JOBTMPL/IntermediateCleanUp/Input/sqlite_coverage_artifacts_prefix: + +sqlite_coverage_artifacts_prefix +================================ + +:Type: string +:Required: no +:Default Value: ``''`` +:Possible Values: Any valid artifact name including ``*``. +:Description: Prefix for SQLite coverage artifacts to be removed. + + +.. _JOBTMPL/IntermediateCleanUp/Input/xml_unittest_artifacts_prefix: + +xml_unittest_artifacts_prefix +============================= + +:Type: string +:Required: no +:Default Value: ``''`` +:Possible Values: Any valid artifact name including ``*``. +:Description: Prefix for XML unittest artifacts to be removed. + + +.. _JOBTMPL/IntermediateCleanUp/Secrets: + +Secrets +******* + +This job template needs no secrets. + + +.. _JOBTMPL/IntermediateCleanUp/Outputs: + +Outputs +******* + +This job template has no output parameters. + + +.. _JOBTMPL/IntermediateCleanUp/Optimizations: + +Optimizations +************* + +This template offers no optimizations (reduced job runtime). diff --git a/doc/_static/pyTooling-Actions-ArtifactCleanup.png b/doc/_static/pyTooling-Actions-ArtifactCleanup.png new file mode 100644 index 0000000000000000000000000000000000000000..6e34cbb4d261e9682a5bec11d8c1b37fba9f07ba GIT binary patch literal 21708 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%0Ard!|46kj*%HWubd-&I|KAaYRtPWWO+6{!+Jqn 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