From a908cf6a310165a5af3b3b8f1e484af05c04d145 Mon Sep 17 00:00:00 2001
From: Tim Otten <totten@civicrm.org>
Date: Thu, 15 Mar 2018 15:39:19 -0700
Subject: [PATCH] Initial draft of 5.x-final and 5.x-patch

---
 doc/5.x-final.md | 117 +++++++++++++++++++++++++++++++++++++++++++++++
 doc/5.x-patch.md | 112 +++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 229 insertions(+)

diff --git a/doc/5.x-final.md b/doc/5.x-final.md
index 8fded30..02696fb 100644
--- a/doc/5.x-final.md
+++ b/doc/5.x-final.md
@@ -1 +1,118 @@
 # 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 release notes: https://github.com/civicrm/civicrm-core/tree/5.X/release-notes
+* 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/
+* Compare the git revisions
+    * https://download.civicrm.org/latest/civicrm-RC-drupal.tar.gz/inspect
+    * https://github.com/civicrm/civicrm-core/commits/5.X
+    * https://github.com/civicrm/civicrm-backdrop/commits/1.x-5.X
+    * https://github.com/civicrm/civicrm-drupal/commits/6.x-5.X
+    * https://github.com/civicrm/civicrm-drupal/commits/7.x-5.X
+    * https://github.com/civicrm/civicrm-joomla/commits/5.X
+    * https://github.com/civicrm/civicrm-packages/commits/5.X
+    * https://github.com/civicrm/civicrm-wordpress/commits/5.X
+
+## 3: Prepare and identify the final tarballs
+
+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/
+
+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
+
+You can do the full process in one command:
+
+```
+cd ~/src/master
+releaser gs://civicrm-build/5.2/civicrm-5.2.0-201705030600.json --get --sign --tag --publish
+```
+
+or do the steps individually:
+
+```
+cd ~/src/master
+
+## Download and rename the RC tarballs
+releaser gs://civicrm-build/5.2/civicrm-5.2.0-201705030600.json --get
+
+## Generate signatures for tarballs
+releaser gs://civicrm-build/5.2/civicrm-5.2.0-201705030600.json --sign
+
+## Generate tags in each repo (dry run)
+releaser gs://civicrm-build/5.2/civicrm-5.2.0-201705030600.json --tag -n
+
+## Publish tarballs to Sourceforge and Gcloud (dry run)
+releaser gs://civicrm-build/5.2/civicrm-5.2.0-201705030600.json --publish -n
+
+## Generate tags in each repo (really)
+releaser gs://civicrm-build/5.2/civicrm-5.2.0-201705030600.json --tag -f
+
+## Publish tarballs to Sourceforge and Gcloud (really)
+releaser gs://civicrm-build/5.2/civicrm-5.2.0-201705030600.json --publish
+```
+
+You might want to spot-check a few URLs to ensure the tags were published, e.g.
+
+* https://github.com/civicrm/civicrm-backdrop/tree/1.x-5.X.0
+* https://github.com/civicrm/civicrm-core/tree/5.X.0
+* https://github.com/civicrm/civicrm-drupal/tree/6.x-5.X.0
+* https://github.com/civicrm/civicrm-drupal/tree/7.x-5.X.0
+* https://github.com/civicrm/civicrm-drupal/tree/8.x-5.X.0
+* https://github.com/civicrm/civicrm-joomla/tree/5.X.0
+* https://github.com/civicrm/civicrm-packages/tree/5.X.0
+* https://github.com/civicrm/civicrm-wordpress/tree/5.X.0
+
+## 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 releases.
+cd /var/www/latest.civicrm.org/public/
+ls -la versions.json
+./bin/pb release:list
+
+## Add the new release. Be sure to adjust versions/dates.
+./bin/pb release:add 5.2.0 --date=2018-05-03 --security=false
+
+## Make the change persistent.
+git commit versions.json
+git push origin master
+```
+
+## 6: 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".
+
+![Marking a default release in SourceForge](/doc/images/SourceforgeDefaultDownload.png)
+
+Note that it takes some time to reflect default download on `sf.net`
diff --git a/doc/5.x-patch.md b/doc/5.x-patch.md
index 5dbdaf2..49aaf5d 100644
--- a/doc/5.x-patch.md
+++ b/doc/5.x-patch.md
@@ -1 +1,113 @@
 # CiviCRM v5.x.x: Publish a patch release
+
+## Prerequisites
+
+See [Prerequisites](any-prereq.md)
+
+## 1: (If you haven't already) Set the final version to `5.X.Y`
+
+```bash
+cd ~/src/master
+git checkout 5.X
+git pull --ff-only origin 5.X
+./tools/bin/scripts/set-version.php 5.X.Y --commit
+git push origin 5.X
+```
+
+## 2: (If you haven't already) Backport patches to `5.X` branch
+
+e.g.
+
+```bash
+cd ~/src/master
+git checkout 5.X
+git cherry-pick abcd1234abcd1234 
+git push origin 5.X
+```
+
+## 3: Prepare and identify the final tarballs
+
+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/
+
+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.1-201705030600.json`.
+
+## 4: Publish
+
+You can do the full process in one command:
+
+```
+cd ~/src/master
+releaser gs://civicrm-build/5.2/civicrm-5.2.1-201705030600.json --get --sign --tag --publish
+```
+
+or do the steps individually:
+
+```
+cd ~/src/master
+
+## Download and rename the RC tarballs
+releaser gs://civicrm-build/5.2/civicrm-5.2.1-201705030600.json --get
+
+## Generate signatures for tarballs
+releaser gs://civicrm-build/5.2/civicrm-5.2.1-201705030600.json --sign
+
+## Generate tags in each repo (dry run)
+releaser gs://civicrm-build/5.2/civicrm-5.2.1-201705030600.json --tag -n
+
+## Publish tarballs to Sourceforge and Gcloud (dry run)
+releaser gs://civicrm-build/5.2/civicrm-5.2.1-201705030600.json --publish -n
+
+## Generate tags in each repo (really)
+releaser gs://civicrm-build/5.2/civicrm-5.2.1-201705030600.json --tag -f
+
+## Publish tarballs to Sourceforge and Gcloud (really)
+releaser gs://civicrm-build/5.2/civicrm-5.2.1-201705030600.json --publish
+```
+
+You might want to spot-check a few URLs to ensure the tags were published, e.g.
+
+* https://github.com/civicrm/civicrm-backdrop/tree/1.x-5.X.1
+* https://github.com/civicrm/civicrm-core/tree/5.X.1
+* https://github.com/civicrm/civicrm-drupal/tree/6.x-5.X.1
+* https://github.com/civicrm/civicrm-drupal/tree/7.x-5.X.1
+* https://github.com/civicrm/civicrm-drupal/tree/8.x-5.X.1
+* https://github.com/civicrm/civicrm-joomla/tree/5.X.1
+* https://github.com/civicrm/civicrm-packages/tree/5.X.1
+* https://github.com/civicrm/civicrm-wordpress/tree/5.X.1
+
+## 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 releases.
+cd /var/www/latest.civicrm.org/public/
+ls -la versions.json
+./bin/pb release:list
+
+## Add the new release. Be sure to adjust versions/dates.
+./bin/pb release:add 5.2.1 --date=2018-05-03 --security=false
+
+## Make the change persistent.
+git commit versions.json
+git push origin master
+```
+
+## 6: 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".
+
+![Marking a default release in SourceForge](/doc/images/SourceforgeDefaultDownload.png)
+
+Note that it takes some time to reflect default download on `sf.net`
-- 
GitLab