Skip to content
Snippets Groups Projects
Commit 3c6b5491 authored by totten's avatar totten
Browse files

Import/update docs for release process

parent 6af5a76e
Branches
No related tags found
No related merge requests found
TODO
\ No newline at end of file
# CiviCRM v4.7.x: Publish a final release
## Pre-requisites
* Installed+configured [Google Cloud SDK](https://cloud.google.com/sdk/downloads). (Run `gcloud init`, `gcloud auth activate-service-account --key-file ...`, or similar.)
* Write access to all main CiviCRM GitHub repos (`civicrm-{core,packages,backdrop,drupal,joomla,wordpress}`)
* Write access to Google Cloud Storage (`civicrm` and `civicrm-build` buckets)
* Write access to SourceForge account (`civicrm`)
* Import the CiviCRM GPG keypair (`7A1E75CB`)
* Local copy of [buildkit](https://github.com/civicrm/civicrm-buildkit/)
* Local clones of all main CiviCRM git repos (e.g. `mkdir src; cd src; gitify all --skip-gencode` or `cividist create dist`)
The user `releaser` on `latest.civicrm.org` has a suitable configuration in `~/src`.
## Identify the final RC
Determine the identity of the final release candidate:
```
gsutil ls gs://civicrm-build/*rc/*json
```
For example, we might pick `gs://civicrm-build/4.7.19-rc/civicrm-4.7.19-201705030600.json`.
## Publish
You can do the full process in one command:
```
cd /path/to/civicrm
releaser gs://civicrm-build/4.7.19-rc/civicrm-4.7.19-201705030600.json --get --sign --tag --publish
```
or do the steps individually:
```
cd /path/to/civicrm
## Get the RC tarballs
releaser gs://civicrm-build/4.7.19-rc/civicrm-4.7.19-201705030600.json --get
## Generate signatures for tarballs
releaser gs://civicrm-build/4.7.19-rc/civicrm-4.7.19-201705030600.json --sign
## Generate tags (dry run)
releaser gs://civicrm-build/4.7.19-rc/civicrm-4.7.19-201705030600.json --tag -n
## Publish tarballs (dry run)
releaser gs://civicrm-build/4.7.19-rc/civicrm-4.7.19-201705030600.json --publish -n
## Tag (really)
releaser gs://civicrm-build/4.7.19-rc/civicrm-4.7.19-201705030600.json --tag -f
## Publish (really)
releaser gs://civicrm-build/4.7.19-rc/civicrm-4.7.19-201705030600.json --publish
```
Internally, these commands will:
* Copy and rename the build artifacts for `civicrm-4.7.19-*201705030600*`
* Generate and sign the MD5SUMS
* Push `git` tags in each repo
* Fetch each `git` repo
* Determine the `git` commits used in this build
* Create tags for each repo
* Push tags for each repo
* Publish the tarballs through the primary, long-term distribution channels
* Copy the corresponding tarballs to Google Cloud
* Copy the corresponding tarballs to Sourceforge
## Set default on `civicrm.org` (WIP)
... updating versions.json...
## Set default on `sourceforge.net`
Log into https://sourceforge.net/projects/civicrm/files/civicrm-stable and set the latest Drupal version to be the default download.
Eg: After 4.6.8 release, go to https://sourceforge.net/projects/civicrm/files/civicrm-stable/4.6.8/ . Click on "i" for `civicrm-4.6.8-drupal.tar.gz`, then select all "Default Download For" and "Save".
(TODO: Embed screenshot https://wiki.civicrm.org/confluence/download/attachments/38633678/Screen%20Shot%202015-09-22%20at%204.42.24%20PM.png?version=1&modificationDate=1442920394000&api=v2 )
Note that it takes some time to reflect default download on `sf.net`
# CiviCRM v4.7.x: Evaluate a release candidate
## Check the build
Navigate to http://download.civicrm.org/latest and verify that the RC has a
release with a suitable timestamp.
(If the RC is missing, inspect the records for https://test.civicrm.org/job/CiviCRM-Publish/)
## Create the hydra
In case there have been significant changes in the CMS integrations, in
distmaker, or in the installer, you should double-check that the tarballs
and installers still work as expected.
If you have a system with `civibuild`, then you can use the related command
`civihydra` to spin up empty sites and download the tarballs. For example:
```
civihydra create https://download.civicrm.org/latest/civicrm-RC-drupal.tar.gz
civihydra create https://download.civicrm.org/latest/civicrm-RC-wordpress.zip
civihydra create https://download.civicrm.org/latest/civicrm-RC-joomla.zip
civihydra create https://download.civicrm.org/latest/civicrm-RC-backdrop.tar.gz
# civihydra create https://download.civicrm.org/latest/civicrm-RC-drupal6.tar.gz
```
or build all of them in one command:
```
civihydra create https://download.civicrm.org/latest/civicrm-RC-drupal.tar.gz https://download.civicrm.org/latest/civicrm-RC-wordpress.zip https://download.civicrm.org/latest/civicrm-RC-joomla.zip https://download.civicrm.org/latest/civicrm-RC-backdrop.tar.gz
```
The `civihydra` command will print out instructions to complete each installation manually.
If you missed the instructions, display them again by running `civihydra show`.
## WIP
We should be defining more processes to evaluate RCs.
# CiviCRM v4.7.x: Publish a release candidate
## Pre-requisites
* Write access to all main CiviCRM git repos (civicrm-{core,packages,backdrop,drupal,joomla,wordpress})
* Access to CiviCRM Jenkins (https://test.civicrm.org)
## 1: Sanity checks
* Note the original branch, such as `master`.
* Note the intended version, such as `4.7.8` or `4.7.9`. (In the rest of this document, we'll refer to `4.7.X`, but `4.7.X` should be adjusted to circumstance.)
* In civicrm-core.git repo, check that the code in `master` correctly references `4.7.X`:
* https://github.com/civicrm/civicrm-core/blob/master/xml/version.xml
* https://github.com/civicrm/civicrm-core/blob/master/sql/civicrm_generated.mysql
* https://github.com/civicrm/civicrm-core/tree/master/CRM/Upgrade/Incremental
* In Jenkins, review the scheduled tests for `master` and determine if anything should block the RC.
* https://test.civicrm.org/job/CiviCRM-Core-Matrix/
## 2: Make a branch
For each git repo, we want to create a new branch for the RC. This follows a naming convention:
| repo | original branch | new branch |
|------|-----------------|------------|
|civicrm-core|master|4.7.X-rc|
|civicrm-packages|master|4.7.X-rc|
|civicrm-backdrop|1.x-master|1.x-4.7.X-rc|
|civicrm-drupal|6.x-master|6.x-4.7.X-rc|
|civicrm-drupal|7.x-master|7.x-4.7.X-rc|
|civicrm-drupal|8.x-master|8.x-4.7.X-rc|
|civicrm-joomla|master|4.7.X-rc|
|civicrm-wordpress|master|4.7.X-rc|
The commands `git scan branch` and `git scan push` will do this – if you have a copy of each repo.
A safe way to make a clean copy of every repo is to create a new `dist` build:
```bash
## Clone all the repos. Ensure that you have a clean, up-to-date copy of the `master` branch.
civibuild create dist
cd ~/buildkit/build/dist/src
git scan foreach -c 'pwd; git branch; echo'
git scan status
## Fixme: for now you need to manually add the extra drupal branches
cd drupal
git checkout 6.x-master && git pull origin 6.x-master
git checkout 8.x-master && git pull origin 8.x-master
git checkout 7.x-master && git pull origin 7.x-master
cd ..
## Make branches (preview)
git scan branch 4.7.X-rc master -p -n -T
## Make branches (for real)
git scan branch 4.7.X-rc master -p
## Push the branches (preview)
git scan push -p origin 4.7.X-rc -n -T
## Push the branches (for real)
git scan push -p origin 4.7.X-rc
```
## 3: Publish tarballs
* Go to https://test.civicrm.org/job/CiviCRM-Publish/
* Check to see if the new branch is being built automatically. If not:
* Login (if you haven't already)
* Click "Build with parameters"
* For the branch name, enter your chosen `4.7.X-rc`.
## 4: Bump version number on `master` to `4.7.Y`
The original branch, "master", should continue development with the next version, e.g. "4.7.Y".
```bash
cd ~/buildkit/build/dist/src
git checkout master
git pull origin master
./tools/bin/scripts/set-version.php 4.7.Y --commit
```
## CiviCRM Release Mechanics
* CiviCRM v4.6.x
* [Publish a final release](4.6-final.md)
* [Announce a final release](any-announce.md)
* CiviCRM v4.7.x
* [Publish a release candidate](4.7-rc.md)
* [Evaluate a release candidate](4.7-rc-eval.md)
* [Publish a final release](4.7-final.md)
* [Announce a final release](any-announce.md)
> The 4.6 process differs from the 4.7 process:
> a. At a policy level, 4.6 does not use release candidates. 4.7 does.
> b. At a technical level, 4.6 does not provide as many build-artifacts
> as 4.7. (Notably, 4.7 includes the JSON-git report and the Backdrop build).
# CiviCRM v4.x.x: Announce a final release
## Security announcements
Liaise with security team, and with a JIRA search for any issues in this release which are Security: Unpublished. If there are matches,
* A security advisory node for each security fix must be ready to be published on https://civicrm.org
* A security advisory CiviMail must be ready to be sent to members of group Security Notifications ([more information](https://civicrm.org/security))
The release must be made within the security release window.
Example announcement template:
> __Subject__: CiviCRM Security Releases (4.7.3, 4.6.9-LTS) - CIVI-SA-2015-004, CIVI-SA-2015-005
>
> There has been a security advisory for CiviCRM. We recommend you immediately upgrade to one of the following versions:
>
> (list of fixed versions)
>
> The security advisories resolved in these releases address issues with FOO and BAR. Read the security advisories for details:
>
> (links to security advisories, posted as nodes of type Security Advisory to [https://civicrm.org/advisory](https://civicrm.org/advisory))
>
> A number of other issues have been fixed in these releases. Upgrade now for the most stable CiviCRM experience.
>
> CiviCRM security announcements are available from [https://civicrm.org/advisory](https://civicrm.org/advisory) and via the [CiviCRM Security Notifications](https://civicrm.org/sites/all/modules/civicrm/extern/url.php?u=5441&qid=) email list.
## Blog
[Post to the blog](http://civicrm.org/blog) - and check "Promote to Front
Page" so blog appears on home page banner (below gallery). Blog should
include release highlights. List of CONTRIBUTORS should be reviewed and
updated (process TBD).
## Twitter
Post to Twitter as "@civicrm" (or ping the `marketing` channel on Mattermost). Indicate whether there are security fixes and/or bug fixes.
## JIRA
Update Versions in JIRA (http://issues.civicrm.org/jira/plugins/servlet/project-config/CRM/versions) (TODO: does JIRA have an api we could tap into to add this step to the releaser script?)
* Mark this version as released
* Add 'next' versions (should be two future versions present on active branch - e.g. when 4.7.1 is released, should be 4.7.2 and 4.7.3)
If this is a major release (e.g. 4.7.0):
* check that wiki doc header and versions widget are updated.
* Check Downloads page and links in CiviCRM.org. (this appears to be invalid?)
* Check https://civicrm.org/download/list
* ~~update download links which appear on CiviCRM.org home page Download tab~~
* ~~search for content of type Download and update the links for each release with corresponding download link~~
* (I don't see these links, and the content in the nodes looks ancient – 4.4)
* Update the links in the demo and sandbox pages so that they reflect the latest version: https://civicrm.org/go/demo and http://civicrm.org/sandboxes
* Update the Jenkins jobs https://test.civicrm.org/view/Sites/job/demo.civicrm.org/
* Check latest.civicrm.org/versions.json to make sure this version has changed from "testing" to "stable" and previous stable version is either "lts" or "eol"
* Increment this section title (wink)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment