diff --git a/.github/release_workflow.md b/.github/release_workflow.md index 690f7fa407..89a22e7d38 100644 --- a/.github/release_workflow.md +++ b/.github/release_workflow.md @@ -21,9 +21,9 @@ This file contains the workflow required to make a `PyBaMM` release on GitHub, P ## rcX releases (manual) -If a new release candidate is required after the release of `rc0` - +If a new release candidate is required after the release of `rc{X-1}` - -1. Fix a bug in `vYY.MM` (no new features should be added to `vYY.MM` once `rc0` is released) and `develop` individually. +1. Cherry-pick the bug fix (no new features should be added to `vYY.MM` once `rc{X-1}` is released) commit to `vYY.MM` branch once the fix is merged into `develop`. The CHANGELOG entry for such fixes should go under the `rc{X-1}` heading in `CHANGELOG.md` 2. Run `update_version.yml` manually while using `append_to_tag` to specify the release candidate version number (`rc1`, `rc2`, ...). @@ -36,7 +36,7 @@ If a new release candidate is required after the release of `rc0` - - `vcpkg.json` - `CHANGELOG.md` - These changes will be automatically pushed to the existing `vYY.MM` branch and a PR from `vvYY.MM` to `develop` will be created (to sync the branches). + These changes will be automatically pushed to the existing `vYY.MM` branch and a PR will be created to update version strings in `develop`. 4. Create a new GitHub _pre-release_ with the same tag (`vYY.MMrcX`) from the `vYY.MM` branch and a description copied from `CHANGELOG.md`. @@ -57,7 +57,7 @@ Once satisfied with the release candidates - - `vcpkg.json` - `CHANGELOG.md` - These changes will be automatically pushed to the existing `vYY.MM` branch and a PR from `vvYY.MM` to `develop` will be created (to sync the branches). + These changes will be automatically pushed to the existing `vYY.MM` branch and a PR will be created to update version strings in `develop`. 3. Next, a PR from `vYY.MM` to `main` will be generated that should be merged once all the tests pass. diff --git a/.github/workflows/publish_pypi.yml b/.github/workflows/publish_pypi.yml index 8a8126b0e4..ce930733db 100644 --- a/.github/workflows/publish_pypi.yml +++ b/.github/workflows/publish_pypi.yml @@ -213,7 +213,7 @@ jobs: open_failure_issue: needs: [build_windows_wheels, build_macos_and_linux_wheels, build_sdist] name: Open an issue if build fails - if: ${{ always() && contains(needs.*.result, 'failure') }} + if: ${{ always() && contains(needs.*.result, 'failure') && github.repository_owner == 'pybamm-team'}} runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/update_version.yml b/.github/workflows/update_version.yml index a6c35c0333..f04b033272 100644 --- a/.github/workflows/update_version.yml +++ b/.github/workflows/update_version.yml @@ -29,11 +29,13 @@ jobs: echo "VERSION=$(date +'v%y.%-m')${{ github.event.inputs.append_to_tag }}" >> $GITHUB_ENV echo "NON_RC_VERSION=$(date +'v%y.%-m')" >> $GITHUB_ENV + # the schedule workflow is for rc0 release - uses: actions/checkout@v4 if: github.event_name == 'schedule' with: ref: 'develop' + # the dispatch workflow is for rcX and final releases - uses: actions/checkout@v4 if: github.event_name == 'workflow_dispatch' with: @@ -49,29 +51,55 @@ jobs: pip install wheel pip install --editable ".[all]" + # update all the version strings and add CHANGELOG headings - name: Update version run: python scripts/update_version.py + # create a new version branch for rc0 release and commit - uses: EndBug/add-and-commit@v9 if: github.event_name == 'schedule' with: message: 'Bump to ${{ env.VERSION }}' new_branch: '${{ env.NON_RC_VERSION }}' + # use the already created release branch for rcX + final releases + # and commit - uses: EndBug/add-and-commit@v9 if: github.event_name == 'workflow_dispatch' with: message: 'Bump to ${{ env.VERSION }}' - - name: Make a PR from ${{ env.NON_RC_VERSION }} to develop - uses: repo-sync/pull-request@v2 + # checkout to develop for updating versions in the same + - uses: actions/checkout@v4 with: - source_branch: '${{ env.NON_RC_VERSION }}' - destination_branch: "develop" - pr_title: "Sync ${{ env.NON_RC_VERSION }} and develop" - pr_body: "**Merge as soon as possible to avoid potential conflicts.**" - github_token: ${{ secrets.GITHUB_TOKEN }} + ref: 'develop' + + # update all the version strings + - name: Update version + if: github.event_name == 'workflow_dispatch' + run: python scripts/update_version.py + + # create a pull request updating versions in develop + - name: Create Pull Request + id: version_pr + uses: peter-evans/create-pull-request@v3 + with: + delete-branch: true + branch-suffix: short-commit-hash + base: develop + commit-message: Update version to ${{ env.VERSION }} + title: Bump to ${{ env.VERSION }} + body: | + - [x] Update to ${{ env.VERSION }} + - [ ] Check the [release workflow](https://github.com/pybamm-team/PyBaMM/blob/develop/.github/release_workflow.md) + + # checkout to the version branch for the final release + - uses: actions/checkout@v4 + if: github.event_name == 'workflow_dispatch' && !startsWith(github.event.inputs.append_to_tag, 'rc') + with: + ref: '${{ env.NON_RC_VERSION }}' + # for final releases, create a PR from version branch to main - name: Make a PR from ${{ env.NON_RC_VERSION }} to main id: release_pr if: github.event_name == 'workflow_dispatch' && !startsWith(github.event.inputs.append_to_tag, 'rc') diff --git a/CHANGELOG.md b/CHANGELOG.md index 0692d152ca..20559a11d4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,13 +1,5 @@ # [Unreleased](https://github.com/pybamm-team/PyBaMM/) -## Bug fixes - -- Fixed a bug where if the first step(s) in a cycle are skipped then the cycle solution started from the model's initial conditions instead of from the last state of the previous cycle ([#3708](https://github.com/pybamm-team/PyBaMM/pull/3708)) -- Fixed a bug where the lumped thermal model conflates cell volume with electrode volume ([#3707](https://github.com/pybamm-team/PyBaMM/pull/3707)) - -## Breaking changes -- The parameters `GeometricParameters.A_cooling` and `GeometricParameters.V_cell` are now automatically computed from the electrode heights, widths and thicknesses if the "cell geometry" option is "pouch" and from the parameters "Cell cooling surface area [m2]" and "Cell volume [m3]", respectively, otherwise. When using the lumped thermal model we recommend using the "arbitrary" cell geometry and specifying the parameters "Cell cooling surface area [m2]", "Cell volume [m3]" and "Total heat transfer coefficient [W.m-2.K-1]" directly. ([#3707](https://github.com/pybamm-team/PyBaMM/pull/3707)) - # [v24.1rc0](https://github.com/pybamm-team/PyBaMM/tree/v24.1rc0) - 2024-01-31 ## Features @@ -26,6 +18,8 @@ ## Bug fixes +- Fixed a bug where if the first step(s) in a cycle are skipped then the cycle solution started from the model's initial conditions instead of from the last state of the previous cycle ([#3708](https://github.com/pybamm-team/PyBaMM/pull/3708)) +- Fixed a bug where the lumped thermal model conflates cell volume with electrode volume ([#3707](https://github.com/pybamm-team/PyBaMM/pull/3707)) - Reverted a change to the coupled degradation example notebook that caused it to be unstable for large numbers of cycles ([#3691](https://github.com/pybamm-team/PyBaMM/pull/3691)) - Fixed a bug where simulations using the CasADi-based solvers would fail randomly with the half-cell model ([#3494](https://github.com/pybamm-team/PyBaMM/pull/3494)) - Fixed bug that made identical Experiment steps with different end times crash ([#3516](https://github.com/pybamm-team/PyBaMM/pull/3516)) @@ -38,6 +32,7 @@ ## Breaking changes +- The parameters `GeometricParameters.A_cooling` and `GeometricParameters.V_cell` are now automatically computed from the electrode heights, widths and thicknesses if the "cell geometry" option is "pouch" and from the parameters "Cell cooling surface area [m2]" and "Cell volume [m3]", respectively, otherwise. When using the lumped thermal model we recommend using the "arbitrary" cell geometry and specifying the parameters "Cell cooling surface area [m2]", "Cell volume [m3]" and "Total heat transfer coefficient [W.m-2.K-1]" directly. ([#3707](https://github.com/pybamm-team/PyBaMM/pull/3707)) - Dropped support for the `[jax]` extra, i.e., the Jax solver when running on Python 3.8. The Jax solver is now available on Python 3.9 and above ([#3550](https://github.com/pybamm-team/PyBaMM/pull/3550)) # [v23.9](https://github.com/pybamm-team/PyBaMM/tree/v23.9) - 2023-10-31 diff --git a/scripts/update_version.py b/scripts/update_version.py index 1d2d64ce41..dfc6b7f32e 100644 --- a/scripts/update_version.py +++ b/scripts/update_version.py @@ -17,7 +17,11 @@ def update_version(): Opens file and updates the version number """ release_version = os.getenv("VERSION")[1:] - last_day_of_month = date.today() + relativedelta(day=31) + release_date = ( + date.today() + if "rc" in release_version + else date.today() + relativedelta(day=31) + ) # pybamm/version.py with open(os.path.join(pybamm.root_dir(), "pybamm", "version.py"), "r+") as file: @@ -72,16 +76,21 @@ def update_version(): file.write(replace_commit_id) changelog_line1 = "# [Unreleased](https://github.com/pybamm-team/PyBaMM/)\n" - changelog_line2 = f"# [v{release_version}](https://github.com/pybamm-team/PyBaMM/tree/v{release_version}) - {last_day_of_month}\n\n" + changelog_line2 = f"# [v{release_version}](https://github.com/pybamm-team/PyBaMM/tree/v{release_version}) - {release_date}\n\n" # CHANGELOG.md with open(os.path.join(pybamm.root_dir(), "CHANGELOG.md"), "r+") as file: output_list = file.readlines() output_list[0] = changelog_line1 + # add a new heading for rc0 releases if "rc0" in release_version: output_list.insert(2, changelog_line2) else: - output_list[2] = changelog_line2 + # for rcX and final releases, update the already existing rc + # release heading + for i in range(0, len(output_list)): + if re.search("[v]\d\d\.\drc\d", output_list[i]): + output_list[i] = changelog_line2[:-1] file.truncate(0) file.seek(0) file.writelines(output_list)