Compare commits

..

44 Commits

Author SHA1 Message Date
Patrick Lehmann
d6342484cd v5.4.0 2025-08-29 22:14:18 +02:00
Patrick Lehmann
ba3d82668e Allow configuration of JUnit dialects. 2025-08-29 21:57:36 +02:00
Patrick Lehmann
4b0b103c5f v5.3.0 2025-08-29 07:49:24 +02:00
Patrick Lehmann
ba6f55dd57 Support cross-repository pull request runs from forks. 2025-08-28 22:36:35 +02:00
Patrick Lehmann
d48de1d02d v5.2.0 2025-08-17 13:21:18 +02:00
Patrick Lehmann
744f08b9bf Tag release only if not a scheduled CI run. 2025-08-17 10:44:31 +02:00
Patrick Lehmann
fb546453ae Bumped dependencies. 2025-08-13 01:09:26 +02:00
Patrick Lehmann
1a3ba03626 Check pytest outcome. 2025-07-27 22:32:42 +02:00
Patrick Lehmann
4d2d4c47fc Upload merged unit tests as artifact even if some test cases failed. 2025-07-16 08:26:01 +02:00
Patrick Lehmann
962827936c Build Sphinx documentation, even if some testcases have failed. 2025-07-15 22:35:13 +02:00
Patrick Lehmann
2307b526df v5.1.0 2025-06-20 02:09:09 +02:00
Patrick Lehmann
2ee14e88a2 v5.0.0 2025-06-16 15:14:28 +02:00
Patrick Lehmann
33edd82e6f v4.3.0 2025-04-18 10:39:54 +02:00
Patrick Lehmann
42e17fae05 v4.2.2 2025-03-07 21:12:53 +01:00
Patrick Lehmann
c81d139080 v4.2.1 2025-03-02 15:55:14 +01:00
Patrick Lehmann
78fdb584aa v4.2.0 2025-02-28 22:59:27 +01:00
Patrick Lehmann
679ec24c80 v4.1.0 2025-01-16 21:50:03 +01:00
Patrick Lehmann
b1e4cb961f v4.0.1 2025-01-14 21:16:37 +01:00
Patrick Lehmann
5d8a608893 v4.0.0 2025-01-14 17:03:38 +01:00
Patrick Lehmann
9ceefdbf5d v3.1.1 2024-12-08 23:44:56 +01:00
Patrick Lehmann
fdee9e011f v3.1.0 2024-12-08 21:27:59 +01:00
Patrick Lehmann
9e0b1c69f1 v3.0.0 2024-12-08 09:43:32 +01:00
Patrick Lehmann
9338fbd106 v2.0.1 2024-11-10 21:15:14 +01:00
Patrick Lehmann
bef77effcb v2.1.0 2024-11-10 19:03:51 +01:00
Patrick Lehmann
e7e95b446d v2.0.0 2024-11-10 11:18:28 +01:00
Patrick Lehmann
bf6ba9ba19 v1.1.0 2024-09-27 21:36:25 +02:00
Patrick Lehmann
5dc19a5d65 Merge branch 'cherry-picking' 2024-08-06 10:12:18 +02:00
Patrick Lehmann
188feb556b Fixed next expected parameter set. 2024-08-06 10:11:02 +02:00
Patrick Lehmann
d58db55086 Improved actual vs. expected prints. 2024-08-06 10:05:14 +02:00
Patrick Lehmann
ee9a3fbdcd Remove macOS with Python 3.8, 3.9 from expected list. 2024-08-06 09:54:41 +02:00
Patrick Lehmann
8dfc484c42 Merge branch 'cherry-picking' 2024-08-06 09:44:19 +02:00
Patrick Lehmann
960b7089e7 Fixed import problem.
(cherry picked from commit 33b99a3b4e)
2024-08-06 09:44:05 +02:00
Patrick Lehmann
706ef39595 Merge branch 'fix-releaser' 2024-08-06 09:34:17 +02:00
Patrick Lehmann
04881fc4ca fix(releaser): Use '--break-system-packages' only for Ubuntu 24.04.
(cherry picked from commit e444e57112)
2024-08-06 09:33:12 +02:00
Patrick Lehmann
0495bfb18c fix(releaser): fix failure to install PyGithub (#81) 2024-07-30 07:32:15 +02:00
Silverlan
7879c05ab7 fix(releaser): fix failure to install PyGithub
This fixes the error message:
× This environment is externally managed
2024-05-28 17:39:29 +02:00
Patrick Lehmann
e9d0dc3dba v1.0.5 2024-04-24 23:06:13 +02:00
Patrick Lehmann
ae32d20719 Merge branch 'dev' 2024-04-24 00:41:32 +02:00
Patrick Lehmann
87fa2b693a v1.0.3 2024-04-24 00:32:05 +02:00
Patrick Lehmann
6d039bba90 v1.0.2 2024-04-23 23:56:28 +02:00
Patrick Lehmann
3b95a36955 Upgrade with-post-step action to run using the Node.js 20.x runtime 2024-03-27 18:17:23 +01:00
Erich Soares Machado
583eed8c84 Upgrade with-post-step action to run using the Node.js 20.x runtime 2024-03-27 10:48:02 -04:00
Patrick Lehmann
60281e01e2 v1.0.1 2024-02-01 00:22:26 +01:00
Patrick Lehmann
66572dca45 v1.0.0 2024-01-19 01:11:59 +01:00
30 changed files with 201 additions and 151 deletions

View File

@@ -86,10 +86,10 @@ jobs:
steps:
- name: ⏬ Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v5
- name: 📥 Download artifacts '${{ inputs.wheel }}' from 'Package' job
uses: pyTooling/download-artifact@v4
uses: pyTooling/download-artifact@v5
with:
name: ${{ inputs.wheel }}
path: install

View File

@@ -41,7 +41,7 @@ jobs:
run: printf "::warning title=%s::%s\n" "Deprecated" "'BuildTheDocs.yml' is not maintained anymore. Please switch to 'SphinxDocumentation.yml', 'LaTeXDocumentation.yml' and 'ExtractConfiguration.yml'."
- name: ⏬ Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v5
- name: 🛳️ Build documentation
uses: buildthedocs/btd@v0

View File

@@ -50,7 +50,7 @@ jobs:
runs-on: "ubuntu-${{ inputs.ubuntu_image_version }}"
steps:
- name: ⏬ Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v5
- name: 🐍 Setup Python ${{ inputs.python_version }}
uses: actions/setup-python@v5

View File

@@ -33,11 +33,6 @@ on:
description: 'Name of the tool''s package.'
required: true
type: string
documentation:
description: 'Name of documentation document.'
required: false
default: ''
type: string
unittest_python_version:
description: 'Python version.'
required: false
@@ -131,16 +126,16 @@ on:
jobs:
Prepare:
uses: pyTooling/Actions/.github/workflows/PrepareJob.yml@dev
uses: pyTooling/Actions/.github/workflows/PrepareJob.yml@main
ConfigParams:
uses: pyTooling/Actions/.github/workflows/ExtractConfiguration.yml@dev
uses: pyTooling/Actions/.github/workflows/ExtractConfiguration.yml@main
with:
package_namespace: ${{ inputs.package_namespace }}
package_name: ${{ inputs.package_name }}
UnitTestingParams:
uses: pyTooling/Actions/.github/workflows/Parameters.yml@dev
uses: pyTooling/Actions/.github/workflows/Parameters.yml@main
with:
package_namespace: ${{ inputs.package_namespace }}
package_name: ${{ inputs.package_name }}
@@ -152,7 +147,7 @@ jobs:
disable_list: ${{ inputs.unittest_disable_list }}
# AppTestingParams:
# uses: pyTooling/Actions/.github/workflows/Parameters.yml@dev
# uses: pyTooling/Actions/.github/workflows/Parameters.yml@main
# with:
# package_namespace: ${{ inputs.package_namespace }}
# package_name: ${{ inputs.package_name }}
@@ -164,7 +159,7 @@ jobs:
# disable_list: ${{ inputs.apptest_disable_list }}
InstallParams:
uses: pyTooling/Actions/.github/workflows/Parameters.yml@dev
uses: pyTooling/Actions/.github/workflows/Parameters.yml@main
with:
package_namespace: ${{ inputs.package_namespace }}
package_name: ${{ inputs.package_name }}
@@ -176,7 +171,7 @@ jobs:
disable_list: ${{ inputs.unittest_disable_list }}
UnitTesting:
uses: pyTooling/Actions/.github/workflows/UnitTesting.yml@dev
uses: pyTooling/Actions/.github/workflows/UnitTesting.yml@main
needs:
- ConfigParams
- UnitTestingParams
@@ -191,7 +186,7 @@ jobs:
coverage_sqlite_artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).codecoverage_sqlite }}
StaticTypeCheck:
uses: pyTooling/Actions/.github/workflows/StaticTypeCheck.yml@dev
uses: pyTooling/Actions/.github/workflows/StaticTypeCheck.yml@main
needs:
- ConfigParams
- UnitTestingParams
@@ -204,7 +199,7 @@ jobs:
html_artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).statictyping_html }}
DocCoverage:
uses: pyTooling/Actions/.github/workflows/CheckDocumentation.yml@dev
uses: pyTooling/Actions/.github/workflows/CheckDocumentation.yml@main
needs:
- ConfigParams
- UnitTestingParams
@@ -213,7 +208,7 @@ jobs:
directory: ${{ needs.ConfigParams.outputs.package_directory }}
Package:
uses: pyTooling/Actions/.github/workflows/Package.yml@dev
uses: pyTooling/Actions/.github/workflows/Package.yml@main
needs:
- UnitTestingParams
# - UnitTesting
@@ -222,7 +217,7 @@ jobs:
artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).package_all }}
Install:
uses: pyTooling/Actions/.github/workflows/InstallPackage.yml@dev
uses: pyTooling/Actions/.github/workflows/InstallPackage.yml@main
needs:
- ConfigParams
- UnitTestingParams
@@ -234,7 +229,7 @@ jobs:
package_name: ${{ needs.ConfigParams.outputs.package_fullname }}
# AppTesting:
# uses: pyTooling/Actions/.github/workflows/ApplicationTesting.yml@dev
# uses: pyTooling/Actions/.github/workflows/ApplicationTesting.yml@main
# needs:
# - AppTestingParams
# - UnitTestingParams
@@ -245,11 +240,12 @@ jobs:
# apptest_xml_artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).apptesting_xml }}
PublishCoverageResults:
uses: pyTooling/Actions/.github/workflows/PublishCoverageResults.yml@dev
uses: pyTooling/Actions/.github/workflows/PublishCoverageResults.yml@main
needs:
- ConfigParams
- UnitTestingParams
- UnitTesting
if: success() || failure()
with:
# coverage_sqlite_artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).codecoverage_sqlite }}
# coverage_xml_artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).codecoverage_xml }}
@@ -267,11 +263,12 @@ jobs:
CODACY_TOKEN: ${{ secrets.CODACY_TOKEN }}
PublishTestResults:
uses: pyTooling/Actions/.github/workflows/PublishTestResults.yml@dev
uses: pyTooling/Actions/.github/workflows/PublishTestResults.yml@main
needs:
- ConfigParams
- UnitTestingParams
- UnitTesting
if: success() || failure()
with:
testsuite-summary-name: ${{ needs.ConfigParams.outputs.package_fullname }}
merged_junit_filename: ${{ needs.ConfigParams.outputs.unittest_merged_report_xml_filename }}
@@ -282,20 +279,21 @@ jobs:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
# VerifyDocs:
# uses: pyTooling/Actions/.github/workflows/VerifyDocs.yml@dev
# uses: pyTooling/Actions/.github/workflows/VerifyDocs.yml@main
# needs:
# - UnitTestingParams
# with:
# python_version: ${{ needs.UnitTestingParams.outputs.python_version }}
Documentation:
uses: pyTooling/Actions/.github/workflows/SphinxDocumentation.yml@dev
uses: pyTooling/Actions/.github/workflows/SphinxDocumentation.yml@main
needs:
- ConfigParams
- UnitTestingParams
- PublishTestResults
- PublishCoverageResults
# - VerifyDocs
if: success() || failure()
with:
python_version: ${{ needs.UnitTestingParams.outputs.python_version }}
coverage_report_json_directory: ${{ needs.ConfigParams.outputs.coverage_report_json_directory }}
@@ -305,28 +303,28 @@ jobs:
latex_artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).documentation_latex }}
IntermediateCleanUp:
uses: pyTooling/Actions/.github/workflows/IntermediateCleanUp.yml@dev
uses: pyTooling/Actions/.github/workflows/IntermediateCleanUp.yml@main
needs:
- UnitTestingParams
- PublishCoverageResults
- PublishTestResults
if: inputs.cleanup == 'true'
if: ( success() || failure() ) && inputs.cleanup == 'true'
with:
sqlite_coverage_artifacts_prefix: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).codecoverage_sqlite }}-
xml_unittest_artifacts_prefix: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).unittesting_xml }}-
PDFDocumentation:
uses: pyTooling/Actions/.github/workflows/LaTeXDocumentation.yml@latex
needs:
- UnitTestingParams
- Documentation
with:
document: ${{ inputs.documentation }}
latex_artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).documentation_latex }}
pdf_artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).documentation_pdf }}
# PDFDocumentation:
# uses: pyTooling/Actions/.github/workflows/LaTeXDocumentation.yml@main
# needs:
# - UnitTestingParams
# - Documentation
# with:
# document: pyEDAA.ProjectModel
# latex_artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).documentation_latex }}
# pdf_artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).documentation_pdf }}
PublishToGitHubPages:
uses: pyTooling/Actions/.github/workflows/PublishToGitHubPages.yml@dev
uses: pyTooling/Actions/.github/workflows/PublishToGitHubPages.yml@main
needs:
- UnitTestingParams
- Documentation
@@ -339,7 +337,7 @@ jobs:
typing: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).statictyping_html }}
TriggerTaggedRelease:
uses: pyTooling/Actions/.github/workflows/TagReleaseCommit.yml@dev
uses: pyTooling/Actions/.github/workflows/TagReleaseCommit.yml@main
needs:
- Prepare
- UnitTesting
@@ -348,7 +346,7 @@ jobs:
# - StaticTypeCheck
- Package
- PublishToGitHubPages
if: needs.Prepare.outputs.is_release_commit
if: needs.Prepare.outputs.is_release_commit && github.event_name != 'schedule'
permissions:
contents: write # required for create tag
actions: write # required for trigger workflow
@@ -358,7 +356,7 @@ jobs:
secrets: inherit
ReleasePage:
uses: pyTooling/Actions/.github/workflows/PublishReleaseNotes.yml@dev
uses: pyTooling/Actions/.github/workflows/PublishReleaseNotes.yml@main
needs:
- Prepare
- UnitTesting
@@ -376,7 +374,7 @@ jobs:
secrets: inherit
PublishOnPyPI:
uses: pyTooling/Actions/.github/workflows/PublishOnPyPI.yml@dev
uses: pyTooling/Actions/.github/workflows/PublishOnPyPI.yml@main
needs:
- Prepare
- UnitTestingParams
@@ -391,13 +389,13 @@ jobs:
PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }}
ArtifactCleanUp:
uses: pyTooling/Actions/.github/workflows/ArtifactCleanUp.yml@dev
uses: pyTooling/Actions/.github/workflows/ArtifactCleanUp.yml@main
needs:
- UnitTestingParams
- UnitTesting
- StaticTypeCheck
- Documentation
- PDFDocumentation
# - PDFDocumentation
- PublishTestResults
- PublishCoverageResults
- PublishToGitHubPages

