Thank you for your interest in contributing into
containerimage-py! Here are some basic instructions and background information on how to do so.
- Tooling Setup
- Version Control
Discusses how to set up the project's pre-commit hooks, and install dependencies for the project's various make recipes
Important
All containerimage-py contributors should install the project's pre-commit hooks to ensure all incoming changes are secure, linted, and properly formatted
To install the project's pre-commit hooks, simply execute the following from the root of this repository
make pre-commitYou may need to execute other make recipes in contributing to the project, such as
make build: To ensure the project can still successfully build into a python distributionmake doc: To ensure the project's documentation can be generated without warningsmake sec: To ensure the source code contains no new secrets, to ensure project dependencies contain no known vulnerabilitiesmake test: To execute the unit tests across multiple python versions
For each of these recipes, we have recipes for installing their dependencies. For each, this simply involves appending -dependencies onto the recipe name. For example,
make build-dependenciesThe default python interpreter used by each recipe is /usr/bin/python3, but you may override this for your system by setting the PYTHON value like so
PYTHON=/my/custom/python make buildWarning
The make test-dependencies recipe DOES NOT install all the required python interpreter for tox. You must install each python interpreter expected by tox beforehand. Because this process is dependent on the system you are developing on, we do not have a straightforward make recipe written for this.
Tip
Any containerimage-py contributor should be familiar with the project's version control practices to ensure they contribute into the correct branches of the project, and understand how to include their changes in a project release
The containerimage-py project makes use of the following version control strategy.
- The
mainbranch represents the latest developments that are considered potentially shippable- The
mainbranch MAY incur API breaking changes at any time - Releases of
containerimage-pyMUST NOT be produced from themainbranch
- The
- For each release, we create a
release-x.ybranch, wherex.yis the Major.Minor version of the release- The
release-x.ybranch MUST NOT incur API breaking changes - Any release of
containerimage-pywith Major.Minor versionx.yMUST be produced from therelease-x.ybranch- Including the initial
x.y.0release,x.y.zpatch releases, and pre-releases (x.y.z-prerelease)
- Including the initial
- Any release of
containerimage-pyMUST be accompanied by a git tag and GitHub release
- The
- All new development MUST first be contributed into the
mainbranch, then cherry-picked (usinggit cherry-pick) into therelease-x.ybranch for its corresponding release- Any exception to this rule (such as backports to significantly old versions) MUST be approved by project maintainers