Pipeline #516
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Pipeline | |
on: | |
push: | |
workflow_dispatch: | |
schedule: | |
# Every Friday at 22:00 - rerun pipeline to check for dependency-based issues | |
- cron: '0 22 * * 5' | |
jobs: | |
Java-Ant-JUnit4: | |
runs-on: ubuntu-latest | |
steps: | |
- name: ⏬ Checkout repository | |
uses: actions/checkout@v4 | |
- name: ☕ Set up JDK 11 for x64 | |
uses: actions/setup-java@v4 | |
with: | |
java-version: '11' | |
distribution: 'temurin' | |
architecture: x64 | |
- name: ✅ Run the Ant 'junit' target | |
run: | | |
cd examples/Java/JUnit | |
ant -noinput -buildfile build-github.xml junit | |
- name: List generated XML reports | |
run: ls -lAh examples/Java/JUnit/build/*.xml | |
- name: 📤 Upload JUnit XML files as artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: Java-Ant-JUnit4 | |
path: examples/Java/JUnit/build/*.xml | |
Cpp-GoogleTest: | |
runs-on: ubuntu-latest | |
steps: | |
- name: ⏬ Checkout repository | |
uses: actions/checkout@v4 | |
- name: 🔧 Install dependencies | |
run: sudo apt-get install -y --no-install-recommends ninja-build | |
- name: 🛠 Run CMake | |
run: | | |
cd examples/Cpp/GoogleTest | |
cmake -B build -G Ninja | |
cmake --build build | |
- name: ✅ Run unit tests (directly) | |
run: | | |
cd examples/Cpp/GoogleTest | |
./build/unit_tests --gtest_output=xml:gtest.xml | |
- name: ✅ Run unit tests (by ctest) | |
run: | | |
cd examples/Cpp/GoogleTest | |
ctest --test-dir build/ --output-junit ../ctest.xml | |
- name: List generated XML reports | |
run: | | |
ls -lAh examples/Cpp/GoogleTest/*.xml | |
- name: 📤 Upload JUnit XML files as artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: Cpp-GoogleTest | |
path: examples/Cpp/GoogleTest/*.xml | |
Python-pytest: | |
runs-on: ubuntu-latest | |
steps: | |
- name: ⏬ Checkout repository | |
uses: actions/checkout@v4 | |
- name: 🐍 Setup Python 3.12 | |
uses: actions/setup-python@v5 | |
with: | |
python-version: 3.12 | |
- name: 🔧 Install pytest and other dependencies | |
run: python -m pip install --disable-pip-version-check -U pytest | |
- name: ✅ Run pytest | |
run: | | |
cd examples/Python/pytest | |
python3 -m pytest -rAP --color=yes --junitxml=TestReportSummary.xml . | |
- name: List generated XML reports | |
run: ls -lAh examples/Python/pytest/*.xml | |
- name: 📤 Upload JUnit XML files as artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: Python-pytest | |
path: examples/Python/pytest/*.xml | |
UnitTestingParams: | |
uses: pyTooling/Actions/.github/workflows/Parameters.yml@r1 | |
with: | |
name: pyEDAA.Reports | |
python_version_list: "3.9 3.10 3.11 3.12 pypy-3.9 pypy-3.10" | |
disable_list: "mingw64:* ucrt64:*" | |
AppTestingParams: | |
uses: pyTooling/Actions/.github/workflows/Parameters.yml@dev | |
with: | |
name: pyEDAA.Reports | |
python_version_list: "" # use latest Python version | |
system_list: "ubuntu macos macos-arm" | |
UnitTesting: | |
uses: pyTooling/Actions/.github/workflows/UnitTesting.yml@dev | |
needs: | |
- UnitTestingParams | |
with: | |
jobs: ${{ needs.UnitTestingParams.outputs.python_jobs }} | |
requirements: "-r tests/unit/requirements.txt" | |
pacboy: "msys/git python-lxml:p" | |
unittest_xml_artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).unittesting_xml }} | |
coverage_sqlite_artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).codecoverage_sqlite }} | |
StaticTypeCheck: | |
uses: pyTooling/Actions/.github/workflows/StaticTypeCheck.yml@r1 | |
needs: | |
- UnitTestingParams | |
with: | |
python_version: ${{ needs.UnitTestingParams.outputs.python_version }} | |
commands: | | |
touch pyEDAA/__init__.py | |
mypy --html-report htmlmypy -p pyEDAA.Reports | |
html_report: 'htmlmypy' | |
html_artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).statictyping_html }} | |
DocCoverage: | |
uses: pyTooling/Actions/.github/workflows/CheckDocumentation.yml@r1 | |
needs: | |
- UnitTestingParams | |
with: | |
python_version: ${{ needs.UnitTestingParams.outputs.python_version }} | |
directory: pyEDAA/Reports | |
# fail_below: 70 | |
Package: | |
uses: pyTooling/Actions/.github/workflows/Package.yml@r1 | |
needs: | |
- UnitTestingParams | |
- UnitTesting | |
with: | |
python_version: ${{ needs.UnitTestingParams.outputs.python_version }} | |
artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).package_all }} | |
AppTesting: | |
uses: pyTooling/Actions/.github/workflows/ApplicationTesting.yml@r1 | |
needs: | |
- AppTestingParams | |
- UnitTestingParams | |
- Package | |
- Java-Ant-JUnit4 | |
- Cpp-GoogleTest | |
- Python-pytest | |
with: | |
jobs: ${{ needs.AppTestingParams.outputs.python_jobs }} | |
wheel: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).package_all }} | |
apptest_xml_artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).apptesting_xml }} | |
PublishCoverageResults: | |
uses: pyTooling/Actions/.github/workflows/PublishCoverageResults.yml@r1 | |
needs: | |
- UnitTestingParams | |
- UnitTesting | |
with: | |
# coverage_sqlite_artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).codecoverage_sqlite }} | |
# coverage_xml_artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).codecoverage_xml }} | |
coverage_json_artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).codecoverage_json }} | |
coverage_html_artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).codecoverage_html }} | |
secrets: | |
codacy_token: ${{ secrets.CODACY_PROJECT_TOKEN }} | |
# PublishTestResults: | |
# uses: pyTooling/Actions/.github/workflows/PublishTestResults.yml@dev | |
# needs: | |
# - UnitTestingParams | |
# - UnitTesting | |
# with: | |
# merged_junit_artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).unittesting_xml }} | |
# VerifyDocs: | |
# uses: pyTooling/Actions/.github/workflows/VerifyDocs.yml@r1 | |
# needs: | |
# - UnitTestingParams | |
# with: | |
# python_version: ${{ needs.UnitTestingParams.outputs.python_version }} | |
HTMLDocumentation: | |
uses: pyTooling/Actions/.github/workflows/SphinxDocumentation.yml@r1 | |
needs: | |
- UnitTestingParams | |
# - PublishTestResults | |
- PublishCoverageResults | |
# - VerifyDocs | |
with: | |
python_version: ${{ needs.UnitTestingParams.outputs.python_version }} | |
unittest_xml_artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).unittesting_xml }}-ubuntu-native-3.12 | |
coverage_json_artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).codecoverage_json }} | |
html_artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).documentation_html }} | |
latex_artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).documentation_latex }} | |
IntermediateCleanUp: | |
uses: pyTooling/Actions/.github/workflows/IntermediateCleanUp.yml@r1 | |
needs: | |
- UnitTestingParams | |
- PublishCoverageResults | |
# - PublishTestResults | |
- HTMLDocumentation | |
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@r1 | |
# needs: | |
# - UnitTestingParams | |
# - HTMLDocumentation | |
# with: | |
# document: pyEDAA.Reports | |
# 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@r1 | |
needs: | |
- UnitTestingParams | |
- HTMLDocumentation | |
# - PDFDocumentation | |
- PublishCoverageResults | |
- StaticTypeCheck | |
with: | |
doc: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).documentation_html }} | |
coverage: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).codecoverage_html }} | |
typing: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).statictyping_html }} | |
ReleasePage: | |
uses: pyTooling/Actions/.github/workflows/Release.yml@r1 | |
if: startsWith(github.ref, 'refs/tags') | |
needs: | |
- Package | |
- AppTesting | |
- PublishToGitHubPages | |
PublishOnPyPI: | |
uses: pyTooling/Actions/.github/workflows/PublishOnPyPI.yml@r1 | |
if: startsWith(github.ref, 'refs/tags') | |
needs: | |
- UnitTestingParams | |
- ReleasePage | |
with: | |
python_version: ${{ needs.UnitTestingParams.outputs.python_version }} | |
requirements: -r dist/requirements.txt | |
artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).package_all }} | |
secrets: | |
PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }} | |
ArtifactCleanUp: | |
uses: pyTooling/Actions/.github/workflows/ArtifactCleanUp.yml@r1 | |
needs: | |
- UnitTestingParams | |
- UnitTesting | |
- StaticTypeCheck | |
- HTMLDocumentation | |
# - PDFDocumentation | |
# - PublishTestResults | |
- PublishCoverageResults | |
- PublishToGitHubPages | |
# - PublishOnPyPI | |
- IntermediateCleanUp | |
with: | |
package: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).package_all }} | |
remaining: | | |
${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).unittesting_html }}-* | |
${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).codecoverage_xml }}-* | |
${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).codecoverage_json }}-* | |
${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).codecoverage_html }}-* | |
${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).unittesting_xml }} | |
${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).unittesting_html }} | |
${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).codecoverage_sqlite }} | |
${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).codecoverage_xml }} | |
${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).codecoverage_json }} | |
${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).codecoverage_html }} | |
${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).statictyping_html }} | |
${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).documentation_html }} | |
${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).documentation_latex }} | |
${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).apptesting_xml }}-* | |
# ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).documentation_pdf }} |