Closed xehu closed 2 weeks ago
This is what I had in mind about the development workflow:
dev
branchThe advantage of having a dev
branch is to separate releasing and developing, especially when there are many collaborators working on different features. In that case, we only merge new releases to main
to keep the history clean, while the dev
branch is constantly updated and tested. However, our package is not intensively being developed so I guess whether to have it is just a matter of choice. Our development can work totally fine without it.
dev
branch for new features / bug fixes / documentation updatesdev
. Code review is required, you would want to provide feedback and suggest improvements. Upon merging, the auto-test runs again to ensure there's no conflict after merging. If everything works well, delete the temporary branch.dev
), open a Pull Request to squash and merge dev
into main
. Again, code review is required, and auto-test will be triggered. Be sure to bump the version number in pyproject.toml
in this step. Optionally, a release branch can be created off dev
for further testing. In that case, we merge the release branch into main
instead of dev
.python -m build
, publish to PyPI: twine upload dist/*
(your API token is required at this step) and publish a release in GitHub. Optionally, this step can be automated by a GitHub Action which is triggered by any PRs to the main
branch.We want to keep Main largely consistent with the package itself, and have a dev
branch that we can push updates pretty frequently.
dev
branch and make sure it is up to date with main
dev
branch will have automatic testing.dev
into main
once sufficiently large amounts of new commits accumulate; main
will accept PR's from dev
pyproject.toml
(we should bump 1.0.0 -> 1.0.1; last number is a "patch release;" if we publish new features/major functions, we bump the second number, "minor update," and then the first number represents a "major change")python -m build
(locally; this creates the wheel files)twine upload dist/*
(with the API token; this will upload the wheel to the PyPI repository)
Moving forward, we need to establish a procedure that manages end-to-end updates to the package, from the moment a PR is merged in to deploying a new version of the package on PyPI. Some general requirements would be:
This issue will be updated as we come up with additional details for this pipeline.