diff --git a/.github/workflows/PublishReleaseNotes.yml b/.github/workflows/PublishReleaseNotes.yml index 3c92943..f28e9f1 100644 --- a/.github/workflows/PublishReleaseNotes.yml +++ b/.github/workflows/PublishReleaseNotes.yml @@ -41,8 +41,7 @@ on: type: string tag: description: 'Name of the release (tag).' - required: false - default: '' + required: true type: string title: description: 'Title of the release.' diff --git a/.github/workflows/_Checking_AvailableRunners.yml b/.github/workflows/_Checking_AvailableRunners.yml index e651027..b398896 100644 --- a/.github/workflows/_Checking_AvailableRunners.yml +++ b/.github/workflows/_Checking_AvailableRunners.yml @@ -24,9 +24,9 @@ jobs: - {icon: '🪟', name: 'Windows Server 2022', image: 'windows-2022', shell: 'bash'} - {icon: '🪟', name: 'Windows Server 2025', image: 'windows-2025', shell: 'bash'} # latest # Third party images by ARM for aarch64 - - {icon: '🐧', name: 'Ubuntu 22.04 (aarch64)', image: 'ubuntu-22.04-arm', shell: 'bash'} - - {icon: '🐧', name: 'Ubuntu 24.04 (aarch64)', image: 'ubuntu-24.04-arm', shell: 'bash'} - - {icon: '🪟', name: 'Windows 11 (arch64)', image: 'windows-11-arm', shell: 'bash'} + - {icon: '⛄', name: 'Ubuntu 22.04 (aarch64)', image: 'ubuntu-22.04-arm', shell: 'bash'} + - {icon: '⛄', name: 'Ubuntu 24.04 (aarch64)', image: 'ubuntu-24.04-arm', shell: 'bash'} + - {icon: '🏢', name: 'Windows 11 (arch64)', image: 'windows-11-arm', shell: 'bash'} defaults: run: diff --git a/doc/JobTemplate/Publish/PublishReleaseNotes.rst b/doc/JobTemplate/Publish/PublishReleaseNotes.rst deleted file mode 100644 index 0ff541e..0000000 --- a/doc/JobTemplate/Publish/PublishReleaseNotes.rst +++ /dev/null @@ -1,96 +0,0 @@ -.. _JOBTMPL/PublishReleaseNotes: - -PublishReleaseNotes -################### - -This job creates a Release Page on GitHub. - -**Release Template in Markdown**: - -.. parsed-literal:: - - **Automated Release created on: ${{ steps.getVariables.outputs.datetime }}** - - # New Features - - * tbd - * tbd - - # Changes - - * tbd - * tbd - - # Bug Fixes - - * tbd - * tbd - - # Documentation - - * tbd - * tbd - - # Unit Tests - - * tbd - * tbd - - ---------- - # Related Issues and Pull-Requests - - * tbd - * tbd - - -**Behavior:** - -1. Extract information from environment variables provided by GitHub Actions. -2. Create a Release Page on GitHub - -**Dependencies:** - -* :gh:`actions/create-release` (unmaintained) - -Instantiation -************* - -Simple Example -============== - -.. code-block:: yaml - - jobs: - Release: - uses: pyTooling/Actions/.github/workflows/Release.yml@r5 - - -Complex Example -=============== - -.. code-block:: yaml - - jobs: - Release: - uses: pyTooling/Actions/.github/workflows/Release.yml@r5 - if: startsWith(github.ref, 'refs/tags') - needs: - - Package - - -Parameters -********** - -This job template needs no input parameters. - - -Secrets -******* - -This job template needs no secrets. - - -Results -******* - -This job template has no output parameters. diff --git a/doc/JobTemplate/Publish/index.rst b/doc/JobTemplate/Publish/index.rst index bc04c70..16e1c0f 100644 --- a/doc/JobTemplate/Publish/index.rst +++ b/doc/JobTemplate/Publish/index.rst @@ -7,7 +7,6 @@ The category *publish* provides workflow templates implementing * :ref:`JOBTMPL/PublishTestResults` - * :ref:`JOBTMPL/PublishCoverageResults` - -* :ref:`JOBTMPL/PublishReleaseNotes` - * :ref:`JOBTMPL/PublishToGitHubPages` - .. toctree:: @@ -15,5 +14,4 @@ The category *publish* provides workflow templates implementing PublishTestResults PublishCoverageResults - PublishReleaseNotes PublishToGitHubPages diff --git a/doc/JobTemplate/Release/PublishReleaseNotes.rst b/doc/JobTemplate/Release/PublishReleaseNotes.rst new file mode 100644 index 0000000..f07a36e --- /dev/null +++ b/doc/JobTemplate/Release/PublishReleaseNotes.rst @@ -0,0 +1,373 @@ +.. _JOBTMPL/PublishReleaseNotes: + +PublishReleaseNotes +################### + +This template runs ... + +.. topic:: Features + + * tbd + +.. topic:: Behavior + + 1. Checkout repository. + 2. Install dependencies. + 3. Check if it's a full release or nightly release (rolling release). + 4. Delete old release. + 5. Assemble release notes. + 6. Create a new or recreate the release page as draft. + 7. Attach files from artifacts as assets: + + 1. Download artifact + 2. Optionally, create compressed archives of that content. + 3. Upload assets to release page. + + 8. Remove draft state from new release page. + +.. topic:: Job Execution + + .. image:: ../../_static/pyTooling-Actions-PublishReleaseNotes.png + :width: 600px + +.. topic:: Dependencies + + * :gh:`actions/checkout` + * ``gh`` (GitHub command line interface) + * ``jq`` (JSON processing) + * apt + + zstd + + +.. _JOBTMPL/PublishReleaseNotes/Instantiation: + +Instantiation +************* + +.. code-block:: yaml + + jobs: + Release: + uses: pyTooling/Actions/.github/workflows/Release.yml@r5 + + +.. seealso:: + + :ref:`JOBTMPL/TagReleaseCommit` + ``TagReleaseCommit`` is + + +.. _JOBTMPL/PublishReleaseNotes/Parameters: + +Parameter Summary +***************** + +.. rubric:: Goto :ref:`input parameters ` + ++-------------------------------------------------------------------------+----------+----------+-------------------------------------------------------------------+ +| Parameter Name | Required | Type | Default | ++=========================================================================+==========+==========+===================================================================+ +| :ref:`JOBTMPL/PublishReleaseNotes/Input/ubuntu_image` | no | string | ``'ubuntu-24.04'`` | ++-------------------------------------------------------------------------+----------+----------+-------------------------------------------------------------------+ +| :ref:`JOBTMPL/PublishReleaseNotes/Input/release_branch` | no | string | ``'main'`` | ++-------------------------------------------------------------------------+----------+----------+-------------------------------------------------------------------+ +| :ref:`JOBTMPL/PublishReleaseNotes/Input/mode` | no | string | ``'release'`` | ++-------------------------------------------------------------------------+----------+----------+-------------------------------------------------------------------+ +| :ref:`JOBTMPL/PublishReleaseNotes/Input/tag` | yes | string | — — — — | ++-------------------------------------------------------------------------+----------+----------+-------------------------------------------------------------------+ +| :ref:`JOBTMPL/PublishReleaseNotes/Input/title` | no | string | ``''`` | ++-------------------------------------------------------------------------+----------+----------+-------------------------------------------------------------------+ +| :ref:`JOBTMPL/PublishReleaseNotes/Input/description` | no | string | ``''`` | ++-------------------------------------------------------------------------+----------+----------+-------------------------------------------------------------------+ +| :ref:`JOBTMPL/PublishReleaseNotes/Input/description_file` | no | string | ``''`` | ++-------------------------------------------------------------------------+----------+----------+-------------------------------------------------------------------+ +| :ref:`JOBTMPL/PublishReleaseNotes/Input/description_footer` | no | string | see parameter details | ++-------------------------------------------------------------------------+----------+----------+-------------------------------------------------------------------+ +| :ref:`JOBTMPL/PublishReleaseNotes/Input/draft` | no | boolean | ``false`` | ++-------------------------------------------------------------------------+----------+----------+-------------------------------------------------------------------+ +| :ref:`JOBTMPL/PublishReleaseNotes/Input/prerelease` | no | boolean | ``false`` | ++-------------------------------------------------------------------------+----------+----------+-------------------------------------------------------------------+ +| :ref:`JOBTMPL/PublishReleaseNotes/Input/latest` | no | boolean | ``false`` | ++-------------------------------------------------------------------------+----------+----------+-------------------------------------------------------------------+ +| :ref:`JOBTMPL/PublishReleaseNotes/Input/replacements` | no | string | ``''`` | ++-------------------------------------------------------------------------+----------+----------+-------------------------------------------------------------------+ +| :ref:`JOBTMPL/PublishReleaseNotes/Input/assets` | no | string | ``''`` | ++-------------------------------------------------------------------------+----------+----------+-------------------------------------------------------------------+ +| :ref:`JOBTMPL/PublishReleaseNotes/Input/inventory-json` | no | string | ``''`` | ++-------------------------------------------------------------------------+----------+----------+-------------------------------------------------------------------+ +| :ref:`JOBTMPL/PublishReleaseNotes/Input/inventory-version` | no | string | ``''`` | ++-------------------------------------------------------------------------+----------+----------+-------------------------------------------------------------------+ +| :ref:`JOBTMPL/PublishReleaseNotes/Input/inventory-categories` | no | string | ``''`` | ++-------------------------------------------------------------------------+----------+----------+-------------------------------------------------------------------+ +| :ref:`JOBTMPL/PublishReleaseNotes/Input/tarball-name` | no | string | ``'__pyTooling_upload_artifact__.tar'`` | ++-------------------------------------------------------------------------+----------+----------+-------------------------------------------------------------------+ +| :ref:`JOBTMPL/PublishReleaseNotes/Input/can-fail` | no | boolean | ``false`` | ++-------------------------------------------------------------------------+----------+----------+-------------------------------------------------------------------+ + +.. rubric:: Goto :ref:`secrets ` + +This job template needs no secrets. + +.. rubric:: Goto :ref:`output parameters ` + +This job template has no output parameters. + + +.. _JOBTMPL/PublishReleaseNotes/Inputs: + +Input Parameters +**************** + +.. _JOBTMPL/PublishReleaseNotes/Input/ubuntu_image: + +ubuntu_image +============ + +:Type: string +:Required: no +:Default Value: ``'ubuntu-24.04'`` +:Possible Values: tbd +:Description: tbd + + +.. _JOBTMPL/PublishReleaseNotes/Input/release_branch: + +release_branch +============== + +:Type: string +:Required: no +:Default Value: ``'main'`` +:Possible Values: tbd +:Description: tbd + + +.. _JOBTMPL/PublishReleaseNotes/Input/mode: + +mode +==== + +:Type: string +:Required: no +:Default Value: ``'release'`` +:Possible Values: ``'release'``, ``'nightly'`` +:Description: tbd + + +.. _JOBTMPL/PublishReleaseNotes/Input/tag: + +tag +=== + +:Type: string +:Required: yes +:Default Value: — — — — +:Possible Values: tbd +:Description: tbd + + +.. _JOBTMPL/PublishReleaseNotes/Input/title: + +title +===== + +:Type: string +:Required: no +:Default Value: ``''`` +:Possible Values: tbd +:Description: tbd + + +.. _JOBTMPL/PublishReleaseNotes/Input/description: + +description +=========== + +:Type: string +:Required: no +:Default Value: ``''`` +:Possible Values: tbd +:Description: tbd + + +.. _JOBTMPL/PublishReleaseNotes/Input/description_file: + +description_file +================ + +:Type: string +:Required: no +:Default Value: ``''`` +:Possible Values: tbd +:Description: tbd + + +.. _JOBTMPL/PublishReleaseNotes/Input/description_footer: + +description_footer +================== + +:Type: string +:Required: no +:Default Value: + .. code-block:: + + + -------- + Published from [%%gh_workflow_name%%](%%gh_server%%/%%gh_owner_repo%%/actions/runs/%%gh_runid%%) workflow triggered by %%gh_actor%% on %%datetime%%. + + This automatic release was created by [pyTooling/Actions](http://github.com/pyTooling/Actions)::Release.yml +:Possible Values: Any valid text including multi-line text. +:Description: tbd + + +.. _JOBTMPL/PublishReleaseNotes/Input/draft: + +draft +===== + +:Type: :red:`boolean` +:Required: no +:Default Value: ``false`` +:Possible Values: ``false``, ``true`` +:Description: tbd + + +.. _JOBTMPL/PublishReleaseNotes/Input/prerelease: + +prerelease +========== + +:Type: :red:`boolean` +:Required: no +:Default Value: ``false`` +:Possible Values: ``false``, ``true`` +:Description: tbd + + +.. _JOBTMPL/PublishReleaseNotes/Input/latest: + +latest +====== + +:Type: :red:`boolean` +:Required: no +:Default Value: ``false`` +:Possible Values: ``false``, ``true`` +:Description: tbd + + +.. _JOBTMPL/PublishReleaseNotes/Input/replacements: + +replacements +============ + +:Type: string +:Required: no +:Default Value: ``''`` +:Possible Values: tbd +:Description: tbd + + +.. _JOBTMPL/PublishReleaseNotes/Input/assets: + +assets +====== + +:Type: string +:Required: no +:Default Value: ``''`` +:Possible Values: tbd +:Description: tbd + + +.. _JOBTMPL/PublishReleaseNotes/Input/inventory-json: + +inventory-json +============== + +:Type: string +:Required: no +:Default Value: ``''`` +:Possible Values: tbd +:Description: tbd + + +.. _JOBTMPL/PublishReleaseNotes/Input/inventory-version: + +inventory-version +================= + +:Type: string +:Required: no +:Default Value: ``''`` +:Possible Values: tbd +:Description: tbd + + +.. _JOBTMPL/PublishReleaseNotes/Input/inventory-categories: + +inventory-categories +==================== + +:Type: string +:Required: no +:Default Value: ``''`` +:Possible Values: tbd +:Description: tbd + + +.. _JOBTMPL/PublishReleaseNotes/Input/tarball-name: + +tarball-name +============ + +:Type: string +:Required: no +:Default Value: ``'__pyTooling_upload_artifact__.tar'`` +:Possible Values: tbd +:Description: tbd + + +.. _JOBTMPL/PublishReleaseNotes/Input/can-fail: + +can-fail +======== + +:Type: :red:`boolean` +:Required: no +:Default Value: ``false`` +:Possible Values: ``false``, ``true`` +:Description: tbd + + +.. _JOBTMPL/PublishReleaseNotes/Secrets: + +Secrets +******* + +This job template needs no secrets. + + +.. _JOBTMPL/PublishReleaseNotes/Outputs: + +Outputs +******* + +.. _JOBTMPL/PublishReleaseNotes/Output/release-page: + +release-page +============ + +:Type: string +:Description: Returns the URL to the release page. +:Example: ``tbd`` + + +.. _JOBTMPL/PublishReleaseNotes/Optimizations: + +Optimizations +************* + +This template offers no optimizations (reduced job runtime). diff --git a/doc/JobTemplate/Release/index.rst b/doc/JobTemplate/Release/index.rst index 0573536..b416466 100644 --- a/doc/JobTemplate/Release/index.rst +++ b/doc/JobTemplate/Release/index.rst @@ -6,8 +6,10 @@ Release The category *release* provides workflow templates implementing * :ref:`JOBTMPL/TagReleaseCommit` - +* :ref:`JOBTMPL/PublishReleaseNotes` - .. toctree:: :hidden: TagReleaseCommit + PublishReleaseNotes diff --git a/doc/JobTemplate/Testing/UnitTesting.rst b/doc/JobTemplate/Testing/UnitTesting.rst index 1d46f43..9eb522d 100644 --- a/doc/JobTemplate/Testing/UnitTesting.rst +++ b/doc/JobTemplate/Testing/UnitTesting.rst @@ -24,8 +24,6 @@ file. .. topic:: Behavior - .. todo:: UnitTesting:Behavior needs documentation. - 1. Checkout repository. 2. Setup environment and install dependencies (``apt``, ``homebrew``, ``pacman``, ...). 3. Setup Python and install dependencies (``pip``). @@ -68,9 +66,6 @@ file. Instantiation ************* -Simple Example -============== - The following instantiation example creates a ``UnitTesting`` job derived from job template ``UnitTesting`` version `@r5`. For providing the job matrix as a JSON string, the :ref:`JOBTMPL/Parameters` job template is used. Additionally, the job needs configuration settings, which are stored in :file:`pyproject.toml`. Instead of duplicating these settings, diff --git a/doc/_static/pyTooling-Actions-PublishReleaseNotes.png b/doc/_static/pyTooling-Actions-PublishReleaseNotes.png new file mode 100644 index 0000000..6987ef2 Binary files /dev/null and b/doc/_static/pyTooling-Actions-PublishReleaseNotes.png differ