Newer
Older
# CiviCRM v5.x.0: Publish a stable release
## Prerequisites
See [Prerequisites](any-prereq.md)
## 1: Set the final version to `5.X.0`
```bash
cd ~/src/master
git checkout 5.X
git pull --ff-only origin 5.X
./tools/bin/scripts/set-version.php 5.X.0 --commit
git push origin 5.X
```
## 2: Sanity checks
* Check open PRs for `5.X`: https://github.com/civicrm/civicrm-core/pulls
* https://lab.civicrm.org/groups/dev/-/issues?scope=all&utf8=%E2%9C%93&state=opened&label_name[]=regression
* https://lab.civicrm.org/groups/dev/-/issues?scope=all&utf8=%E2%9C%93&state=opened&label_name[]=prioritised
* Perform a UI-level installation on some hydra sites. [http://site-list.test-1.civicrm.org:8001/?filter=hydra-*](http://site-list.test-1.civicrm.org:8001/?filter=hydra-*)
(If build times look askew, check logs at https://test.civicrm.org/view/Sites/job/hydra-sites/)
* Check release notes: https://github.com/civicrm/civicrm-core/blob/5.X/release-notes.md
* In Jenkins, review the scheduled tests for `5.X` and determine if anything should block the release.
* https://test.civicrm.org/job/CiviCRM-Core-Matrix/
* https://test.civicrm.org/job/CiviCRM-Ext-Matrix/
* In Jenkins, ensure that the final tarballs have been prepared. Run the job manually if you're impatient.
* https://test.civicrm.org/job/CiviCRM-Publish/
* Current git repos: `civi-git-table --fetch 5.X`
* Draft tarball: https://download.civicrm.org/latest/branch/5.X/LATEST/civicrm-X.Y.Z-drupal-LATEST.tar.gz/inspect
## 3: Prepare and identify the final tarballs
After running, determine the identity of the final build:
```
gsutil ls gs://civicrm-build/5.2/*json
```
For example, we might pick `gs://civicrm-build/5.2/civicrm-5.2.0-201705030600.json`.
## 4: Publish
For a typical release, you can run the full process in one command:
releaser -v gs://civicrm-build/5.2/civicrm-5.2.0-201705030600.json get sign tag publish
If this branch will have future ESR support, then you should also publish releases to `lab.c.o/esr/*`.
releaser -v gs://civicrm-build/5.2/civicrm-5.2.0-201705030600.json get sign tag publish esr-tag esr-publish
```
Note: You may run tasks individually, and you may do dry-runs (`--dry-run`/`-N`). For example
```
cd ~/src/master
## Publish tarballs to Google Cloud and Sourceforge (dry run)
releaser -v gs://civicrm-build/5.2/civicrm-5.2.0-201705030600.json publish -N
## Publish tarballs to Google Cloud and Sourceforge (really)
releaser -v gs://civicrm-build/5.2/civicrm-5.2.0-201705030600.json publish
To ensure the various tags were published and match the branches, use `civi-git-table`, as in:
```
civi-git-table --fetch 5.2.0 5.2
```
## 5: Update `versions.json`
Services such as the `civicrm.org` download page and the in-app version
check depend on a file named `versions.json`. Update this.
```
## Find and examine the current list of branches.
./bin/pb branch:list
## Add the new branch. Be sure to adjust versions.
./bin/pb branch:status 5.2 stable
## Add the new release. Be sure to adjust versions/dates.
./bin/pb release:add 5.2.0 --date=2018-05-03 --security=false
## If appropriate, set the deprecation and eol dates for the previous
## version.
./bin/pb branch:status 5.1 -D 2018-06-10 -E 2018-06-15
Preview the upgrade messages that will be displayed on various versions.
This example previews the perspective from 5.0.2 and 5.8.0 (adjust to taste):
http://latest.civicrm.org/stable.php?format=devPreview&versions=5.0.2,5.8.0
Finally:
```
## Make the change persistent.
git commit versions.json
git push origin master
## 6: Make new versions visible on download sites
If there is a change in ESR status, then:
* Check/update the next 6 month projections on https://lab.civicrm.org/dev/release
* Check/update the current status on https://lab.civicrm.org/esr/core/-/wikis/home.
Log into https://civicrm.org/user and clear the page-cache in https://civicrm.org/admin/config/development/performance
<!-- civicrm.org is in a migration from D7=>D8. These details may be in flux until that settles. -->
Browse https://sourceforge.net/projects/civicrm/files/civicrm-stable - confirm that:
* The new upload is present.
* The new `civicrm-X.Y.Z-drupal.tar.gz` is the default download.
Note that it may take some time to reflect default download on `sf.net`.