You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by ja...@apache.org on 2019/05/03 23:44:35 UTC
[cordova-coho] branch janpio-plugins_release created (now e39cf83)
This is an automated email from the ASF dual-hosted git repository.
janpio pushed a change to branch janpio-plugins_release
in repository https://gitbox.apache.org/repos/asf/cordova-coho.git.
at e39cf83 first round of changes to plugin release process
This branch includes the following new commits:
new e39cf83 first round of changes to plugin release process
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org
[cordova-coho] 01/01: first round of changes to plugin release
process
Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
janpio pushed a commit to branch janpio-plugins_release
in repository https://gitbox.apache.org/repos/asf/cordova-coho.git
commit e39cf83895a391fdb4d015127f4d25979118cd27
Author: Jan Piotrowski <pi...@gmail.com>
AuthorDate: Sat May 4 01:44:29 2019 +0200
first round of changes to plugin release process
---
docs/plugins-release-process.md | 122 +++++++++++++++++++++++-----------------
1 file changed, 71 insertions(+), 51 deletions(-)
diff --git a/docs/plugins-release-process.md b/docs/plugins-release-process.md
index b3b0516..d04f732 100644
--- a/docs/plugins-release-process.md
+++ b/docs/plugins-release-process.md
@@ -19,26 +19,21 @@
#
-->
-# Release Process for ''Core Plugins''
+# Release Process for Cordova Core Plugins
-Before cutting any releases, read the Apache's [Releases Policy](http://www.apache.org/dev/release)
+This page describes the steps for doing a Plugins Release.
-If you have not done so already, create a GPG key (see: [setting-up-gpg.md](setting-up-gpg.md)).
+## Table of Contents
-Core Plugins are released at most weekly (see: [versioning-and-release-strategy.md](versioning-and-release-strategy.md)).
+TODO
-A plugins release is performed by a single person each week. We call this person the "Release Manager". How to select the Release Manager is still TDB.
+##
-TODO: We may want to be using [signed tags](http://git-scm.com/book/en/Git-Basics-Tagging), or at least annotated tags.
+- Before cutting any releases, read the Apache's [Releases Policy](http://www.apache.org/dev/release)
+- If you have not done so already, create a GPG key (see: [setting-up-gpg.md](setting-up-gpg.md)).
+- Core Plugins are released at most weekly (see: [versioning-and-release-strategy.md](versioning-and-release-strategy.md)).
-TODO: Add step about ensuring plugman owner
- * Note: can base this on: https://github.com/MobileChromeApps/mobile-chrome-apps/blob/master/dev-bin/check-published-plugin.js
-
-TODO: Add step about releasing cordova-plugins
-
-TODO: Should not mention testing other than checking medic
-
-# Interactive Plugins Release
+## Interactive Plugins Release
Though we are still working out some kinks, it is recommended to try the new coho interactive plugins release command which will handle many of the manual steps listed below.
@@ -54,17 +49,21 @@ This will do the following:
* Increment version on master with `-dev`
* Create svn dist archives for you to share with the cordova list for voting purposes.
-# Manual
+## Manual
Try to the interactive plugins release process. If you struggle with, use the manual process which is documented below.
-## Get Buy-in
+### Before you start
+
+### Get Buy-in
1. Email the dev mailing-list and see if anyone has reason to postpone the release.
* Subject should be "[DISCUSS] Plugins release
* If so, agree upon a branching date / time.
-## Create JIRA issues
+### Before Release
+
+#### Create JIRA issues
* Create a JIRA issue to track the status of the release.
* Make it of type "Task"
@@ -77,8 +76,7 @@ Try to the interactive plugins release process. If you struggle with, use the ma
JIRA="CB-????" # Set this to the release bug.
-
-## Make sure you're up-to-date
+#### Make sure you're up-to-date
# Update your repos
coho repo-status -r plugins -b master
@@ -86,7 +84,7 @@ Try to the interactive plugins release process. If you struggle with, use the ma
coho repo-clone -r plugins
coho foreach -r plugins "git checkout master"
-## Identify which plugins have changes
+#### Identify which plugins have changes
ACTIVE=$(for l in cordova-plugin-*; do ( cd $l; last_release=$(git describe --tags --abbrev=0 2>/dev/null || git rev-list --max-parents=0 HEAD); git log --pretty=format:'* %s' --topo-order --no-merges $last_release..master | grep -v "Incremented plugin version" > /dev/null && echo $l); done | xargs echo)
echo $ACTIVE
@@ -96,18 +94,21 @@ If you don't want to release all plugins, but you have specific plugins you want
ACTIVE="cordova-plugin-camera cordova-plugin-contacts cordova-plugin-device-motion"
echo $ACTIVE
-## Ensure license headers are present everywhere:
+#### Ensure license headers are present everywhere:
coho audit-license-headers -r active-plugins | less
- # Tip: Skim by searching for "Unknown Licenses"
+ Tip: Skim by searching for "Unknown Licenses"
For reference, see this [background](http://www.apache.org/legal/src-headers.html)
-## Ensure all dependencies and subdependencies have Apache-compatible licenses
+#### Ensure all dependencies and subdependencies have Apache-compatible licenses
coho check-license -r active-plugins
-## Update RELEASENOTES.md & Version
+### Prepare Release
+
+#### Update Version
+
Remove the ''-dev'' suffix on the version in plugin.xml.
for l in $ACTIVE; do ( cd $l; v="$(grep version= plugin.xml | grep -v xml | head -n1 | cut -d'"' -f2)"; v2="${v%-dev}"; if [ "$v" != "$v2" ]; then echo "$l: Setting version in plugin.xml to $v2"; sed -i '' -E s:"version=\"$v\":version=\"$v2\":" plugin.xml; fi) ; done
@@ -124,23 +125,24 @@ For each of the plugins that have a test project inside it, update the version n
for l in $ACTIVE; do ( cd $l; v="$(grep version= plugin.xml | grep -v xml | head -n1 | cut -d'"' -f2)"; vt="$(grep version= tests/plugin.xml | grep -v xml | head -n1 | cut -d'"' -f2)"; if [ "$v" != "$vt" ]; then echo "$l: Setting version to $v"; sed -i '' -E s:"version=\"$vt\":version=\"$v\":" tests/plugin.xml; fi); done
+#### Update RELEASENOTES.md
+
Update its RELEASENOTES.md file with changes.
for l in $ACTIVE; do (coho update-release-notes -r $l); done
# Then curate:
vim ${ACTIVE// //RELEASENOTES.md }/RELEASENOTES.md
+#### Commit Release Notes and optional version changes together
+
Commit these changes together (plugin.xml, RELEASENOTES.md, tests/plugin.xml)
for l in $ACTIVE; do ( cd $l; v="$(grep version= plugin.xml | grep -v xml | head -n1 | cut -d'"' -f2)"; git commit -am "$JIRA Updated version and RELEASENOTES.md for release $v"); done
Reply to the DISCUSS thread with a link to the updated release notes.
-## Tag
-
- for l in $ACTIVE; do ( cd $l; v="$(grep version= plugin.xml | grep -v xml | head -n1 | cut -d'"' -f2)"; echo "Tagging $l to $v"; git tag "$v" ); done
-## Test
+### Test
Create mobilespec and sanity check all plugins on at least one platform (preferably, a released version of the platform and not master). Run through mobilespec, ensuring to do manual tests that relate to changes in the RELEASENOTES.md
@@ -148,13 +150,20 @@ Reply to the DISCUSS thread with a link to the updated release notes.
(cd mobilespec && ./cordova build && ./cordova run android --device)
(cd mobilespec && ./cordova build && ./cordova run ios --device)
-## Create Release Branch
+
+### Push Changes
+
+#### Tag
+
+ for l in $ACTIVE; do ( cd $l; v="$(grep version= plugin.xml | grep -v xml | head -n1 | cut -d'"' -f2)"; echo "Tagging $l to $v"; git tag "$v" ); done
+
+#### Create Release Branch
for l in $ACTIVE; do ( cd $l; v="$(grep version= plugin.xml | grep -v xml | head -n1 | cut -d'"' -f2)"; b=`expr $v : '^\(....\)'`; x="x"; b=$b$x; git branch $b; echo "Creating branch $b for $l"); done
If a branch already exists, you will have to manually checkout the branch, merge master and then checkout master.
-## Update version to add back -dev suffix
+#### Update version to add back -dev suffix
for l in $ACTIVE; do ( cd $l; v="$(grep version= plugin.xml | grep -v xml | head -n1 | cut -d'"' -f2)"; v_no_dev="${v%-dev}"; if [ "$v" = "$v_no_dev" ]; then v2="$(echo $v|awk -F"." '{$NF+=1}{print $0RT}' OFS="." ORS="")-dev"; echo "$l: Setting version in plugin.xml to $v2"; sed -i '' -E s:"version=\"$v\":version=\"$v2\":" plugin.xml; fi) ; done
# update package.json
@@ -163,7 +172,8 @@ If a branch already exists, you will have to manually checkout the branch, merge
for l in $ACTIVE; do ( cd $l; v="$(grep version= plugin.xml | grep -v xml | head -n1 | cut -d'"' -f2)"; vt="$(grep version= tests/plugin.xml | grep -v xml | head -n1 | cut -d'"' -f2)"; if [ "$v" != "$vt" ]; then echo "$l: Setting version to $v"; sed -i '' -E s:"version=\"$vt\":version=\"$v\":" tests/plugin.xml; fi); done
for l in $ACTIVE; do (cd $l; git commit -am "$JIRA Incremented plugin version." ); done
-## Push tags, branches and changes
+#### Push tags, branches and changes
+
# Sanity check:
coho repo-status -r plugins
coho foreach -r plugins "git status -s"
@@ -174,7 +184,8 @@ If a branch already exists, you will have to manually checkout the branch, merge
coho repo-update -r plugins
coho repo-status -r plugins
-## Publish to dist/dev
+### Publish Release Candidate to `dist/dev`
+
Ensure you have the svn repos checked out:
coho repo-clone -r dist -r dist/dev
@@ -195,7 +206,10 @@ Upload:
* Find your release here: https://dist.apache.org/repos/dist/dev/cordova/
-## Prepare Blog Post
+### Documentation and Communication
+
+#### Prepare Blog Post
+
Run the following script to get release notes from RELEASENOTS.md.
for l in $ACTIVE; do (cd $l; current_release=$(git describe --tags --abbrev=0); previous_release=$(git describe --abbrev=0 --tags `git rev-list --tags --skip=1 --max-count=1`); echo "$l@$current_release"; awk '/### '$current_release'.*/,/### '$previous_release'.*/ {temp=match($0,/### '$previous_release'/); title=match($0, /### '$current_release'/); if(temp == 0 && title == 0) print $0}' < RELEASENOTES.md); done
@@ -204,7 +218,9 @@ Run the following script to get release notes from RELEASENOTS.md.
* Instructions on [sites page README](https://svn.apache.org/repos/asf/cordova/site/README.md)
* Get blog post proof-read.
-## Start VOTE Thread
+### Voting and Release
+
+#### Start VOTE Thread
Send an email to dev ML with:
__Subject:__
@@ -236,9 +252,8 @@ __Body:__
* Ran coho check-license to ensure all dependencies and subdependencies have Apache-compatible licenses
* Ensured continuous build was green when repos were tagged
+#### Voting
-
-## Voting
Steps to verify a plugins release
1) Setup
@@ -266,7 +281,8 @@ Review [ci.cordova.io](http://ci.cordova.io/).
(cd mobilespec && ./cordova build && ./cordova run ios --device)
-## Email the result of the vote
+#### Email the result of the vote
+
Respond to the vote thread with:
__Subject:__
@@ -303,7 +319,7 @@ If there were any votes from non-pmc, include them in an additional `Non-Binding
_Note: list of PMC members: http://people.apache.org/phonebook.html?pmc=cordova_
-## If the Vote does *not* Pass
+#### If the Vote does *not* Pass
* Revert adding of `-dev` on master branch
* Address the concerns (on master branch)
* Re-tag release using `git tag -f`
@@ -311,7 +327,7 @@ _Note: list of PMC members: http://people.apache.org/phonebook.html?pmc=cordova_
* Start a new vote
-## Publish to dist/
+## Otherwise: Publish to `dist/` & npm
If you've lost your list of ACTIVE:
@@ -334,14 +350,7 @@ Publish:
Find your release here: https://dist.apache.org/repos/dist/release/cordova/plugins/
-### Tell Apache about Release
-
-TODO: Please someone write a coho helper for doing this POST request!
-
-1. Go to: https://reporter.apache.org/addrelease.html?cordova
-2. Use version "cordova-plugin-$FOO@x.x.x"
-
-## Publish to npm
+Publish to npm
cd cordova-dist/plugins
for l in $ACTIVE; do (
@@ -353,12 +362,22 @@ TODO: Please someone write a coho helper for doing this POST request!
Make a copy of your released tag with a prefix of `rel\YOURTAG`. These are permanent release tags for Apache.
for l in $ACTIVE; do ( cd $l; tag=$(git describe --tags --abbrev=0); git checkout $tag; git tag 'rel/'$tag; git push origin refs/tags/'rel/'$tag; git checkout master); done
+
+### Follow up steps
+
+#### Tell Apache about Release
+
+TODO: Please someone write a coho helper for doing this POST request!
+
+1. Go to: https://reporter.apache.org/addrelease.html?cordova
+2. Use version "cordova-plugin-$FOO@x.x.x"
-## Post blog Post
+
+#### Post blog Post
See instructions in the cordova-docs [README](https://github.com/apache/cordova-docs#writing-a-blog-post)
-## Do other announcements
+#### Do other announcements
Do the same things regarding announcements as described in cadence-release-process, where they make sense.
@@ -373,11 +392,12 @@ __Body:__
Blog: http://cordova.apache.org/news/YYYY/MM/DD/plugin-release.html
Tweet: https://twitter.com/apachecordova/status/xxxxxxxxxxxx
-## Close JIRA Issue
+#### Close JIRA Issue
+
* Double check that the issue has comments that record the steps you took
* Mark it as fixed
-## Finally:
+#### Finally:
* Update *these instructions* if they were missing anything.
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org