Python continuous integration (CI) support tools.
To install: pip install isee
The goal of CI is to automate code formatting, validation, deployment and publishing of packages.
A CI pipeline is triggered when new code is pushed to a remote repository. Every CI pipeline does at least:
You can see your CI pipeline's result and logs:
Versioning is semi-automatically resolved: if you want the major or minor part to be bumped, you only have to add [bump major] or [bump minor] to your commit message on master (versioning is not applied to other branches).
Example, the current version number is 1.0.5. If you commit with the following message:
Added some new stuff.
the new version number will be 1.0.6. But if you commit with the following message:
Added some great new stuff! [bump minor]
the new version number will be 1.1.0. Finally, if you commit with the following message:
Added some extraordinary new stuff!!! [bump major]
the new version number will be 2.0.0.
You can prevent the CI pipeline from being triggered by adding [skip ci] to your commit message. Example:
Updated the README file. [skip ci]
Be careful! If you skip the CI process, any new code will not be validated and no new version will be deployed/published. So, think twice before using it.
CI pipelines for GitHub public repositories are run on GitHub-hosted runners. See the GitHub documentation for more details
This "How to" section applies to python package projects only. If you want to setup CI to an application project or another programing language, you will have to modify the CI pipeline definition according to your needs.
github/workflow/
directory (create the directory if it doesn't exist) into your local repository.
Note that wads does it for you by running the following command from the project's root directory (documentation here):
populate . --root-url=GITHUB_ROOT_URL
Note that you can specify the root directory (in case you're not in the root directory), root url (in case the directory is not already associated to a git repo), and have many other parametrization choices.
Fear not: populate
will not create or modify the ci.yml
file (or any other file) if there is one already.
ci.yml
file, replace #PROJECT_NAME#
with the project name (must be the exact same name as the main module of the project, not needed if you ran the populate
tool because it did it for you) and modify the pipeline workflow to suit the project's needs. Documentation here.PYPI_USERNAME
and PYPI_PASSWORD
with your PYPI credentials to the remote repository. Documentation here./docs
folder. Documentation here.Continuous Integration
workflow. Documentation here.
Consider using wads to automatically validate your code locally, commit and push by running the following command (documentation here):
pack check-in 'Your commit message.'
Sometimes the twine PYPI publishing may fail with such a message:
WARNING Skipping PKGNAME-0.1.4-py3-none-any.whl because it appears to already exist
WARNING Skipping PKGNAME-0.1.4.tar.gz because it appears to already exist
This often means that your git tags are misaligned with the setup.cfg
version.
You can see your git tags here: https://github.com/ORG/REPO/tags
.
To repair, do this:
setup.cfg
and see what version is there, called it SETUP_VERSIONsetup.cfg
so it shows NEW_VERSIONgit tag NEW_VERSION
git push origin NEW_VERSION
Sometimes I need to update the setup version again, and push again.