|
1 | 1 | # Release Checklist |
2 | | -The following are the steps to follow to make a new PySCIPOpt release. They should mostly be done in order. |
3 | | -- [ ] 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` |
4 | | -- [ ] Check if the table in the [documentation](https://pyscipopt.readthedocs.io/en/latest/build.html#building-from-source) needs to be updated. |
5 | | -- [ ] Update version number according to semantic versioning [rules](https://semver.org/) in `src/pyscipopt/_version.py` and `setup.py` |
6 | | -- [ ] Update `CHANGELOG.md`; Change the `Unreleased` to the new version number and add an empty unreleased section. |
7 | | -- [ ] 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` |
8 | | -- [ ] If the pipeline passes, test the released pip package on test-pypi by running and checking that it works |
9 | | -```bash |
10 | | -pip install -i https://test.pypi.org/simple/ PySCIPOpt |
11 | | -``` |
12 | | -- [ ] If it works, release on pypi.org with running the same workflow but with `test-pypi:false`. |
13 | | -- [ ] Then create a tag with the new version (from the master branch) |
14 | | -```bash |
15 | | -git tag vX.X.X |
16 | | -git push origin vX.X.X |
17 | | -``` |
18 | | -- [ ] Then make a github [release](https://github.com/scipopt/PySCIPOpt/releases/new) from this new tag. |
19 | | -- [ ] Update the documentation: from readthedocs.io -> Builds -> Build version (latest and stable) |
| 2 | + |
| 3 | +## Upgrading SCIP |
| 4 | + |
| 5 | +Run `./upgrade_scip.sh` from the `master` branch. The script will: |
| 6 | +1. Prompt for SCIP, SoPlex, GCG, and IPOPT versions |
| 7 | +2. Build new binaries via [scipoptsuite-deploy](https://github.com/scipopt/scipoptsuite-deploy) (skipped if a matching release already exists) |
| 8 | +3. Create a branch, update `pyproject.toml`, and open a PR |
| 9 | + |
| 10 | +On the PR: |
| 11 | +- [ ] Fix any API incompatibilities |
| 12 | +- [ ] Get CI green |
| 13 | +- [ ] Update the [compatibility table](https://pyscipopt.readthedocs.io/en/latest/build.html#building-from-source) if needed |
| 14 | +- [ ] Merge into `master` |
| 15 | + |
| 16 | +## Releasing PySCIPOpt |
| 17 | + |
| 18 | +Run `./release.sh` from the `master` branch. The script will: |
| 19 | +1. Prompt for the version bump type (patch/minor/major) |
| 20 | +2. Update `_version.py`, `setup.py`, and `CHANGELOG.md` |
| 21 | +3. Commit, tag, push, and trigger a test-pypi build |
| 22 | + |
| 23 | +After the script completes: |
| 24 | +- [ ] Test the package from test-pypi: |
| 25 | + ```bash |
| 26 | + pip install -i https://test.pypi.org/simple/ PySCIPOpt==X.Y.Z |
| 27 | + ``` |
| 28 | +- [ ] Release to production pypi: |
| 29 | + ```bash |
| 30 | + gh workflow run build_wheels.yml --repo scipopt/PySCIPOpt -f upload_to_pypi=true -f test_pypi=false |
| 31 | + ``` |
| 32 | +- [ ] Create a GitHub release: |
| 33 | + ```bash |
| 34 | + gh release create vX.Y.Z --repo scipopt/PySCIPOpt --title vX.Y.Z --generate-notes |
| 35 | + ``` |
| 36 | +- [ ] Update readthedocs: Builds -> Build version (latest and stable) |
0 commit comments