View File

@@ -75,7 +75,7 @@ jobs:
run: printf "::warning title=%s::%s\n" "Deprecated" "'CoverageCollection.yml' is not maintained anymore. Please switch to 'UnitTesting.yml', 'PublishCoverageResults.yml' and 'PublishTestResults.yml'."
- name: ⏬ Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v5
with:
lfs: true
submodules: true

View File

@@ -123,7 +123,7 @@ jobs:
steps:
- name: ⏬ Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v5
- name: 🐍 Setup Python ${{ inputs.python_version }}
uses: actions/setup-python@v5

View File

@@ -53,7 +53,7 @@ jobs:
steps:
- name: 📥 Download artifacts '${{ inputs.wheel }}' from 'Package' job
uses: pyTooling/download-artifact@v4
uses: pyTooling/download-artifact@v5
with:
name: ${{ inputs.wheel }}
path: install

View File

@@ -43,37 +43,33 @@ on:
required: false
default: ''
type: string
miktex_image:
description: 'Name of the MikTeX image.'
required: false
default: 'pytooling/miktex:latest'
type: string
jobs:
PDFDocumentation:
name: 📓 Converting LaTeX Documentation to PDF
runs-on: "ubuntu-${{ inputs.ubuntu_image_version }}"
container:
image: ${{ inputs.miktex_image }}
steps:
- name: 📥 Download artifacts '${{ inputs.latex_artifact }}' from 'SphinxDocumentation' job
uses: pyTooling/download-artifact@v4
uses: pyTooling/download-artifact@v5
with:
name: ${{ inputs.latex_artifact }}
path: latex
- name: Version check
- name: Debug
run: |
echo "which pdflatex: $(which pdflatex)"
echo ""
pdflatex --version
tree -pash .
- name: Version check
run: |
cd latex
ls -lAh *.tex
latexmk ${{ inputs.document }}.tex
- name: Build LaTeX document using 'pytooling/miktex:sphinx'
uses: addnab/docker-run-action@v3
with:
image: pytooling/miktex:sphinx
options: -v ${{ github.workspace }}/latex:/latex --workdir /latex
run: |
which pdflatex
pwd
ls -lAh
latexmk -xelatex ${{ inputs.document }}.tex
- name: 📤 Upload 'PDF Documentation' artifact
uses: pyTooling/upload-artifact@v4

