.. _JOBTMPL/ExtractConfiguration: .. index:: single: GitHub Action Reusable Workflow; ExtractConfiguration Template ExtractConfiguration #################### The ``ExtractConfiguration`` job template extracts Python project settings from :file:`pyproject.toml` and shares the values via output parameters with other jobs. Thus, only a single centralized implementation is needed to avoid code duplications within jobs. .. topic:: Features * Extract the unittest report file in pytest's JUnit XML format as directory name, filename and full path from :file:`pyproject.toml`. * Extract the merged unittest XML report file as directory name, filename and full path from :file:`pyproject.toml`. * Extract code coverage report in HTML format as directory from :file:`pyproject.toml`. * Extract code coverage report file in Cobertura XML format as directory name, filename and full path from :file:`pyproject.toml`. * Extract code coverage report file in Coverage.py's JSON format as directory name, filename and full path from :file:`pyproject.toml`. * Extract static typing report file in Cobertura XML format as directory name, filename and full path from :file:`pyproject.toml`. * Extract static typing report file in JUnit XML format as directory name, filename and full path from :file:`pyproject.toml`. * Extract static typing report in HTML format as directory name from :file:`pyproject.toml`. .. topic:: Behavior 1. Checkout repository. 2. Install Python dependencies. 3. Compute the full package name and the package source directory. 4. Read :file:`pyproject.toml` and extract settings for: * :term:`Coverage.py` * :term:`mypy` * :term:`pyEDAA.Reports` * :term:`pytest` .. topic:: Job Execution .. image:: ../../_static/pyTooling-Actions-ExtractConfiguration.png :width: 600px .. topic:: Dependencies * :gh:`actions/checkout` * :gh:`actions/setup-python` * :pypi:`wheel` * :pypi:`tomli` .. _JOBTMPL/ExtractConfiguration/Instantiation: Instantiation ************* The following instantiation example creates a ``ConfigParams`` job derived from job template ``ExtractConfiguration`` version ``@r6``. It requires no special parameters to extract unit test (pytest) and code coverage (Coverage.py) settings. .. code-block:: yaml jobs: ConfigParams: uses: pyTooling/Actions/.github/workflows/ExtractConfiguration.yml@r6 UnitTesting: uses: pyTooling/Actions/.github/workflows/UnitTesting.yml@r6 needs: - ConfigParams with: unittest_report_xml: ${{ needs.ConfigParams.outputs.unittest_report_xml }} coverage_report_xml: ${{ needs.ConfigParams.outputs.coverage_report_xml }} coverage_report_json: ${{ needs.ConfigParams.outputs.coverage_report_json }} coverage_report_html: ${{ needs.ConfigParams.outputs.coverage_report_html }} .. seealso:: :ref:`JOBTMPL/UnitTesting` ``UnitTesting`` is usually :ref:`JOBTMPL/StaticTypeCheck` xxx :ref:`JOBTMPL/CheckDocumentation` xxx :ref:`JOBTMPL/InstallPackage` xxx :ref:`JOBTMPL/PublishCoverageResults` xxx :ref:`JOBTMPL/PublishTestResults` xxx :ref:`JOBTMPL/SphinxDocumentation` xxx .. _JOBTMPL/ExtractConfiguration/Parameters: Parameter Summary ***************** .. rubric:: Goto :ref:`input parameters ` +---------------------------------------------------------------------+----------+----------+-------------------------------------------------------------------+ | Parameter Name | Required | Type | Default | +=====================================================================+==========+==========+===================================================================+ | :ref:`JOBTMPL/ExtractConfiguration/Input/ubuntu_image_version` | no | string | ``'24.04'`` | +---------------------------------------------------------------------+----------+----------+-------------------------------------------------------------------+ | :ref:`JOBTMPL/ExtractConfiguration/Input/python_version` | no | string | ``'3.13'`` | +---------------------------------------------------------------------+----------+----------+-------------------------------------------------------------------+ | :ref:`JOBTMPL/ExtractConfiguration/Input/coverage_config` | no | string | ``'pyproject.toml'`` | +---------------------------------------------------------------------+----------+----------+-------------------------------------------------------------------+ .. rubric:: Goto :ref:`secrets ` This job template needs no secrets. .. rubric:: Goto :ref:`output parameters ` +---------------------------------------------------------------------------------+----------------+-------------------------------------------------------------------+ | Result Name | Type | Description | +=================================================================================+================+===================================================================+ | :ref:`JOBTMPL/ExtractConfiguration/Output/unittest_report_xml` | string (JSON) | | +---------------------------------------------------------------------------------+----------------+-------------------------------------------------------------------+ | :ref:`JOBTMPL/ExtractConfiguration/Output/unittest_merged_report_xml` | string (JSON) | | +---------------------------------------------------------------------------------+----------------+-------------------------------------------------------------------+ | :ref:`JOBTMPL/ExtractConfiguration/Output/coverage_report_html` | string (JSON) | | +---------------------------------------------------------------------------------+----------------+-------------------------------------------------------------------+ | :ref:`JOBTMPL/ExtractConfiguration/Output/coverage_report_xml` | string (JSON) | | +---------------------------------------------------------------------------------+----------------+-------------------------------------------------------------------+ | :ref:`JOBTMPL/ExtractConfiguration/Output/coverage_report_json` | string (JSON) | | +---------------------------------------------------------------------------------+----------------+-------------------------------------------------------------------+ | :ref:`JOBTMPL/ExtractConfiguration/Output/typing_report_cobertura` | string (JSON) | | +---------------------------------------------------------------------------------+----------------+-------------------------------------------------------------------+ | :ref:`JOBTMPL/ExtractConfiguration/Output/typing_report_junit` | string (JSON) | | +---------------------------------------------------------------------------------+----------------+-------------------------------------------------------------------+ | :ref:`JOBTMPL/ExtractConfiguration/Output/typing_report_html` | string (JSON) | | +---------------------------------------------------------------------------------+----------------+-------------------------------------------------------------------+ .. _JOBTMPL/ExtractConfiguration/Inputs: Input Parameters **************** .. _JOBTMPL/ExtractConfiguration/Input/ubuntu_image_version: .. include:: ../_ubuntu_image_version.rst .. _JOBTMPL/ExtractConfiguration/Input/python_version: .. include:: ../_python_version.rst .. _JOBTMPL/ExtractConfiguration/Input/coverage_config: coverage_config =============== :Type: string :Required: no :Default Value: ``'pyproject.toml'`` :Possible Values: Any valid path to a :file:`pyproject.toml` file. |br| Alternatively, path to a :file:`.coveragerc` file (deprecated). :Description: Path to a Python project configuration file for extraction of project settings. :Example: .. grid:: 2 .. grid-item:: :columns: 5 .. rubric:: Extracted values from :file:`pyproject.toml` .. code-block:: toml [tool.coverage.xml] output = "report/coverage/coverage.xml" [tool.coverage.json] output = "report/coverage/coverage.json" [tool.coverage.html] directory = "report/coverage/html" title="Code Coverage of myPackage" [tool.mypy] html_report = "report/typing/html" junit_xml = "report/typing/StaticTypingSummary.xml" cobertura_xml_report = "report/typing" [tool.pyedaa-reports] junit_xml = "report/unit/unittest.xml" [tool.pytest] junit_xml = "report/unit/UnittestReportSummary.xml" .. _JOBTMPL/ExtractConfiguration/Secrets: Secrets ******* This job template needs no secrets. .. _JOBTMPL/ExtractConfiguration/Outputs: Outputs ******* .. _JOBTMPL/ExtractConfiguration/Output/unittest_report_xml: unittest_report_xml =================== :Type: string (JSON) :Description: Returns a string in JSON format containing the directory, the filename and the fullpath to the unit test's report XML file created by :term:`pytest` in JUnit XML format. The JSON object contains these fields: :directory: Contains the directory where the unittest XML report file will be created. |br| Example: :file:`reports/unit` :filename: Contains the filename of the unittest XML report file. |br| Example: :file:`UnittestReportSummary.xml` :fullpath: Contains the path where the unittest XML report file will be created. |br| This is the concatenation of both previous JSON fields. |br| Example: :file:`reports/unit/UnittestReportSummary.xml` :pyproject.toml: Matching :file:`pyproject.toml` configuration for tool :term:`pytest`. .. code-block:: toml [tool.pytest] junit_xml = "report/unit/UnittestReportSummary.xml" :Example: .. code-block:: json { "directory": "reports/unit", "filename": "UnittestReportSummary.xml", "fullpath": "reports/unit/UnittestReportSummary.xml" } :Usage: .. tab-set:: .. tab-item:: Forwarding complete JSON object :sync: ForwardParam .. code-block:: yaml ConfigParams: uses: pyTooling/Actions/.github/workflows/ExtractConfiguration.yml@r6 OtherJob: uses: some/path/to/a/template@r6 needs: - ConfigParams with: report: ${{ needs.ConfigParams.outputs.unittest_report_xml }} .. tab-item:: Assembling new JSON object :sync: AssembleParam .. code-block:: yaml ConfigParams: uses: pyTooling/Actions/.github/workflows/ExtractConfiguration.yml@r6 OtherJob: uses: some/path/to/a/template@r6 needs: - ConfigParams with: report: >- { "dir": "${{ fromJson(needs.ConfigParams.outputs.unittest_report_xml).directory }}", "file": "${{ fromJson(needs.ConfigParams.outputs.unittest_report_xml).filename }}" } .. tab-item:: Using single field from JSON object :sync: SingleFieldFromParam .. code-block:: yaml ConfigParams: uses: pyTooling/Actions/.github/workflows/ExtractConfiguration.yml@r6 OtherJob: uses: some/path/to/a/template@r6 needs: - ConfigParams with: fullpath: ${{ fromJson(needs.ConfigParams.outputs.unittest_report_xml).fullpath }} .. _JOBTMPL/ExtractConfiguration/Output/unittest_merged_report_xml: unittest_merged_report_xml ========================== :Type: string (JSON) :Description: Returns a string in JSON format containing the directory, the filename and the fullpath to the merged unittest report file in JUnit XML format created by :term:`pyEDAA.Reports`. The JSON object contains these fields: :directory: Contains the directory where the merged unittest XML report file will be created. |br| Example: :file:`reports/unit` :filename: Contains the filename of the merged unittest XML report file. |br| Example: :file:`unittest.xml` :fullpath: Contains the path where the merged unittest XML report file will be created. |br| This is the concatenation of both previous JSON fields. |br| Example: :file:`reports/unit/unittest.xml` :pyproject.toml: Matching :file:`pyproject.toml` configuration for tool :term:`pyEDAA.Reports`. .. code-block:: toml [tool.pyedaa-reports] junit_xml = "report/unit/unittest.xml" :Example: .. code-block:: json { "directory": "reports/unit", "filename": "unittest.xml", "fullpath": "reports/unit/unittest.xml" } :Usage: .. tab-set:: .. tab-item:: Forwarding complete JSON object :sync: ForwardParam .. code-block:: yaml ConfigParams: uses: pyTooling/Actions/.github/workflows/ExtractConfiguration.yml@r6 OtherJob: uses: some/path/to/a/template@r6 needs: - ConfigParams with: report: ${{ needs.ConfigParams.outputs.unittest_merged_report_xml }} .. tab-item:: Assembling new JSON object :sync: AssembleParam .. code-block:: yaml ConfigParams: uses: pyTooling/Actions/.github/workflows/ExtractConfiguration.yml@r6 OtherJob: uses: some/path/to/a/template@r6 needs: - ConfigParams with: report: >- { "dir": "${{ fromJson(needs.ConfigParams.outputs.unittest_merged_report_xml).directory }}", "file": "${{ fromJson(needs.ConfigParams.outputs.unittest_merged_report_xml).filename }}" } .. tab-item:: Using single field from JSON object :sync: SingleFieldFromParam .. code-block:: yaml ConfigParams: uses: pyTooling/Actions/.github/workflows/ExtractConfiguration.yml@r6 OtherJob: uses: some/path/to/a/template@r6 needs: - ConfigParams with: fullpath: ${{ fromJson(needs.ConfigParams.outputs.unittest_merged_report_xml).fullpath }} .. _JOBTMPL/ExtractConfiguration/Output/coverage_report_html: coverage_report_html ==================== :Type: string (JSON) :Description: Returns a string in JSON format containing the directory and the full path, where the code coverage HTML report will be generated by :term:`Coverage.py`. The JSON object contains these fields: :directory: Contains the directory where the code coverage report in HTML format will be created. |br| Example: :file:`report/coverage/html` :fullpath: Contains the path where the code coverage report in HTML format will be created. |br| This is the same as the previous JSON field. |br| Example: :file:`report/coverage/html` :pyproject.toml: Matching :file:`pyproject.toml` configuration for tool :term:`Coverage.py`. .. code-block:: toml [tool.coverage.html] directory = "report/coverage/html" title="Code Coverage of pyDummy" :Example: .. code-block:: json { "directory": "report/coverage/html", "fullpath": "report/coverage/html" } :Usage: .. tab-set:: .. tab-item:: Forwarding complete JSON object :sync: ForwardParam .. code-block:: yaml ConfigParams: uses: pyTooling/Actions/.github/workflows/ExtractConfiguration.yml@r6 OtherJob: uses: some/path/to/a/template@r6 needs: - ConfigParams with: report: ${{ needs.ConfigParams.outputs.coverage_report_html }} .. tab-item:: Assembling new JSON object :sync: AssembleParam .. code-block:: yaml ConfigParams: uses: pyTooling/Actions/.github/workflows/ExtractConfiguration.yml@r6 OtherJob: uses: some/path/to/a/template@r6 needs: - ConfigParams with: report: >- { "dir": "${{ fromJson(needs.ConfigParams.outputs.coverage_report_html).directory }}", "file": "${{ fromJson(needs.ConfigParams.outputs.coverage_report_html).filename }}" } .. tab-item:: Using single field from JSON object :sync: SingleFieldFromParam .. code-block:: yaml ConfigParams: uses: pyTooling/Actions/.github/workflows/ExtractConfiguration.yml@r6 OtherJob: uses: some/path/to/a/template@r6 needs: - ConfigParams with: fullpath: ${{ fromJson(needs.ConfigParams.outputs.coverage_report_html).fullpath }} .. _JOBTMPL/ExtractConfiguration/Output/coverage_report_xml: coverage_report_xml =================== :Type: string (JSON) :Description: Returns a string in JSON format containing the directory, the filename and the fullpath to the code coverage XML report file in Cobertura XML format created by :term:`Coverage.py`. The JSON object contains these fields: :directory: Contains the directory where the code coverage XML report file will be created. |br| Example: :file:`reports/unit` :filename: Contains the filename of the code coverage XML report file. |br| Example: :file:`unittest.xml` :fullpath: Contains the path where the code coverage XML report file will be created. |br| This is the concatenation of both previous JSON fields. |br| Example: :file:`reports/unit/unittest.xml` :pyproject.toml: Matching :file:`pyproject.toml` configuration for tool :term:`Coverage.py`. .. code-block:: toml [tool.coverage.xml] output = "report/coverage/coverage.xml" :Example: .. code-block:: json { "directory": "reports/coverage", "filename": "coverage.xml", "fullpath": "reports/coverage/coverage.xml" } :Usage: .. tab-set:: .. tab-item:: Forwarding complete JSON object :sync: ForwardParam .. code-block:: yaml ConfigParams: uses: pyTooling/Actions/.github/workflows/ExtractConfiguration.yml@r6 OtherJob: uses: some/path/to/a/template@r6 needs: - ConfigParams with: report: ${{ needs.ConfigParams.outputs.coverage_report_xml }} .. tab-item:: Assembling new JSON object :sync: AssembleParam .. code-block:: yaml ConfigParams: uses: pyTooling/Actions/.github/workflows/ExtractConfiguration.yml@r6 OtherJob: uses: some/path/to/a/template@r6 needs: - ConfigParams with: report: >- { "dir": "${{ fromJson(needs.ConfigParams.outputs.coverage_report_xml).directory }}", "file": "${{ fromJson(needs.ConfigParams.outputs.coverage_report_xml).filename }}" } .. tab-item:: Using single field from JSON object :sync: SingleFieldFromParam .. code-block:: yaml ConfigParams: uses: pyTooling/Actions/.github/workflows/ExtractConfiguration.yml@r6 OtherJob: uses: some/path/to/a/template@r6 needs: - ConfigParams with: fullpath: ${{ fromJson(needs.ConfigParams.outputs.coverage_report_xml).fullpath }} .. _JOBTMPL/ExtractConfiguration/Output/coverage_report_json: coverage_report_json ==================== :Type: string (JSON) :Description: Returns a string in JSON format containing the directory, the filename and the fullpath to the code coverage JSON report file created by :term:`Coverage.py`. The JSON object contains these fields: :directory: Contains the directory where the code coverage JSON report file will be created. |br| Example: :file:`reports/unit` :filename: Contains the filename of the code coverage JSON report file. |br| Example: :file:`unittest.json` :fullpath: Contains the path where the code coverage JSON report file will be created. |br| This is the concatenation of both previous JSON fields. |br| Example: :file:`reports/unit/unittest.json` :pyproject.toml: Matching :file:`pyproject.toml` configuration for tool :term:`Coverage.py`. .. code-block:: toml [tool.coverage.json] output = "report/coverage/coverage.json" :Example: .. code-block:: json { "directory": "reports/coverage", "filename": "coverage.json", "fullpath": "reports/coverage/coverage.json" } :Usage: .. tab-set:: .. tab-item:: Forwarding complete JSON object :sync: ForwardParam .. code-block:: yaml ConfigParams: uses: pyTooling/Actions/.github/workflows/ExtractConfiguration.yml@r6 OtherJob: uses: some/path/to/a/template@r6 needs: - ConfigParams with: report: ${{ needs.ConfigParams.outputs.coverage_report_json }} .. tab-item:: Assembling new JSON object :sync: AssembleParam .. code-block:: yaml ConfigParams: uses: pyTooling/Actions/.github/workflows/ExtractConfiguration.yml@r6 OtherJob: uses: some/path/to/a/template@r6 needs: - ConfigParams with: report: >- { "dir": "${{ fromJson(needs.ConfigParams.outputs.coverage_report_json).directory }}", "file": "${{ fromJson(needs.ConfigParams.outputs.coverage_report_json).filename }}" } .. tab-item:: Using single field from JSON object :sync: SingleFieldFromParam .. code-block:: yaml ConfigParams: uses: pyTooling/Actions/.github/workflows/ExtractConfiguration.yml@r6 OtherJob: uses: some/path/to/a/template@r6 needs: - ConfigParams with: fullpath: ${{ fromJson(needs.ConfigParams.outputs.coverage_report_json).fullpath }} .. _JOBTMPL/ExtractConfiguration/Output/typing_report_cobertura: typing_report_cobertura ======================= :Type: string (JSON) :Description: Returns a string in JSON format containing the directory, the filename and the fullpath to the static type checking report file in Cobertura format created by :term:`mypy`. The JSON object contains these fields: :directory: Contains the directory where the type checking XML report file will be created. |br| Example: :file:`reports/typing` :filename: Contains the filename of the type checking XML report file. |br| Example: :file:`cobertura.xml` :fullpath: Contains the path where the type checking XML report file will be created. |br| This is the concatenation of both previous JSON fields. |br| Example: :file:`reports/typing/cobertura.xml` :pyproject.toml: Matching :file:`pyproject.toml` configuration for tool :term:`mypy`. .. code-block:: toml [tool.mypy] cobertura_xml_report = "report/typing" :Example: .. code-block:: json { "directory": "reports/typing", "filename": "cobertura.xml", "fullpath": "reports/typing/cobertura.xml" } :Usage: .. tab-set:: .. tab-item:: Forwarding complete JSON object :sync: ForwardParam .. code-block:: yaml ConfigParams: uses: pyTooling/Actions/.github/workflows/ExtractConfiguration.yml@r6 OtherJob: uses: some/path/to/a/template@r6 needs: - ConfigParams with: report: ${{ needs.ConfigParams.outputs.typing_report_cobertura }} .. tab-item:: Assembling new JSON object :sync: AssembleParam .. code-block:: yaml ConfigParams: uses: pyTooling/Actions/.github/workflows/ExtractConfiguration.yml@r6 OtherJob: uses: some/path/to/a/template@r6 needs: - ConfigParams with: report: >- { "dir": "${{ fromJson(needs.ConfigParams.outputs.typing_report_cobertura).directory }}", "file": "${{ fromJson(needs.ConfigParams.outputs.typing_report_cobertura).filename }}" } .. tab-item:: Using single field from JSON object :sync: SingleFieldFromParam .. code-block:: yaml ConfigParams: uses: pyTooling/Actions/.github/workflows/ExtractConfiguration.yml@r6 OtherJob: uses: some/path/to/a/template@r6 needs: - ConfigParams with: fullpath: ${{ fromJson(needs.ConfigParams.outputs.typing_report_cobertura).fullpath }} .. _JOBTMPL/ExtractConfiguration/Output/typing_report_junit: typing_report_junit =================== :Type: string (JSON) :Description: Returns a string in JSON format containing the directory, the filename and the fullpath to the static type checking report file in JUnit XML format created by :term:`mypy`. The JSON object contains these fields: :directory: Contains the directory where the static typing JUnit XML report file will be created. |br| Example: :file:`reports/typing` :filename: Contains the filename of the static typing JUnit XML report file. |br| Example: :file:`StaticTypingSummary.xml` :fullpath: Contains the path where the cstatic typing JUnit XML report file will be created. |br| This is the concatenation of both previous JSON fields. |br| Example: :file:`reports/typing/StaticTypingSummary.xml` :pyproject.toml: Matching :file:`pyproject.toml` configuration for tool :term:`mypy`. .. code-block:: toml [tool.mypy] junit_xml = "report/typing/StaticTypingSummary.xml" :Example: .. code-block:: json { "directory": "reports/typing", "filename": "StaticTypingSummary.xml", "fullpath": "reports/typing/StaticTypingSummary.xml" } :Usage: .. tab-set:: .. tab-item:: Forwarding complete JSON object :sync: ForwardParam .. code-block:: yaml ConfigParams: uses: pyTooling/Actions/.github/workflows/ExtractConfiguration.yml@r6 OtherJob: uses: some/path/to/a/template@r6 needs: - ConfigParams with: report: ${{ needs.ConfigParams.outputs.typing_report_junit }} .. tab-item:: Assembling new JSON object :sync: AssembleParam .. code-block:: yaml ConfigParams: uses: pyTooling/Actions/.github/workflows/ExtractConfiguration.yml@r6 OtherJob: uses: some/path/to/a/template@r6 needs: - ConfigParams with: report: >- { "dir": "${{ fromJson(needs.ConfigParams.outputs.typing_report_junit).directory }}", "file": "${{ fromJson(needs.ConfigParams.outputs.typing_report_junit).filename }}" } .. tab-item:: Using single field from JSON object :sync: SingleFieldFromParam .. code-block:: yaml ConfigParams: uses: pyTooling/Actions/.github/workflows/ExtractConfiguration.yml@r6 OtherJob: uses: some/path/to/a/template@r6 needs: - ConfigParams with: fullpath: ${{ fromJson(needs.ConfigParams.outputs.typing_report_junit).fullpath }} .. _JOBTMPL/ExtractConfiguration/Output/typing_report_html: typing_report_html ================== :Type: string (JSON) :Description: Returns a string in JSON format containing the directory, the filename and the fullpath to the static type checking report in HTML format created by :term:`mypy`. The JSON object contains these fields: :directory: Contains the directory where the static typing HTML report will be created. |br| Example: :file:`reports/typing/html` :fullpath: Contains the path where the static typing HTML report will be created. |br| This is the same as the previous JSON field. |br| Example: :file:`reports/typing/html` :pyproject.toml: Matching :file:`pyproject.toml` configuration for tool :term:`mypy`. .. code-block:: toml [tool.mypy] html_report = "report/typing/html" :Example: .. code-block:: json { "directory": "reports/typing/html", "fullpath": "reports/typing/html" } :Usage: .. tab-set:: .. tab-item:: Forwarding complete JSON object :sync: ForwardParam .. code-block:: yaml ConfigParams: uses: pyTooling/Actions/.github/workflows/ExtractConfiguration.yml@r6 OtherJob: uses: some/path/to/a/template@r6 needs: - ConfigParams with: report: ${{ needs.ConfigParams.outputs.typing_report_html }} .. tab-item:: Assembling new JSON object :sync: AssembleParam .. code-block:: yaml ConfigParams: uses: pyTooling/Actions/.github/workflows/ExtractConfiguration.yml@r6 OtherJob: uses: some/path/to/a/template@r6 needs: - ConfigParams with: report: >- { "dir": "${{ fromJson(needs.ConfigParams.outputs.typing_report_html).directory }}", "file": "${{ fromJson(needs.ConfigParams.outputs.typing_report_html).filename }}" } .. tab-item:: Using single field from JSON object :sync: SingleFieldFromParam .. code-block:: yaml ConfigParams: uses: pyTooling/Actions/.github/workflows/ExtractConfiguration.yml@r6 OtherJob: uses: some/path/to/a/template@r6 needs: - ConfigParams with: fullpath: ${{ fromJson(needs.ConfigParams.outputs.typing_report_html).fullpath }} .. _JOBTMPL/ExtractConfiguration/Optimizations: Optimizations ************* This template offers no optimizations (reduced job runtime).