From be1c5489197f9c19374ef94851182e4a2bcd0e35 Mon Sep 17 00:00:00 2001 From: Mohammed Ghannam Date: Fri, 2 Aug 2024 16:58:33 +0200 Subject: [PATCH] Add release guide (#878) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add basic release guide * Add update documentation step * Make the release guide a checklist instead of a list --------- Co-authored-by: João Dionísio <57299939+Joao-Dionisio@users.noreply.github.com> --- CHANGELOG.md | 1 + CONTRIBUTING.md | 9 +-------- RELEASE.md | 19 +++++++++++++++++++ 3 files changed, 21 insertions(+), 8 deletions(-) create mode 100644 RELEASE.md diff --git a/CHANGELOG.md b/CHANGELOG.md index 0c2585e6b..a17c223c0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ ### Added - Created Statistics class - Added parser to read .stats file +- Release checklist in `RELEASE.md` - Added Python definitions and wrappers for SCIPstartStrongbranch, SCIPendStrongbranch SCIPgetBranchScoreMultiple, SCIPgetVarStrongbranchInt, SCIPupdateVarPseudocost, SCIPgetVarStrongbranchFrac, SCIPcolGetAge, SCIPgetVarStrongbranchLast, SCIPgetVarStrongbranchNode, SCIPallColsInLP, SCIPcolGetAge diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 6b002ea69..f996ce613 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -43,14 +43,7 @@ If you find this contributing guide unclear, please open an issue! :) How to craft a release ---------------------- -1. update `CHANGELOG` -2. increase version number in `src/pyscipopt/__init__.py` according to semantic versioning -3. commit changes to the master branch -3. tag new version `git tag vX.Y.Z` -4. `git push` && `git push --tags` -5. [create GitHub release](https://github.com/scipopt/PySCIPOpt/releases) based on that tag - -A new PyPI package is automatically created by the GitHub actions when pushing a new tag onto the master and the version has been increased. Also the documentation is autmatically created in the process. +Moved to [RELEASE.md](RELEASE.md). Design principles of PySCIPOpt ============================== diff --git a/RELEASE.md b/RELEASE.md new file mode 100644 index 000000000..9f600ec82 --- /dev/null +++ b/RELEASE.md @@ -0,0 +1,19 @@ +# Release Checklist +The following are the steps to follow to make a new PySCIPOpt release. They should mostly be done in order. +- [ ] Check if [scipoptsuite-deploy](https://github.com/scipopt/scipoptsuite-deploy) needs a new release, if a new SCIP version is released for example, or new dependencies (change symmetry dependency, add support for papilo/ parallelization.. etc). And Update release links in `pyproject.toml` +- [ ] Check if the table in [readme](https://github.com/scipopt/PySCIPOpt#installation) needs to be updated. +- [ ] Update version number according to semantic versioning [rules](https://semver.org/) in `_version.py`.  +- [ ] Update `CHANGELOG.md`; Change the `Unlreased` to the new version number and add an empty unreleased section. +- [ ] Create a release candidate on test-pypi by running the workflow “Build wheels” in Actions->build wheels, with these parameters `upload:true, test-pypi:true`  +- [ ] If the pipeline passes, test the released pip package on test-pypi by running and checking that it works +```bash +pip install -i https://test.pypi.org/simple/ PySCIPOpt +``` +- [ ] If it works, release on pypi.org with running the same workflow but with `test-pypi:false`. +- [ ] Then create a tag wit the new version (from the master branch) +```bash +git tag vX.X.X +git push origin vX.X.X +``` +- [ ] Then make a github [release](https://github.com/scipopt/PySCIPOpt/releases/new) from this new tag. +- [ ] Update documentation by running the `Generate Docs` workflow in Actions->Generate Docs. \ No newline at end of file