View File

@@ -101,7 +101,7 @@ jobs:
steps:
- name: ⏬ Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v5
with:
# The command 'git describe' (used for version) needs the history.
fetch-depth: 0

View File

@@ -53,7 +53,7 @@ jobs:
steps:
- name: ⏬ Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v5
with:
lfs: true
submodules: true

View File

@@ -103,11 +103,11 @@ jobs:
version: ${{ steps.Classify.outputs.version || steps.FindPullRequest.outputs.pr_version }}
# release_version: ${{ steps.FindPullRequest.outputs.release_version }}
pr_title: ${{ steps.FindPullRequest.outputs.pr_title }}
pr_number: ${{ steps.FindPullRequest.outputs.pr_number }}
pr_number: ${{ steps.Classify.outputs.pr_number || steps.FindPullRequest.outputs.pr_number }}
steps:
- name: ⏬ Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v5
with:
# The command 'git describe' (used for version) needs the history.
fetch-depth: 0
@@ -144,6 +144,7 @@ jobs:
ref_kind="unknown"
branch=""
tag=""
pr_number=""
version=""
if [[ "${ref:0:11}" == "refs/heads/" ]]; then
@@ -225,6 +226,13 @@ jobs:
printf "::error title=RexExpCheck::Tag name '%s' doesn't conform to regexp '%s' nor '%s'.\n" "${tag}" "${NIGHTLY_TAG_PATTERN}" "${RELEASE_TAG_PATTERN}"
exit 1
fi
elif [[ "${ref:0:10}" == "refs/pull/" ]]; then
ref_kind="pullrequest"
pr_number=${ref:11}
pr_number=${pr_number%%/*}
printf "Pull Request check:\n"
printf " Number: %s\n" "${pr_number}"
else
printf "${ANSI_LIGHT_RED}Unknown Git reference '%s'.${ANSI_NOCOLOR}\n" "${{ github.ref }}"
printf "::error title=Classify Commit::Unknown Git reference '%s'.\n" "${{ github.ref }}"
@@ -243,6 +251,7 @@ jobs:
ref_kind=${ref_kind}
branch=${branch}
tag=${tag}
pr_number=${pr_number}
version=${version}
EOF
@@ -327,8 +336,10 @@ jobs:
printf "ref_kind: %s\n" "${{ steps.Classify.outputs.ref_kind }}"
printf "branch: %s\n" "${{ steps.Classify.outputs.branch }}"
printf "tag: %s\n" "${{ steps.Classify.outputs.tag }}"
printf "version from tag: %s\n" "${{ steps.Classify.outputs.version }}"
printf "version from pr: %s\n" "${{ steps.FindPullRequest.outputs.pr_version }}"
printf "version: %s\n" "${{ steps.Classify.outputs.version || steps.FindPullRequest.outputs.pr_version }}"
printf " from tag: %s\n" "${{ steps.Classify.outputs.version }}"
printf " from pr: %s\n" "${{ steps.FindPullRequest.outputs.pr_version }}"
printf "pr title: %s\n" "${{ steps.FindPullRequest.outputs.pr_title }}"
printf "pr number: %s\n" "${{ steps.FindPullRequest.outputs.pr_number }}"
printf "pr number: %s\n" "${{ steps.Classify.outputs.pr_number || steps.FindPullRequest.outputs.pr_number }}"
printf " from merge: %s\n" "${{ steps.Classify.outputs.pr_number }}"
printf " from pr: %s\n" "${{ steps.FindPullRequest.outputs.pr_number }}"

View File

@@ -109,13 +109,13 @@ jobs:
steps:
- name: ⏬ Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v5
with:
lfs: true
submodules: true
- name: 📥 Download Artifacts
uses: pyTooling/download-artifact@v4
uses: pyTooling/download-artifact@v5
with:
pattern: ${{ inputs.coverage_artifacts_pattern }}
path: artifacts

View File

@@ -56,7 +56,7 @@ jobs:
steps:
- name: 📥 Download artifacts '${{ inputs.artifact }}' from 'Package' job
uses: pyTooling/download-artifact@v4
uses: pyTooling/download-artifact@v5
with:
name: ${{ inputs.artifact }}
path: dist

View File

@@ -133,7 +133,7 @@ jobs:
steps:
- name: ⏬ Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v5
with:
# The command 'git describe' (used for version) needs the history.
fetch-depth: 0

View File

@@ -44,6 +44,16 @@ on:
required: false
default: ''
type: string
merge-input-dialect:
description: 'JUnit dialect used to load and parse inputs for merging.'
required: false
default: 'pyTest-JUnit'
type: string
merge-output-dialect:
description: 'JUnit dialect used for writing the merged report.'
required: false
default: 'pyTest-JUnit'
type: string
additional_merge_args:
description: 'Additional merging arguments.'
required: false
@@ -92,10 +102,10 @@ jobs:
steps:
- name: ⏬ Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v5
- name: 📥 Download Artifacts
uses: pyTooling/download-artifact@v4
uses: pyTooling/download-artifact@v5
with:
pattern: ${{ inputs.unittest_artifacts_pattern }}
path: artifacts
@@ -116,13 +126,18 @@ jobs:
- name: 🔁 Merge JUnit Unit Test Summaries
run: |
pyedaa-reports -v unittest "--name=${{ inputs.testsuite-summary-name }}" "--merge=pyTest-JUnit:junit/*.xml" ${{ inputs.additional_merge_args }} "--output=pyTest-JUnit:${{ inputs.merged_junit_filename }}"
if [[ -n "${{ inputs.testsuite-summary-name }}" ]]; then
name="\"--name=${{ inputs.testsuite-summary-name }}\""
fi
pyedaa-reports -v unittest $name "--merge=${{ inputs.merge-input-dialect }}:junit/*.xml" ${{ inputs.additional_merge_args }} "--output=${{ inputs.merge-output-dialect }}:${{ inputs.merged_junit_filename }}"
printf "%s\n" "cat ${{ inputs.merged_junit_filename }}"
cat ${{ inputs.merged_junit_filename }}
- name: 📊 Publish Unit Test Results
uses: dorny/test-reporter@v2
id: test-reporter
if: ( inputs.dorny == 'true' || inputs.publish == 'true' ) && inputs.report_title != ''
continue-on-error: true
with:
name: ${{ inputs.report_title }}
path: ${{ inputs.merged_junit_filename }}
@@ -140,14 +155,6 @@ jobs:
flags: ${{ inputs.codecov_flags }}
fail_ci_if_error: true
- name: Generate error messages
run: |
if [[ "${{ steps.codecov.outcome }}" == "failure" ]]; then
printf "::error title=%s::%s\n" "Publish Unit Test Results / Codecov" "Failed to publish unittest results."
else
printf "Codecov: No errors to report.\n"
fi
- name: 📤 Upload merged 'JUnit Test Summary' artifact
uses: pyTooling/upload-artifact@v4
if: inputs.merged_junit_artifact != ''
@@ -157,3 +164,24 @@ jobs:
if-no-files-found: error
retention-days: 1
investigate: true
- name: Generate error messages
run: |
exitCode=0
if [[ "${{ steps.test-reporter.outcome }}" == "failure" ]]; then
printf "❌ Dorney/Test-Reporter: %s\n" "Failed to publish unittest results."
printf "::error title=%s::%s\n" "Dorney/Test-Reporter" "Failed to publish unittest results."
exitCode=1
else
printf "✅ Dorney/Test-Reporter: No errors to report.\n"
fi
if [[ "${{ steps.codecov.outcome }}" == "failure" ]]; then
printf "❌ CodeCov: %s\n" "Failed to publish unittest and code coverage results."
printf "::error title=%s::%s\n" "CodeCov" "Failed to publish unittest and code coverage results."
exitCode=1
else
printf "✅ CodeCov: No errors to report.\n"
fi
exit $exitCode

View File

@@ -53,23 +53,23 @@ jobs:
steps:
- name: ⏬ Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v5
- name: 📥 Download artifacts '${{ inputs.doc }}' from 'SphinxDocumentation' job
uses: pyTooling/download-artifact@v4
uses: pyTooling/download-artifact@v5
with:
name: ${{ inputs.doc }}
path: public
- name: 📥 Download artifacts '${{ inputs.coverage }}' from 'Coverage' job
uses: pyTooling/download-artifact@v4
uses: pyTooling/download-artifact@v5
if: ${{ inputs.coverage != '' }}
with:
name: ${{ inputs.coverage }}
path: public/coverage
- name: 📥 Download artifacts '${{ inputs.typing }}' from 'StaticTypeCheck' job
uses: pyTooling/download-artifact@v4
uses: pyTooling/download-artifact@v5
if: ${{ inputs.typing != '' }}
with:
name: ${{ inputs.typing }}

View File

@@ -81,7 +81,7 @@ jobs:
steps:
- name: ⏬ Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v5
with:
lfs: true
submodules: true
@@ -100,7 +100,7 @@ jobs:
python -m pip install --disable-pip-version-check ${{ inputs.requirements }}
- name: 📥 Download artifacts '${{ inputs.unittest_xml_artifact }}' from 'Unittesting' job
uses: pyTooling/download-artifact@v4
uses: pyTooling/download-artifact@v5
if: inputs.unittest_xml_artifact != ''
with:
name: ${{ inputs.unittest_xml_artifact }}
@@ -108,7 +108,7 @@ jobs:
investigate: true
- name: 📥 Download artifacts '${{ inputs.coverage_json_artifact }}' from 'PublishCoverageResults' job
uses: pyTooling/download-artifact@v4
uses: pyTooling/download-artifact@v5
if: inputs.coverage_json_artifact != ''
with:
name: ${{ inputs.coverage_json_artifact }}
@@ -140,7 +140,7 @@ jobs:
steps:
- name: ⏬ Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v5
with:
lfs: true
submodules: true
@@ -159,7 +159,7 @@ jobs:
python -m pip install --disable-pip-version-check ${{ inputs.requirements }}
- name: 📥 Download artifacts '${{ inputs.unittest_xml_artifact }}' from 'Unittesting' job
uses: pyTooling/download-artifact@v4
uses: pyTooling/download-artifact@v5
if: inputs.unittest_xml_artifact != ''
with:
name: ${{ inputs.unittest_xml_artifact }}
@@ -167,7 +167,7 @@ jobs:
investigate: true
- name: 📥 Download artifacts '${{ inputs.coverage_json_artifact }}' from 'PublishCoverageResults' job
uses: pyTooling/download-artifact@v4
uses: pyTooling/download-artifact@v5
if: inputs.coverage_json_artifact != ''
with:
name: ${{ inputs.coverage_json_artifact }}

View File

@@ -72,7 +72,7 @@ jobs:
steps:
- name: ⏬ Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v5
- name: 🐍 Setup Python ${{ inputs.python_version }}
uses: actions/setup-python@v5

View File

@@ -3,7 +3,7 @@
# Unai Martinez-Corral #
# #
# ==================================================================================================================== #
# Copyright 2020-2024 The pyTooling Authors #
# Copyright 2020-2025 The pyTooling Authors #
# #
# Licensed under the Apache License, Version 2.0 (the "License"); #
# you may not use this file except in compliance with the License. #
@@ -45,7 +45,7 @@ jobs:
env:
DOCKER_BUILDKIT: 1
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5
- name: Build container image
run: docker build -t ghcr.io/pytooling/releaser -f releaser/Dockerfile releaser
@@ -62,7 +62,7 @@ jobs:
Composite:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5
- run: printf "%s\n" "Build some tool and generate some (versioned) artifacts" > artifact-$(date -u +"%Y-%m-%dT%H-%M-%SZ").txt
@@ -122,7 +122,7 @@ jobs:
- Composite
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5
- run: printf "%s\n" "Build some tool and generate some (versioned) artifacts" > artifact-$(date -u +"%Y-%m-%dT%H-%M-%SZ").txt

View File

@@ -161,7 +161,7 @@ jobs:
steps:
- name: ⏬ Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v5
with:
lfs: true
submodules: true
@@ -342,6 +342,7 @@ jobs:
# Run pytests
- name: ✅ Run unit tests (Ubuntu/macOS)
id: pytest_bash
if: matrix.system != 'windows'
continue-on-error: true
run: |
@@ -359,6 +360,7 @@ jobs:
fi
- name: ✅ Run unit tests (Windows)
id: pytest_posh
if: matrix.system == 'windows'
continue-on-error: true
run: |
@@ -376,16 +378,19 @@ jobs:
}
- name: Convert coverage to XML format (Cobertura)
id: convert_xml
if: inputs.coverage_xml_artifact != ''
continue-on-error: true
run: coverage xml --data-file=.coverage
- name: Convert coverage to JSON format
id: convert_json
if: inputs.coverage_json_artifact != ''
continue-on-error: true
run: coverage json --data-file=.coverage
- name: Convert coverage to HTML format
id: convert_html
if: inputs.coverage_html_artifact != ''
continue-on-error: true
run: |
@@ -427,7 +432,7 @@ jobs:
retention-days: 1
- name: 📤 Upload 'Coverage XML Report' artifact
if: inputs.coverage_xml_artifact != ''
if: inputs.coverage_xml_artifact != '' && steps.convert_xml.outcome == 'success'
continue-on-error: true
uses: pyTooling/upload-artifact@v4
with:
@@ -437,7 +442,7 @@ jobs:
retention-days: 1
- name: 📤 Upload 'Coverage JSON Report' artifact
if: inputs.coverage_json_artifact != ''
if: inputs.coverage_json_artifact != '' && steps.convert_json.outcome == 'success'
continue-on-error: true
uses: pyTooling/upload-artifact@v4
with:
@@ -447,7 +452,7 @@ jobs:
retention-days: 1
- name: 📤 Upload 'Coverage HTML Report' artifact
if: inputs.coverage_html_artifact != ''
if: inputs.coverage_html_artifact != '' && steps.convert_html.outcome == 'success'
continue-on-error: true
uses: pyTooling/upload-artifact@v4
with:
@@ -456,3 +461,17 @@ jobs:
path: '*'
if-no-files-found: error
retention-days: 1
- name: Generate error messages
shell: bash
run: |
exitCode=0
if [[ "${{ steps.pytest_bash.outcome }}" == "failure" || "${{ steps.pytest_posh.outcome }}" == "failure" ]]; then
printf "❌ pytest: %s\n" "Error in pytest execution."
printf "::error title=%s::%s\n" "pytest" "Error in pytest execution."
exitCode=1
else
printf "✅ pytest: No errors.\n"
fi
exit $exitCode

View File

@@ -44,7 +44,7 @@ jobs:
steps:
- name: ⏬ Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v5
- name: 🐍 Setup Python
uses: actions/setup-python@v5

View File

@@ -6,7 +6,7 @@ on:
jobs:
Params:
uses: pyTooling/Actions/.github/workflows/Parameters.yml@dev
uses: pyTooling/Actions/.github/workflows/Parameters.yml@main
with:
name: Example
python_version_list: "3.12 3.13"
@@ -50,7 +50,7 @@ jobs:
retention-days: 1
ArtifactCleanUp:
uses: pyTooling/Actions/.github/workflows/ArtifactCleanUp.yml@dev
uses: pyTooling/Actions/.github/workflows/ArtifactCleanUp.yml@main
needs:
- Params
- Testing

View File

@@ -6,35 +6,35 @@ on:
jobs:
Prepare:
uses: pyTooling/Actions/.github/workflows/PrepareJob.yml@dev
uses: pyTooling/Actions/.github/workflows/PrepareJob.yml@main
ConfigParams:
uses: pyTooling/Actions/.github/workflows/ExtractConfiguration.yml@dev
uses: pyTooling/Actions/.github/workflows/ExtractConfiguration.yml@main
with:
package_name: pyDummy
InstallParams:
uses: pyTooling/Actions/.github/workflows/Parameters.yml@dev
uses: pyTooling/Actions/.github/workflows/Parameters.yml@main
with:
package_name: pyDummy
python_version_list: ''
UnitTestingParams:
uses: pyTooling/Actions/.github/workflows/Parameters.yml@dev
uses: pyTooling/Actions/.github/workflows/Parameters.yml@main
with:
name: pyDummy
python_version_list: "3.9 3.10 3.11 3.12 3.13 pypy-3.9 pypy-3.10"
# disable_list: "windows:pypy-3.10"
PlatformTestingParams:
uses: pyTooling/Actions/.github/workflows/Parameters.yml@dev
uses: pyTooling/Actions/.github/workflows/Parameters.yml@main
with:
name: Platform
python_version_list: ""
system_list: "ubuntu windows macos mingw64 clang64 ucrt64"
UnitTesting:
uses: pyTooling/Actions/.github/workflows/UnitTesting.yml@dev
uses: pyTooling/Actions/.github/workflows/UnitTesting.yml@main
needs:
- ConfigParams
- UnitTestingParams
@@ -51,7 +51,7 @@ jobs:
# coverage_html_artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).codecoverage_html }}
PlatformTesting:
uses: pyTooling/Actions/.github/workflows/UnitTesting.yml@dev
uses: pyTooling/Actions/.github/workflows/UnitTesting.yml@main
needs:
- ConfigParams
- PlatformTestingParams
@@ -70,7 +70,7 @@ jobs:
coverage_html_artifact: ${{ fromJson(needs.PlatformTestingParams.outputs.artifact_names).codecoverage_html }}
StaticTypeCheck:
uses: pyTooling/Actions/.github/workflows/StaticTypeCheck.yml@dev
uses: pyTooling/Actions/.github/workflows/StaticTypeCheck.yml@main
needs:
- ConfigParams
- UnitTestingParams
@@ -83,7 +83,7 @@ jobs:
html_artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).statictyping_html }}
DocCoverage:
uses: pyTooling/Actions/.github/workflows/CheckDocumentation.yml@dev
uses: pyTooling/Actions/.github/workflows/CheckDocumentation.yml@main
needs:
- ConfigParams
- UnitTestingParams
@@ -93,7 +93,7 @@ jobs:
# fail_below: 70
Package:
uses: pyTooling/Actions/.github/workflows/Package.yml@dev
uses: pyTooling/Actions/.github/workflows/Package.yml@main
needs:
- UnitTestingParams
# - UnitTesting
@@ -103,7 +103,7 @@ jobs:
artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).package_all }}
Install:
uses: pyTooling/Actions/.github/workflows/InstallPackage.yml@dev
uses: pyTooling/Actions/.github/workflows/InstallPackage.yml@main
needs:
- ConfigParams
- UnitTestingParams
@@ -115,7 +115,7 @@ jobs:
package_name: ${{ needs.ConfigParams.outputs.package_fullname }}
PublishCoverageResults:
uses: pyTooling/Actions/.github/workflows/PublishCoverageResults.yml@dev
uses: pyTooling/Actions/.github/workflows/PublishCoverageResults.yml@main
needs:
- ConfigParams
- UnitTestingParams
@@ -136,7 +136,7 @@ jobs:
secrets: inherit
PublishTestResults:
uses: pyTooling/Actions/.github/workflows/PublishTestResults.yml@dev
uses: pyTooling/Actions/.github/workflows/PublishTestResults.yml@main
needs:
- ConfigParams
- UnitTestingParams
@@ -151,14 +151,14 @@ jobs:
secrets: inherit
# VerifyDocs:
# uses: pyTooling/Actions/.github/workflows/VerifyDocs.yml@dev
# uses: pyTooling/Actions/.github/workflows/VerifyDocs.yml@main
# needs:
# - UnitTestingParams
# with:
# python_version: ${{ needs.UnitTestingParams.outputs.python_version }}
Documentation:
uses: pyTooling/Actions/.github/workflows/SphinxDocumentation.yml@dev
uses: pyTooling/Actions/.github/workflows/SphinxDocumentation.yml@main
needs:
- ConfigParams
- UnitTestingParams
@@ -174,7 +174,7 @@ jobs:
latex_artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).documentation_latex }}
IntermediateCleanUp:
uses: pyTooling/Actions/.github/workflows/IntermediateCleanUp.yml@dev
uses: pyTooling/Actions/.github/workflows/IntermediateCleanUp.yml@main
needs:
- UnitTestingParams
- PublishCoverageResults
@@ -184,7 +184,7 @@ jobs:
xml_unittest_artifacts_prefix: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).unittesting_xml }}-
PDFDocumentation:
uses: pyTooling/Actions/.github/workflows/LaTeXDocumentation.yml@dev
uses: pyTooling/Actions/.github/workflows/LaTeXDocumentation.yml@main
needs:
- UnitTestingParams
- Documentation
@@ -194,7 +194,7 @@ jobs:
pdf_artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).documentation_pdf }}
PublishToGitHubPages:
uses: pyTooling/Actions/.github/workflows/PublishToGitHubPages.yml@dev
uses: pyTooling/Actions/.github/workflows/PublishToGitHubPages.yml@main
needs:
- UnitTestingParams
- Documentation
@@ -207,7 +207,7 @@ jobs:
typing: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).statictyping_html }}
TriggerTaggedRelease:
uses: pyTooling/Actions/.github/workflows/TagReleaseCommit.yml@dev
uses: pyTooling/Actions/.github/workflows/TagReleaseCommit.yml@main
needs:
- Prepare
- UnitTesting
@@ -225,7 +225,7 @@ jobs:
secrets: inherit
ReleasePage:
uses: pyTooling/Actions/.github/workflows/PublishReleaseNotes.yml@dev
uses: pyTooling/Actions/.github/workflows/PublishReleaseNotes.yml@main
needs:
- Prepare
- UnitTesting
@@ -243,7 +243,7 @@ jobs:
secrets: inherit
PublishOnPyPI:
uses: pyTooling/Actions/.github/workflows/PublishOnPyPI.yml@dev
uses: pyTooling/Actions/.github/workflows/PublishOnPyPI.yml@main
needs:
- UnitTestingParams
- ReleasePage
@@ -256,7 +256,7 @@ jobs:
secrets: inherit
ArtifactCleanUp:
uses: pyTooling/Actions/.github/workflows/ArtifactCleanUp.yml@dev
uses: pyTooling/Actions/.github/workflows/ArtifactCleanUp.yml@main
needs:
- UnitTestingParams
- PlatformTestingParams

View File

@@ -6,11 +6,10 @@ on:
jobs:
NamespacePackage:
uses: pyTooling/Actions/.github/workflows/CompletePipeline.yml@latex
uses: pyTooling/Actions/.github/workflows/CompletePipeline.yml@main
with:
package_namespace: pyExamples
package_name: Extensions
documentation: Actions
codecov: true
codacy: true
dorny: true

View File

@@ -42,7 +42,7 @@ jobs:
retention-days: 1
NightlyPage:
uses: ./.github/workflows/NightlyRelease.yml
uses: pyTooling/Actions/.github/workflows/NightlyRelease.yml@main
needs:
- Build
permissions:

View File

@@ -6,24 +6,24 @@ on:
jobs:
Params_Default:
uses: pyTooling/Actions/.github/workflows/Parameters.yml@dev
uses: pyTooling/Actions/.github/workflows/Parameters.yml@main
with:
name: Example
Params_PythonVersions:
uses: pyTooling/Actions/.github/workflows/Parameters.yml@dev
uses: pyTooling/Actions/.github/workflows/Parameters.yml@main
with:
name: Example
python_version_list: "3.11 3.12 pypy-3.9 pypy-3.10"
Params_Systems:
uses: pyTooling/Actions/.github/workflows/Parameters.yml@dev
uses: pyTooling/Actions/.github/workflows/Parameters.yml@main
with:
name: Example
system_list: "windows mingw32 mingw64"
Params_Include:
uses: pyTooling/Actions/.github/workflows/Parameters.yml@dev
uses: pyTooling/Actions/.github/workflows/Parameters.yml@main
with:
name: Example
python_version_list: "3.11"
@@ -31,7 +31,7 @@ jobs:
include_list: "ubuntu:3.12 ubuntu:3.13"
Params_Exclude:
uses: pyTooling/Actions/.github/workflows/Parameters.yml@dev
uses: pyTooling/Actions/.github/workflows/Parameters.yml@main
with:
name: Example
python_version_list: "3.12"
@@ -39,7 +39,7 @@ jobs:
exclude_list: "windows:3.12 windows:3.13"
Params_Disable:
uses: pyTooling/Actions/.github/workflows/Parameters.yml@dev
uses: pyTooling/Actions/.github/workflows/Parameters.yml@main
with:
name: Example
python_version_list: "3.12"
@@ -47,7 +47,7 @@ jobs:
disable_list: "windows:3.12 windows:3.13"
Params_All:
uses: pyTooling/Actions/.github/workflows/Parameters.yml@dev
uses: pyTooling/Actions/.github/workflows/Parameters.yml@main
with:
name: Example
python_version_list: "3.12 3.13"

View File

@@ -6,14 +6,13 @@ on:
jobs:
SimplePackage:
uses: pyTooling/Actions/.github/workflows/CompletePipeline.yml@latex
uses: pyTooling/Actions/.github/workflows/CompletePipeline.yml@main
with:
package_name: pyDummy
documentation: Actions
codecov: true
codacy: true
dorny: true
cleanup: false
package_name: pyDummy
codecov: true
codacy: true
dorny: true
cleanup: false
secrets:
PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }}
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}

View File

@@ -85,7 +85,7 @@ The following block shows a minimal YAML workflow file:
steps:
# Clone repository
- uses: actions/checkout@v4
- uses: actions/checkout@v5
# Build your application, tool, artifacts, etc.
- name: Build

View File

@@ -79,7 +79,7 @@ jobs:
steps:
# Clone repository
- uses: actions/checkout@v4
- uses: actions/checkout@v5
# Build your application, tool, artifacts, etc.
- name: Build

View File

@@ -1,13 +1,13 @@
-r ../requirements.txt
# Coverage collection
Coverage ~= 7.9
Coverage ~= 7.10
# Test Runner
pytest ~= 8.4
pytest-cov ~= 6.2
# Static Type Checking
mypy ~= 1.16
mypy ~= 1.17
typing_extensions ~= 4.14
lxml ~= 5.4
lxml ~= 6.0