CI/CD Configurations¶
The CI/CD (Continuous Integration and Continuous Delivery) workflows automate various development tasks to ensure project maintainability with minimal human effort. The configuration files are located at .github/workflows/*.yml
for GitHub and .gitlab/workflows/*.yml
for GitLab.
ci.yml
¶
The ci
workflow is the most frequently used workflow, running on all pull/merge requests and changes to the default main
branch. It performs linting, testing, and builds for the documentation and the package across all supported operation systems and Python versions to ensure everything works as expected.
commitlint.yml
¶
The commitlint
workflow checks whether the pull/merge request title comply with the Commit Convention. This ensures consistent commit history and enable the possibility of automated release pipeline.
delete-untagged-packages.yml
¶
The delete-untagged-packages
workflow removes untagged packages since GitHub will still keep the package when overridden with the same tag. It helps keep the GitHub Packages clean and tidy.
devcontainer.yml
¶
The devcontainer
workflow will be triggered by container related changes. It builds and tests the development and production containers and push the development container except during pull/merge requests, ensuring seamless containerized environments.
readthedocs-preview.yml
¶
The readthedocs-preview
workflow leverage the readthedocs/actions/preview to add Read the Docs preview links to the related pull requests. These links make it easy to review documentation changes.
release.yml
¶
The release
workflow manages the entire publish process, including publishing the documentation, containers and packages. It is triggered by a new release or a release tag. It also ensures all the builds and tests are succeed before completing the release.
renovate.yml
¶
The renovate
workflow automates the Template and Dependency Update. It is scheduled to run weekly and will create pull/merges request when there are new versions of the scaffold template, Python packages, GitHub Runners, GitHub Actions, docker images and etc. It keeps the project secure and ensures compatibility with the latest versions.
semantic-release.yml
¶
The semantic-release
workflow automate the versioning and release process by publishing new releases or new release tags when certain changes are pushed to the default main
branch. It simplifies the release management while maintaining consistency.