From 707fbd3a10b83c60b80c2fad2e809f336ab396d9 Mon Sep 17 00:00:00 2001 From: Steve Gill Date: Fri, 6 Oct 2017 15:38:17 -0700 Subject: [PATCH] Update tools-release-process.md --- docs/tools-release-process.md | 60 ++++++++++++++++++----------------- 1 file changed, 31 insertions(+), 29 deletions(-) diff --git a/docs/tools-release-process.md b/docs/tools-release-process.md index 7e5193ed0..05f63aa78 100644 --- a/docs/tools-release-process.md +++ b/docs/tools-release-process.md @@ -54,6 +54,7 @@ E.g.: - fetch@ - serve@ - create@ + - node-xcode@ ## Create JIRA issues @@ -86,6 +87,7 @@ See if any dependencies are outdated (cd cordova-plugman && npm outdated --depth=0) (cd cordova-cli && npm outdated --depth=0) (cd cordova-create && npm outdated --depth=0) + (cd cordova-node-xcode && npm outdated --depth=0) Update them in each project's `package.json` file. Make sure to run through the test section below for compatability issues. The `--depth=0` prevents from listing dependencies of dependencies. As of this writing, the following packages are behind and are not safe to upgrade: * nopt for plugman - see [CB-7915](https://issues.apache.org/jira/browse/CB-7915) @@ -95,7 +97,7 @@ Update them in each project's `package.json` file. Make sure to run through the Increase the version within package.json using SemVer, and remove the `-dev` suffix - for l in cordova-lib cordova-plugman cordova-cli cordova-js cordova-common cordova-fetch cordova-serve cordova-create; do ( cd $l; v="$(grep '"version"' package.json | cut -d'"' -f4)"; if [[ $v = *-dev ]]; then v2="${v%-dev}"; echo "$l: Setting version to $v2"; sed -i '' -E 's/version":.*/version": "'$v2'",/' package.json; fi) ; done + for l in cordova-lib cordova-plugman cordova-cli cordova-js cordova-common cordova-fetch cordova-serve cordova-create cordova-node-xcode; do ( cd $l; v="$(grep '"version"' package.json | cut -d'"' -f4)"; if [[ $v = *-dev ]]; then v2="${v%-dev}"; echo "$l: Setting version to $v2"; sed -i '' -E 's/version":.*/version": "'$v2'",/' package.json; fi) ; done If the changes merit it, manually bump the major / minor version instead of the micro. View the changes via: (TODO: need to use coho to get tags for cordova-lib, fetch, common and serve. Current output is incorrect) @@ -116,11 +118,13 @@ If the changes merit it, manually bump the major / minor version instead of the ( cd cordova-create; git log --pretty=format:'* %s' --topo-order --no-merges $(git describe --tags --abbrev=0)..master) + ( cd cordova-node-xcode; git log --pretty=format:'* %s' --topo-order --no-merges $(git describe --tags --abbrev=0)..master) + Update each repo's RELEASENOTES.md file with changes - coho update-release-notes -r cordova-lib -r cordova-js -r cordova-plugman -r cordova-cli -r common -r fetch -r serve -r create + coho update-release-notes -r cordova-lib -r cordova-js -r cordova-plugman -r cordova-cli -r common -r fetch -r serve -r create -r node-xcode # Then curate: - vim cordova-lib/RELEASENOTES.md cordova-cli/RELEASENOTES.md cordova-plugman/RELEASENOTES.md cordova-js/RELEASENOTES.md cordova-common/RELEASENOTES.md cordova-fetch/RELEASENOTES.md cordova-serve/RELEASENOTES.md cordova-create/RELEASENOTES.md + vim cordova-lib/RELEASENOTES.md cordova-cli/RELEASENOTES.md cordova-plugman/RELEASENOTES.md cordova-js/RELEASENOTES.md cordova-common/RELEASENOTES.md cordova-fetch/RELEASENOTES.md cordova-serve/RELEASENOTES.md cordova-create/RELEASENOTES.md cordova-node-xcode/RELEASENOTES.md Update the version of cordova-lib that cli and plugman depend on: @@ -133,24 +137,24 @@ Update the version of cordova-common that cordova-lib, cli, fetch and create dep v="$(grep '"version"' cordova-common/package.json | cut -d'"' -f4)" sed -i '' -E 's/"cordova-common":.*/"cordova-common": "'$v'",/' cordova-cli/package.json sed -i '' -E 's/"cordova-common":.*/"cordova-common": "'$v'",/' cordova-plugman/package.json - sed -i '' -E 's/"cordova-common":.*/"cordova-common": "'$v'",/' package.json + sed -i '' -E 's/"cordova-common":.*/"cordova-common": "'$v'",/' cordova-lib/package.json sed -i '' -E 's/"cordova-common":.*/"cordova-common": "'$v'",/' cordova-fetch/package.json sed -i '' -E 's/"cordova-common":.*/"cordova-common": "'$v'",/' cordova-create/package.json Update the version of cordova-js that cordova-lib depends on: v="$(grep '"version"' cordova-js/package.json | cut -d'"' -f4)" - sed -i '' -E 's/"cordova-js":.*/"cordova-js": "'$v'",/' package.json + sed -i '' -E 's/"cordova-js":.*/"cordova-js": "'$v'",/' cordova-lib/package.json Update the version of cordova-fetch that cordova-lib & cordova-create depend on: v="$(grep '"version"' cordova-fetch/package.json | cut -d'"' -f4)" - sed -i '' -E 's/"cordova-fetch":.*/"cordova-fetch": "'$v'",/' package.json + sed -i '' -E 's/"cordova-fetch":.*/"cordova-fetch": "'$v'",/' cordova-lib/package.json sed -i '' -E 's/"cordova-fetch":.*/"cordova-fetch": "'$v'",/' cordova-create/package.json Commit these changes together into one commit - for l in cordova-plugman cordova-cli cordova-js cordova-create cordova-lib cordova-common cordova-serve cordova-fetch; do ( cd $l; v="$(grep '"version"' package.json | cut -d'"' -f4)"; git commit -am "$JIRA Updated version and RELEASENOTES.md for release $v" ); done + for l in cordova-plugman cordova-cli cordova-js cordova-create cordova-lib cordova-common cordova-serve cordova-fetch cordova-node-xcode; do ( cd $l; v="$(grep '"version"' package.json | cut -d'"' -f4)"; git commit -am "$JIRA Updated version and RELEASENOTES.md for release $v" ); done ## Test Link repos: @@ -172,6 +176,7 @@ Ensure license headers are present everywhere. For reference, see this [backgrou coho audit-license-headers -r fetch | less coho audit-license-headers -r serve | less coho audit-license-headers -r create | less + coho audit-license-headers -r node-xcode | less Ensure all dependencies and subdependencies have Apache-compatible licenses @@ -202,6 +207,7 @@ Ensure unit tests pass (plugman tests are included in lib): (cd cordova-js; grunt test --platformVersion=4.0.0) (cd cordova-fetch; npm test) (cd cordova-common; npm test) + (cd cordova-node-xcode; npm test) Add a comment to the JIRA issue stating what you tested, and what the results were. @@ -209,17 +215,14 @@ Add a comment to the JIRA issue stating what you tested, and what the results we ## Tag # Review commits: - for l in cordova-plugman cordova-cli cordova-lib cordova-js cordova-create; do ( cd $l; git log -p origin/master..master ); done + for l in cordova-plugman cordova-cli cordova-lib cordova-js cordova-create cordova-common cordova-fetch cordova-serve cordova-node-xcode; do ( cd $l; git log -p origin/master..master ); done # Tag - for l in cordova-plugman cordova-cli cordova-lib cordova-js cordova-create; do ( cd $l; v="$(grep '"version"' package.json | cut -d'"' -f4)"; git tag $v ); done - (cd cordova-fetch; v="$(grep '"version"' package.json | cut -d'"' -f4)"; git tag $v) - (cd cordova-common; v="$(grep '"version"' package.json | cut -d'"' -f4)"; git tag $v) - (cd cordova-serve; v="$(grep '"version"' package.json | cut -d'"' -f4)"; git tag $v) + for l in cordova-plugman cordova-cli cordova-lib cordova-js cordova-create cordova-common cordova-fetch cordova-serve cordova-node-xcode; do ( cd $l; v="$(grep '"version"' package.json | cut -d'"' -f4)"; git tag $v ); done ## Create release branches if they don't yet exist If branches don't exist, create new ones - (cd cordova-cli; git branch 6.2.x) + (cd cordova-lib; git branch 6.2.x) (cd cordova-js; git branch 4.1.x) (cd cordova-create; git branch 1.0.x) @@ -227,6 +230,7 @@ If branches don't exist, create new ones (cd cordova-fetch; git branch 1.0.x) (cd cordova-common; git branch 1.3.x) (cd cordova-serve; git branch 1.0.x) + (cd cordova-node-xcode; git branch 1.1.x) If branches already exist, update them @@ -234,16 +238,12 @@ If branches already exist, update them ## Re-introduce -dev suffix to versions on master and commit - for l in cordova-lib cordova-plugman cordova-cli cordova-js cordova-fetch cordova-common cordova-serve cordova-create; do ( cd $l; v="$(grep '"version"' package.json | cut -d'"' -f4)"; if [[ $v != *-dev ]]; then v2="$(echo $v|awk -F"." '{$NF+=1}{print $0RT}' OFS="." ORS="")-dev"; echo "$l: Setting version to $v2"; sed -i '' -E 's/version":.*/version": "'$v2'",/' package.json; fi); done - for l in cordova-plugman cordova-cli cordova-js cordova-create; do (cd $l; git commit -am "$JIRA Incremented package version to -dev"; git show ); done - (cd cordova-lib && git add package.json && git commit -m "$JIRA Incremented package version to -dev" && git show) - (cd cordova-fetch && git add package.json && git commit -m "$JIRA Incremented package version to -dev" && git show) - (cd cordova-serve && git add package.json && git commit -m "$JIRA Incremented package version to -dev" && git show) - (cd cordova-common && git add package.json && git commit -m "$JIRA Incremented package version to -dev" && git show) + for l in cordova-lib cordova-plugman cordova-cli cordova-js cordova-fetch cordova-common cordova-serve cordova-create cordova-node-xcode; do ( cd $l; v="$(grep '"version"' package.json | cut -d'"' -f4)"; if [[ $v != *-dev ]]; then v2="$(echo $v|awk -F"." '{$NF+=1}{print $0RT}' OFS="." ORS="")-dev"; echo "$l: Setting version to $v2"; sed -i '' -E 's/version":.*/version": "'$v2'",/' package.json; fi); done + for l in cordova-plugman cordova-cli cordova-js cordova-lib cordova-fetch cordova-serve cordova-common cordova-node-xcode; do (cd $l; git commit -am "$JIRA Incremented package version to -dev"; git show ); done ## Push - for l in cordova-lib cordova-plugman cordova-cli cordova-js cordova-create cordova-common cordova-fetch cordova-serve; do ( cd $l; git push && git push --tags ); done + for l in cordova-lib cordova-plugman cordova-cli cordova-js cordova-create cordova-common cordova-fetch cordova-serve cordova-node-xcode; do ( cd $l; git push && git push --tags ); done If the push fails due to not being fully up-to-date, either: 1. Pull in new changes via `git pull --rebase`, and include them in the release notes / re-tag @@ -258,7 +258,7 @@ Ensure you have the svn repos checked out: Create archives from your tags: - coho create-archive -r plugman -r cli -r lib -r js -r common -r fetch -r serve -r create --dest cordova-dist-dev/$JIRA + coho create-archive -r plugman -r cli -r lib -r js -r common -r fetch -r serve -r create -r node-xcode --dest cordova-dist-dev/$JIRA Sanity Check: @@ -293,7 +293,7 @@ __Body:__ The packages were published from their corresponding git tags: - PASTE OUTPUT OF: coho print-tags -r js -r lib -r plugman -r cli -r fetch -r common -r serve + PASTE OUTPUT OF: coho print-tags -r js -r lib -r plugman -r cli -r fetch -r common -r serve -r node-xcode Upon a successful vote I will upload the archives to dist/, publish them to npm, and post the corresponding blog post. @@ -337,14 +337,15 @@ _Note: list of PMC members: http://people.apache.org/phonebook.html?pmc=cordova_ cd cordova-dist svn up - svn rm tools/cordova-lib-6* - svn rm tools/cordova-6* + svn rm tools/cordova-lib-7* + svn rm tools/cordova-7* svn rm tools/plugman-1* svn rm tools/cordova-js-4* svn rm tools/cordova-fetch-1* svn rm tools/cordova-serve-1* - svn rm tools/cordova-common-1* + svn rm tools/cordova-common-2* svn rm tools/cordova-create-1* + svn rm tools/cordova-node-xcode-1 cp ../cordova-dist-dev/$JIRA/* tools/ svn add tools/* svn commit -m "$JIRA Published tools release to dist" @@ -362,13 +363,14 @@ Find your release here: https://dist.apache.org/repos/dist/release/cordova/tools Publish these to npm npm publish cordova-dist/tools/cordova-js-4*.tgz - npm publish cordova-dist/tools/cordova-lib-6*.tgz - npm publish cordova-dist/tools/cordova-6.*.tgz + npm publish cordova-dist/tools/cordova-lib-7*.tgz + npm publish cordova-dist/tools/cordova-7.*.tgz npm publish cordova-dist/tools/plugman-1*.tgz npm publish cordova-dist/tools/cordova-fetch-1*.tgz - npm publish cordova-dist/tools/cordova-common-1*.tgz + npm publish cordova-dist/tools/cordova-common-2*.tgz npm publish cordova-dist/tools/cordova-serve-1*.tgz npm publish cordova-dist/tools/cordova-create-1*.tgz + npm publish cordova-dist/tools/cordova-node-xcode-1*.tgz Test from npm: @@ -403,7 +405,7 @@ Subject: [ANNOUNCEMENT] Tools Release Make a copy of your released tag with a prefix of rel\YOURTAG. These are permanent release tags for Apache. Do this for all of the tools you just released. For example: - (cd cordova-lib; git checkout 6.1.0; git tag rel/6.1.0; git push origin --tags; git checkout master) + (cd cordova-lib; git checkout 7.1.0; git tag rel/7.1.0; git push origin --tags; git checkout master) ## Do other announcements