Skip to content

Commit

Permalink
Testing Workflow Templates with Dummy Project
Browse files Browse the repository at this point in the history
  • Loading branch information
Paebbels authored Oct 2, 2023
2 parents 26586b2 + 582c562 commit 3ed3cc8
Show file tree
Hide file tree
Showing 25 changed files with 608 additions and 17 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/ApplicationTesting.yml
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ jobs:

steps:
- name: ⏬ Checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v4

- name: 📥 Download artifacts '${{ inputs.wheel }}' from 'Package' job
uses: actions/download-artifact@v3
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/BuildTheDocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ jobs:

steps:
- name: ⏬ Checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v4

- name: 🛳️ Build documentation
uses: buildthedocs/btd@v0
Expand Down
3 changes: 2 additions & 1 deletion .github/workflows/CoverageCollection.yml
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ jobs:

steps:
- name: ⏬ Checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v4

- name: 🐍 Setup Python ${{ inputs.python_version }}
uses: actions/setup-python@v4
Expand Down Expand Up @@ -131,6 +131,7 @@ jobs:
continue-on-error: true
run: |
export ENVIRONMENT_NAME="Linux (x86-64)"
export PYTHONPATH=$(pwd)
ABSDIR=$(pwd)
cd "${{ inputs.tests_directory || '.' }}"
[ -n '${{ inputs.coverage_config }}' ] && PYCOV_ARGS="--cov-config=${ABSDIR}/${{ inputs.coverage_config }}" || unset PYCOV_ARGS
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/Package.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ jobs:

steps:
- name: ⏬ Checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v4

- name: 🐍 Setup Python ${{ inputs.python_version }}
uses: actions/setup-python@v4
Expand Down
3 changes: 2 additions & 1 deletion .github/workflows/Pipeline.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
name: Pipeline
#name: Pipeline
name: Documentation

on:
push:
Expand Down
67 changes: 67 additions & 0 deletions .github/workflows/PublishCoverageResults.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
# ==================================================================================================================== #
# Authors: #
# Patrick Lehmann #
# #
# ==================================================================================================================== #
# Copyright 2020-2023 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. #
# You may obtain a copy of the License at #
# #
# http://www.apache.org/licenses/LICENSE-2.0 #
# #
# Unless required by applicable law or agreed to in writing, software #
# distributed under the License is distributed on an "AS IS" BASIS, #
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
# See the License for the specific language governing permissions and #
# limitations under the License. #
# #
# SPDX-License-Identifier: Apache-2.0 #
# ==================================================================================================================== #
name: Publish Unit Test Results

on:
workflow_call:
inputs:
report_files:
description: 'Pattern of report files to upload. Can be a comma separated list.'
required: false
default: 'artifacts/**/*.xml'
type: string
secrets:
codacy_token:
description: 'Token to push result to codacy.'
required: true

jobs:
PublishTestResults:
name: 📊 Publish Test Results
runs-on: ubuntu-latest
if: always()

steps:
- name: ⏬ Checkout repository
uses: actions/checkout@v4

- name: Download Artifacts
uses: actions/download-artifact@v3
with:
path: artifacts

- name: 📊 Publish code coverage at CodeCov
if: inputs.CodeCov == true
continue-on-error: true
uses: codecov/codecov-action@v3
with:
files: ${{ steps.getVariables.outputs.coverage_report_xml }}
flags: unittests
env_vars: PYTHON

- name: 📉 Publish code coverage at Codacy
if: inputs.Codacy == true
continue-on-error: true
uses: codacy/codacy-coverage-reporter-action@v1
with:
project-token: ${{ secrets.codacy_token }}
coverage-reports: ${{ steps.getVariables.outputs.coverage_report_xml }}
2 changes: 1 addition & 1 deletion .github/workflows/PublishTestResults.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ jobs:

steps:
- name: ⏬ Checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v4

- name: Download Artifacts
uses: actions/download-artifact@v3
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/PublishToGitHubPages.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ jobs:

steps:
- name: ⏬ Checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v4

- name: 📥 Download artifacts '${{ inputs.doc }}' from 'BuildTheDocs' job
uses: actions/download-artifact@v3
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/StaticTypeCheck.yml
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ jobs:

