This page describes the process that we use to publish a new release of the RERO+ projects.
- Release the other projects:
- If needed, publish a release for ng-core and rero-ils-ui OR sonar-ui
- Prepare a release-candidate:
- Decide what you want to integrate into the new release and merge everything into a branch to be used as a release-candidate (usually
staging
). - Optionnally, deploy the state of this branch first to
dev
servers for internal testing.
- Decide what you want to integrate into the new release and merge everything into a branch to be used as a release-candidate (usually
- Translate the release:
- Extract the new translations to Weblate and translate the new strings; then, integrate the translation commit to
staging
. See detailed translation workflow.
- Extract the new translations to Weblate and translate the new strings; then, integrate the translation commit to
- Prepare a release commit:
- Make sure your local repository is up to date with remote (
git fetch -p --all
). - Upadte UI version:
- ILS: Update
scripts/bootstrap
with therero-ils-ui
version. - SONAR: update to the correct
sonar-ui
version insonar/config_sonar.py
>SONAR_APP_UI_VERSION
- ILS: Update
- Update
rero_ils/version.py
ORsonar/version.py
. - Update
pyproject.toml
with the version number. - Update the
CHANGELOG.md
file as described here. - Commit with message
release: v1.X.X
- Open a Pull Request for the release on the Github repository (the tests will fail as long as the UI version is not published on NPM).
- Force push the state of the release branches for all the project to the test branch (
bib-test
) - Devs prepare the images and the data migration scripts and deploy the release to the test branch.
- Test the release thouroughly and fix any problems with new commits.
- Make sure your local repository is up to date with remote (
- Publish to
master
:- When the release has been tested and validated and fixes and release PR are merged into
staging
, update your localstaging
branch, verify carefully that the commits, commit hashes are the same. - Checkout to your local
master
branch, make sure it's up to date with the remotemaster
. - Merge your local
staging
branch into your localmaster
:git rebase staging
. Check that yourstaging
andmaster
are up to date withupstream/staging
. - Tag the last commit:
git tag -m "v1.X.X" v1.X.X
. - Push the local
master
branch to remote, with the tag:git push --tags [rero-remote-repository-name] master
. - On Github, edit the corresponding tag (that means publishing a new release) with title
v1.X.X
. Copy paste the corresponding changelog fromCHANGELOG.md
to the description. - Update all branches that need to contain the latest release (e.g.
ils-test
, etc) - Deploy the release in production
- When the release has been tested and validated and fixes and release PR are merged into
- Translate the release:
- Usually at the same time than the translation for the backend project.
- Extract the new translations to Weblate and translate the new strings; then, integrate the translation commit to
staging
. See detailed translation workflow.
- Prepare a release commit:
- Check that:
- the
staging
branch contains all PRs and branches planned for the release - the translations are up to date
- the
- Update the
version
property inpackage.json
file. - Update the
ng-core
version inpackage.json
file if you use a new version ofng-core
. - Run the command
npm i
to updatepackage-lock.json
file (the ng-core version must be published to NPM). - Update the
CHANGELOG.md
file as described here. - Commit with message
release: v1.X.X
- Open a Pull Request for the release on the Github repository.
- Check that:
- Publish to
master
:- When the release PR is merged into staging and has been tested, checkout to your local
master
branch, make sure it's up to date with the remotemaster
. - Merge the
staging
branch into master:git rebase staging
. - Tag the last commit:
git tag -m "v1.X.X" v1.X.X
- Push the local
master
branch to remote, with the tag:git push --tags [rero-remote-repository-name] master
. - On Github, edit the corresponding tag (that means publishing a new release) with title
v1.X.X
. Copy paste the corresponding changelog fromCHANGELOG.md
to the description.
- When the release PR is merged into staging and has been tested, checkout to your local
- Publish NPM package (usually done by a developer)
- Checkout to your local
master
branch, make sure it's up to date with the remotemaster
. - Build library with the command
npm run pack
(from the project's root). - Navigate to the
/build
directory and executenpm publish
to publish library in npm registry. You must be logged in npm and the belong torero
organisation (Check with IT to get access).
- Checkout to your local
- Prepare a release commit:
- Update the
version
property inpackage.json
file. - Update the
version
property inprojects/rero/ng-core/package.json
file. - Run the command
npm i
to updatepackage-lock.json
file. - Update the
CHANGELOG.md
file as described here. - Commit the changes to
staging
or on a specific branch and specify changes in commit message. - PR+merge the release commit to
upstream/staging
.
- Update the
- Publish release to
master
- Go back to root folder.
- Checkout to your local
master
branch, make sure it's up to date with the remotemaster
. - Merge the
staging
branch into master:git rebase staging
. - Tag the last commit:
git tag -m "v0.X.X" v0.X.X
. - Push the local
master
branch to remote, with the tag:git push --tags [rero-remote-repository-name] master
. - On Github, edit the corresponding tag (that means publishing a new release) with title
v1.X.X
. Copy paste the corresponding changelog fromCHANGELOG.md
to the description.
- Publish NPM package (usually done by a developer)
- Checkout to your local
master
branch, make sure it's up to date with the remotemaster
. - Build library with the command
ng build @rero/ng-core
. - Go to generated library with command
cd dist/rero/ng-core
. - Check version is correct in
package.json
in the current folder. - Execute
npm publish
to publish library in npm registry. You must be logged in npm and belong torero
organisation (Check with IT to get access).
- Checkout to your local