tools: script release steps after jenkins build
authorTimothy J Fontaine <tjfontaine@gmail.com>
Wed, 21 Aug 2013 23:59:15 +0000 (16:59 -0700)
committerTimothy J Fontaine <tjfontaine@gmail.com>
Wed, 21 Aug 2013 23:59:15 +0000 (16:59 -0700)
.gitignore
tools/node-release-post-build.sh [new file with mode: 0755]

index b436353..1775144 100644 (file)
@@ -54,6 +54,6 @@ deps/openssl/openssl.xml
 
 # build/release artifacts
 /*.tar.gz
-/SHASUMS.txt*
+/SHASUMS*.txt*
 
 /tools/wrk/wrk
diff --git a/tools/node-release-post-build.sh b/tools/node-release-post-build.sh
new file mode 100755 (executable)
index 0000000..6adda19
--- /dev/null
@@ -0,0 +1,79 @@
+#!/bin/bash
+
+## This is to be used once jenkins has finished building the release
+
+set -e
+
+stability="$(python tools/getstability.py)"
+NODE_STABC="$(tr '[:lower:]' '[:upper:]' <<< ${stability:0:1})${stability:1}"
+NODE_STABL="$stability"
+
+echo "Building for $stability"
+
+scp tj@nodejs.org:archive/node/tmp/v$(python tools/getnodeversion.py)/SHASUM* .
+FILES="SHASUMS SHASUMS256"
+for i in $FILES ; do gpg -s $i.txt; gpg --clearsign $i.txt; done
+scp SHASUM* tj@nodejs.org:archive/node/tmp/v$(python tools/getnodeversion.py)/
+ssh nodejs.org mkdir -p "dist/v$(python tools/getnodeversion.py)/{x64,docs}"
+ssh nodejs.org ln -s ../dist/v$(python tools/getnodeversion.py)/docs docs/v$(python tools/getnodeversion.py)
+
+ssh root@nodejs.org mv /home/tj/archive/node/tmp/v$(python tools/getnodeversion.py)/* /home/node/dist/v$(python tools/getnodeversion.py)/
+ssh root@nodejs.org chown -R node:other /home/node/dist/v$(python tools/getnodeversion.py)
+
+# tag the release
+# should be the same key used to sign the shasums
+git tag -sm "$(bash tools/changelog-head.sh)" v$(python tools/getnodeversion.py)
+# push to github
+git push git@github.com:joyent/node v$(python tools/getnodeversion.py)-release --tags 
+
+# blog post and email
+make email.md
+( echo ""
+  echo "Shasums:"
+  echo '```'
+  cat SHASUMS.txt
+  echo '```' ) >> email.md
+( echo -n "date: "
+  date
+  echo -n "version: "
+  python tools/getnodeversion.py
+  echo "category: release"
+  echo "title: Node v"$(python tools/getnodeversion.py)" ($NODE_STABC)"
+  echo "slug: node-v"$(python tools/getnodeversion.py | sed 's|\.|-|g')"-$NODE_STABL"
+  echo ""
+  cat email.md ) > doc/blog/release/v$(python tools/getnodeversion.py).md
+
+if [ "$stability" = "stable" ];
+then
+  ## this needs to happen here because the website depends on the current node
+  ## node version
+  make website-upload
+  make blog-upload
+  BRANCH="v$(python tools/getnodeversion.py | sed -E 's#\.[0-9]+$##')"
+else
+  BRANCH="master"
+fi
+
+echo "Merging back into $BRANCH"
+
+# merge back into mainline stable branch
+git checkout $BRANCH
+git merge --no-ff v$(python tools/getnodeversion.py)-release
+# change the version number, set isrelease = 0
+## TODO automagic.
+vim src/node_version.h
+git commit -am "Now working on "$(python tools/getnodeversion.py)
+
+if [ "$stability" = "stable" ];
+then
+  echo "Adding blog"
+  git add doc/blog
+  git commit -m "blog: Post for v$(python tools/getprevnodeversion.py)"
+else
+  echo "copy blog to stable branch"
+fi
+
+git push git@github.com:joyent/node $BRANCH