@@ -10,7 +10,15 @@ This repository gathers reusable CI tooling for testing, packaging and distribut
1010See [ GitHub Actions and GitHub Reusable Workflows] ( https://pytooling.github.io/Actions/Background.html ) for more
1111background information.
1212
13- ## Reusable workflows
13+ ## Reusable Actions
14+
15+ - Artifacts:
16+ - [ pyTooling/upload-artifact] ( https://github.com/pyTooling/upload-artifact ) : The upload-artifact action will preserve
17+ file attributes like permissions.
18+ - [ pyTooling/download-artifact] ( https://github.com/pyTooling/download-artifact ) : The download-artifact action will
19+ preserve file attributes like permissions.
20+
21+ ## Reusable Workflows
1422
1523This repository provides 10+ * Reusable Workflows* based on the CI pipelines of the repos in this GitHub organisation,
1624[ EDA²] ( https://github.com/edaa-org ) , [ VHDL] ( https://github.com/vhdl ) , and others. By combining them, Python packages can
@@ -27,31 +35,46 @@ As shown in the screenshots above, the expected order is:
2735 - [ Parameters] ( .github/workflows/Parameters.yml ) : a workaround for the limitations to handle global variables in
2836 GitHub Actions workflows (see [ actions/runner #480 ] ( https://github.com/actions/runner/issues/480 ) ).
2937 It generates outputs with artifact names and job matrices to be used in later running jobs.
38+ - [ ExtractConfiguration] ( .github/workflows/ExtractConfiguration.yml ) : extracts configuration values from
39+ ` pyproject.toml ` and exposes configured paths and filenames as job output parameters.
40+ - Predefined pipelines:
41+ - [ CompletePipeline] ( .github/workflows/CompletePipeline.yml )
3042- Code testing/analysis:
43+ - [ ApplicationTesting] ( .github/workflows/ApplicationTesting.yml ) : like UnitTesting, but running tests using an
44+ installed Python package.
3145 - [ UnitTesting] ( .github/workflows/UnitTesting.yml ) : run unit test with ` pytest ` using multiple versions of Python, and
3246 optionally upload results as XML reports. Configuration options to ` pytest ` should be given via section
33- ` [tool.pytest.ini_options] ` in a ` pyproject.toml ` file.
34- - [ CoverageCollection ] ( .github/workflows/CoverageCollection.yml ) : collect code coverage data (incl. branch coverage)
35- with ` pytest ` / ` pytest-cov ` / ` coverage.py ` using a single version of Python (latest). It generates HTML and Cobertura
36- (XML)reports, upload the HTML report as an artifact, and upload the test results to Codecov and Codacy. Configuration
37- options to ` pytest ` and ` coverage.py ` should be given via section ` [tool.pytest.ini_options] ` and ` [tool.coverage.*] `
38- in a ` pyproject.toml ` file .
47+ ` [tool.pytest.ini_options] ` in a ` pyproject.toml ` file. Besides test results, also code coverage data (incl. branch
48+ coverage) can be collected using ` pytest ` / ` pytest-cov ` / ` coverage.py ` . Configuration options to ` coverage.py ` should
49+ be given via section ` [tool. coverage.*] ` in a ` pyproject.toml ` file.
50+ While multiple report formats can be created in the job, it's recommended to use ` PublishTestResults ` and/or
51+ ` PublishCoverageResults ` to merge results from matrix runs and then generate final reports as XML, JSON or HTML.
52+ Finally, reports can be published to GitHub Pages or cloud services like Codecov and Codacy .
3953 - [ StaticTypeCheck] ( .github/workflows/StaticTypeCheck.yml ) : collect static type check result with ` mypy ` , and
4054 optionally upload results as an HTML report.
41- Example ` commands ` :
42-
4355 - [ VerifyDocs] ( .github/workflows/VerifyDocs.yml ) : extract code examples from the README and test these code snippets.
4456- Packaging and releasing:
4557 - [ Release] ( .github/workflows/Release.yml ) : publish GitHub Release.
58+ - [ NightlyRelease] ( .github/workflows/NightlyRelease.yml ) : publish GitHub Release.
4659 - [ Package] ( .github/workflows/Package.yml ) : generate source and wheel packages, and upload them as an artifact.
4760 - [ PublishOnPyPI] ( .github/workflows/PublishOnPyPI.yml ) : publish source and wheel packages to PyPI.
4861 - [ PublishTestResults] ( .github/workflows/PublishTestResults.yml ) : publish unit test results through GH action ` dorny/test-reporter ` .
62+ - [ PublishCoverageResults] ( .github/workflows/PublishCoverageResults.yml ) : publish ucode coverage results.
4963- Documentation:
50- - [ BuildTheDocs] ( .github/workflows/BuildTheDocs.yml ) : build Sphinx documentation with BuildTheDocs, and upload HTML as
51- an artifact.
64+ - [ SphinxDocumentation] ( .github/workflows/PublishCoverageResults.yml ) : create HTML and LaTeX documentation using
65+ Sphinx.
66+ - [ LaTeXDocumentation] ( .github/workflows/LaTeXDocumentation.yml ) : compile LaTeX documentation to a PDF file using
67+ MikTeX.
5268 - [ PublishToGitHubPages] ( .github/workflows/PublishToGitHubPages.yml ) : publish HTML documentation to GitHub Pages.
5369- Cleanup:
70+ - [ IntermediateCleanUp] ( .github/workflows/IntermediateCleanUp.yml ) : delete intermediate artifacts.
5471 - [ ArtifactCleanUp] ( .github/workflows/ArtifactCleanUp.yml ) : delete artifacts.
72+ - ⚠ Deprecated ⚠:
73+ - ⚠ [ CoverageCollection] ( .github/workflows/CoverageCollection.yml ) : Use ` UnitTesting ` , because is can collect code
74+ coverage too. This avoids code duplication in job templates.
75+ - ⚠ [ BuildTheDocs] ( .github/workflows/BuildTheDocs.yml ) : Use ` SphinxDocumentation ` , ` LaTeXDocumentation ` and
76+ ` PublishToGitHubPages ` . BuildTheDocs isn't maintained anymore.
77+
5578
5679### Example pipeline
5780
0 commit comments