steps:
- name: ⏬ Checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v4

- name: 🐍 Setup Python ${{ inputs.python_version }}
uses: actions/setup-python@v4
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/TestReleaser.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ jobs:
env:
DOCKER_BUILDKIT: 1
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4

- name: Build container image
run: docker build -t ghcr.io/pytooling/releaser -f releaser/Dockerfile releaser
Expand All @@ -62,7 +62,7 @@ jobs:
Composite:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4

- run: echo "Build some tool and generate some (versioned) artifacts" > artifact-$(date -u +"%Y-%m-%dT%H-%M-%SZ").txt

Expand Down Expand Up @@ -122,7 +122,7 @@ jobs:
- Composite
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4

- run: echo "Build some tool and generate some (versioned) artifacts" > artifact-$(date -u +"%Y-%m-%dT%H-%M-%SZ").txt

Expand Down
10 changes: 7 additions & 3 deletions .github/workflows/UnitTesting.yml
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ jobs:

steps:
- name: ⏬ Checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v4

- name: Compute pacman/pacboy packages
id: pacboy
Expand Down Expand Up @@ -192,19 +192,23 @@ jobs:
if: matrix.system == 'windows'
run: |
$env:ENVIRONMENT_NAME = "${{ matrix.envname }}"
$env:PYTHONPATH = (Get-Location).ToString()
cd "${{ inputs.tests_directory || '.' }}"
$PYTEST_ARGS = if ("${{ inputs.artifact }}") { "--junitxml=TestReportSummary.xml" } else { "" }
python -m pytest -rA ${{ inputs.unittest_directory }} $PYTEST_ARGS --color=yes
Write-Host "python -m pytest -rA $PYTEST_ARGS --color=yes ${{ inputs.unittest_directory }}"
python -m pytest -rA $PYTEST_ARGS --color=yes ${{ inputs.unittest_directory }}
- name: ☑ Run unit tests (Ubuntu/macOS)
if: matrix.system != 'windows'
run: |
export ENVIRONMENT_NAME="${{ matrix.envname }}"
export PYTHONPATH=$(pwd)
ABSDIR=$(pwd)
cd "${{ inputs.tests_directory || '.' }}"
[ -n '${{ inputs.coverage_config }}' ] && PYCOV_ARGS="--cov-config=${ABSDIR}/${{ inputs.coverage_config }}" || unset PYCOV_ARGS
[ -n '${{ inputs.artifact }}' ] && PYTEST_ARGS='--junitxml=TestReportSummary.xml' || unset PYTEST_ARGS
python -m pytest -rA ${{ inputs.unittest_directory }} $PYTEST_ARGS --color=yes
echo "python -m pytest -rA $PYTEST_ARGS --color=yes ${{ inputs.unittest_directory }}"
python -m pytest -rA $PYTEST_ARGS --color=yes ${{ inputs.unittest_directory }}
- name: 📤 Upload 'TestReportSummary.xml' artifact
if: inputs.artifact != ''
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/VerifyDocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ jobs:

steps:
- name: ⏬ Checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v4

- name: 🐍 Setup Python
uses: actions/setup-python@v4
Expand Down
155 changes: 155 additions & 0 deletions .github/workflows/_Checking_Pipeline.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,155 @@
name: Verification of Complete Pipeline

on:
push:
workflow_dispatch:

jobs:
UnitTestingParams:
uses: pyTooling/Actions/.github/workflows/Parameters.yml@cov
with:
name: pyDummy
python_version_list: "3.11"
# python_version_list: "3.7 3.8 pypy-3.8 3.9 pypy-3.9 3.10 3.11"
exclude_list: "windows:pypy-3.8 windows:pypy-3.9"
# disable_list: "windows:3.11"

PlatformTestingParams:
uses: pyTooling/Actions/.github/workflows/Parameters.yml@cov
with:
name: Platform
python_version_list: ""
system_list: "ubuntu"
# system_list: "ubuntu windows macos mingw32 mingw64 clang64 ucrt64"

