name: Unit Testing, Coverage Collection, Package, Release, Documentation and Publish on: workflow_dispatch: jobs: # This job is a workaround for global variables # See https://github.com/actions/runner/issues/480 Params: uses: pyTooling/Actions/.github/workflows/Params.yml@dev with: name: ToolName # Optional python_version: '3.10' python_version_list: '3.8 3.9 3.10' UnitTesting: uses: pyTooling/Actions/.github/workflows/UnitTesting.yml@dev with: jobs: ${{ needs.Params.outputs.python_jobs }} # Optional requirements: '-r tests/requirements.txt' artifact: ${{ fromJson(needs.Params.outputs.params).artifacts.unittesting }} Coverage: uses: pyTooling/Actions/.github/workflows/CoverageCollection.yml@dev needs: - Params with: artifact: ${{ fromJson(needs.Params.outputs.params).artifacts.coverage }} # Optional python_version: ${{ fromJson(needs.Params.outputs.params).python_version }} requirements: '-r tests/requirements.txt' secrets: codacy_token: ${{ secrets.CODACY_PROJECT_TOKEN }} StaticTypeCheck: uses: pyTooling/Actions/.github/workflows/StaticTypeCheck.yml@dev needs: - Params with: commands: mypy --html-report htmlmypy -p ToolName artifact: ${{ fromJson(needs.Params.outputs.params).artifacts.typing }} # Optional python_version: ${{ fromJson(needs.Params.outputs.params).python_version }} requirements: '-r tests/requirements.txt' report: 'htmlmypy' Release: uses: pyTooling/Actions/.github/workflows/Release.yml@dev if: startsWith(github.ref, 'refs/tags') needs: - UnitTesting - Coverage - StaticTypeCheck Package: uses: pyTooling/Actions/.github/workflows/Package.yml@dev if: startsWith(github.ref, 'refs/tags') needs: - Params - Coverage with: artifact: ${{ fromJson(needs.Params.outputs.params).artifacts.package }} # Optional python_version: ${{ fromJson(needs.Params.outputs.params).python_version }} requirements: 'wheel' PublishOnPyPI: uses: pyTooling/Actions/.github/workflows/PublishOnPyPI.yml@dev if: startsWith(github.ref, 'refs/tags') needs: - Params - Release - Package with: artifact: ${{ fromJson(needs.Params.outputs.params).artifacts.package }} # Optional python_version: ${{ fromJson(needs.Params.outputs.params).python_version }} requirements: 'wheel twine' secrets: PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }} VerifyDocs: uses: pyTooling/Actions/.github/workflows/VerifyDocs.yml@dev needs: - Params with: # Optional python_version: ${{ fromJson(needs.Params.outputs.params).python_version }} BuildTheDocs: uses: pyTooling/Actions/.github/workflows/BuildTheDocs.yml@dev needs: - Params - VerifyDocs with: artifact: ${{ fromJson(needs.Params.outputs.params).artifacts.doc }} PublishToGitHubPages: uses: pyTooling/Actions/.github/workflows/PublishToGitHubPages.yml@dev needs: - Params - BuildTheDocs - Coverage - StaticTypeCheck with: doc: ${{ fromJson(needs.Params.outputs.params).artifacts.doc }} # Optional coverage: ${{ fromJson(needs.Params.outputs.params).artifacts.coverage }} typing: ${{ fromJson(needs.Params.outputs.params).artifacts.typing }} ArtifactCleanUp: name: 🗑️ Artifact Cleanup runs-on: ubuntu-latest needs: - Params - Coverage - StaticTypeCheck - BuildTheDocs - PublishToGitHubPages steps: - name: 🗑️ Delete package Artifacts if: ${{ ! startsWith(github.ref, 'refs/tags') }} uses: geekyeggo/delete-artifact@v1 with: name: | ${{ fromJson(needs.Params.outputs.params).artifacts.package }} - name: 🗑️ Delete remaining Artifacts uses: geekyeggo/delete-artifact@v1 with: name: | ${{ fromJson(needs.Params.outputs.params).artifacts.unittesting }}-* ${{ fromJson(needs.Params.outputs.params).artifacts.coverage }} ${{ fromJson(needs.Params.outputs.params).artifacts.typing }} ${{ fromJson(needs.Params.outputs.params).artifacts.doc }}