UnitTesting:
uses: pyTooling/Actions/.github/workflows/UnitTesting.yml@cov
needs:
- UnitTestingParams
with:
jobs: ${{ needs.UnitTestingParams.outputs.python_jobs }}
artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).unittesting_xml }}

PlatformTesting:
uses: pyTooling/Actions/.github/workflows/UnitTesting.yml@cov
needs:
- PlatformTestingParams
with:
jobs: ${{ needs.PlatformTestingParams.outputs.python_jobs }}
tests_directory: ""
unittest_directory: tests/unit/Platform
artifact: ${{ fromJson(needs.PlatformTestingParams.outputs.artifact_names).unittesting_xml }}

Coverage:
uses: pyTooling/Actions/.github/workflows/CoverageCollection.yml@cov
needs:
- UnitTestingParams
with:
python_version: ${{ needs.UnitTestingParams.outputs.python_version }}
artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).codecoverage_html }}
secrets:
codacy_token: ${{ secrets.CODACY_PROJECT_TOKEN }}

PublishCoverageResults:
uses: pyTooling/Actions/.github/workflows/PublishCoverageResults.yml@cov
needs:
- UnitTesting
- Coverage
secrets:
codacy_token: ${{ secrets.CODACY_PROJECT_TOKEN }}

StaticTypeCheck:
uses: pyTooling/Actions/.github/workflows/StaticTypeCheck.yml@cov
needs:
- UnitTestingParams
with:
python_version: ${{ needs.UnitTestingParams.outputs.python_version }}
commands: |
mypy --html-report htmlmypy -p pyDummy
html_report: 'htmlmypy'
html_artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).statictyping_html }}

PublishTestResults:
uses: pyTooling/Actions/.github/workflows/PublishTestResults.yml@cov
needs:
- UnitTesting

Package:
uses: pyTooling/Actions/.github/workflows/Package.yml@cov
needs:
- UnitTestingParams
- Coverage
- PlatformTesting
with:
python_version: ${{ needs.UnitTestingParams.outputs.python_version }}
artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).package_all }}

Release:
uses: pyTooling/Actions/.github/workflows/Release.yml@cov
if: startsWith(github.ref, 'refs/tags')
needs:
- UnitTesting
- Coverage
- StaticTypeCheck
- Package

PublishOnPyPI:
uses: pyTooling/Actions/.github/workflows/PublishOnPyPI.yml@cov
if: startsWith(github.ref, 'refs/tags')
needs:
- UnitTestingParams
- Release
- Package
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 }}

# VerifyDocs:
# uses: pyTooling/Actions/.github/workflows/VerifyDocs.yml@cov
# needs:
# - UnitTestingParams
# with:
# python_version: ${{ needs.UnitTestingParams.outputs.python_version }}

# BuildTheDocs:
# uses: pyTooling/Actions/.github/workflows/BuildTheDocs.yml@cov
# needs:
# - UnitTestingParams
## - VerifyDocs
# with:
# artifact: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).documentation_html }}

PublishToGitHubPages:
uses: pyTooling/Actions/.github/workflows/PublishToGitHubPages.yml@cov
needs:
- UnitTestingParams
# - BuildTheDocs
- Coverage
- 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 }}

ArtifactCleanUp:
uses: pyTooling/Actions/.github/workflows/ArtifactCleanUp.yml@cov
needs:
- UnitTestingParams
- UnitTesting
- PlatformTesting
- Coverage
- StaticTypeCheck
# - BuildTheDocs
- PublishToGitHubPages
- PublishCoverageResults
- PublishTestResults
with:
package: ${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).package_all }}
remaining: |
${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).unittesting_xml }}-*
${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).codecoverage_html }}
${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).statictyping_html }}
${{ fromJson(needs.UnitTestingParams.outputs.artifact_names).documentation_html }}
2 changes: 1 addition & 1 deletion doc/Action/Releaser.rst
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ The following block shows a minimal YAML workflow file:
steps:
# Clone repository
- uses: actions/checkout@v3
- uses: actions/checkout@v4
# Build your application, tool, artifacts, etc.
- name: Build
Expand Down
Loading

0 comments on commit 3ed3cc8

Please sign in to comment.