aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/jenkins
diff options
context:
space:
mode:
authorTobias Bosch2014-01-06 12:19:51 -0800
committerTobias Bosch2014-01-06 12:27:54 -0800
commit5dc27959d5c0e45cc0cc6133a9ef676cc15d44bd (patch)
treeecc31ec61ff67169774d529d487f819616638a01 /scripts/jenkins
parent4c21355940a98c7236a33d1b5e86d6cd3cf562cb (diff)
downloadangular.js-5dc27959d5c0e45cc0cc6133a9ef676cc15d44bd.tar.bz2
chore(build): refactor build scripts in prepare/publish phase
Refactored all scripts so that they are divided into a `prepare` and a `publish` phase. By this we can build, test, tag, commit everything first. Only if all of this is ok we start pushing to Github. By this we keep Github consistent even in error cases. Extracted include script `/scripts/utils.inc`: - parse and validate named arguments in the style `--name=value` - proxy git command and deactivate `git push` based on command option `--git_push_dry_run=true` (will be inherited to child scripts) - enable/disable bash debug mode by command option `--verbose=true` - dispatch to functions based on command option `--action=...` - helper functions for dealing with json files
Diffstat (limited to 'scripts/jenkins')
-rwxr-xr-xscripts/jenkins/bump-increment.sh25
-rwxr-xr-xscripts/jenkins/bump-remove-snapshot.sh20
-rwxr-xr-xscripts/jenkins/master.sh43
-rwxr-xr-xscripts/jenkins/release.sh66
4 files changed, 56 insertions, 98 deletions
diff --git a/scripts/jenkins/bump-increment.sh b/scripts/jenkins/bump-increment.sh
deleted file mode 100755
index 5e8e4fc7..00000000
--- a/scripts/jenkins/bump-increment.sh
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/bin/bash
-
-echo "############################################"
-echo "## Increment version and add "-snapshot" ##"
-echo "############################################"
-
-if [ "$1" != "patch" -a "$1" != "minor" -a "$1" != "major" ]; then
- echo "Please specify the next version type: patch|minor|major"
- exit 1
-fi
-BUMP_TYPE=$1
-
-# Enable tracing and exit on first failure
-set -xe
-# Normalize working dir to script dir
-cd `dirname $0`/../..
-
-echo "-- increment version "
-grunt bump:$BUMP_TYPE
-NEXT_VERSION=`sed -En 's/.*"version"[ ]*:[ ]*"(.*)".*/\1/p' package.json`
-sed -i .tmp -E 's/"version": "(.*)"/"version": "\1-snapshot"/' package.json
-echo "-- new version: `grep '"version"' package.json`"
-echo "-- commit"
-git add package.json
-git commit -m "chore(release): start v$NEXT_VERSION" \ No newline at end of file
diff --git a/scripts/jenkins/bump-remove-snapshot.sh b/scripts/jenkins/bump-remove-snapshot.sh
deleted file mode 100755
index 9fafb334..00000000
--- a/scripts/jenkins/bump-remove-snapshot.sh
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/bin/bash
-
-echo "############################################"
-echo "## Remove "-snapshot" from version ########"
-echo "############################################"
-
-# Enable tracing and exit on first failure
-set -xe
-# Normalize working dir to script dir
-cd `dirname $0`/../..
-
-echo "-- old version: `grep '"version"' package.json`"
-sed -i .tmp -E 's/"version": "(.*)-snapshot"/"version": "\1"/' package.json
-VERSION=`sed -En 's/.*"version"[ ]*:[ ]*"(.*)".*/\1/p' package.json`
-echo "-- local version: $VERSION"
-
-echo "-- commit and tag with v$VERSION"
-git add package.json
-git commit -m "chore(release): cut v$VERSION release"
-git tag -m "v$VERSION" v$VERSION
diff --git a/scripts/jenkins/master.sh b/scripts/jenkins/master.sh
index a4fe50ac..d5768f58 100755
--- a/scripts/jenkins/master.sh
+++ b/scripts/jenkins/master.sh
@@ -4,22 +4,35 @@ echo "#################################"
echo "#### Update master ##############"
echo "#################################"
-# Enable tracing and exit on first failure
-set -xe
+ARG_DEFS=(
+ "[--no-test=true]"
+)
-cd `dirname $0`/../..
+function build {
+ cd ../..
-echo "#################################"
-echo "#### Jenkins Build ############"
-echo "#################################"
-./jenkins_build.sh
+ if [[ $NO_TEST ]]; then
+ grunt package
+ else
+ ./jenkins_build.sh
+ fi
-echo "#################################"
-echo "## Update code.angular.js.org ###"
-echo "#################################"
-./scripts/code.angularjs.org/publish.sh
+ cd $SCRIPT_DIR
+}
-echo "#################################"
-echo "#### Update bower ###############"
-echo "#################################"
-./scripts/bower/publish.sh \ No newline at end of file
+function phase {
+ ../code.angularjs.org/publish.sh --action=$1
+ ../bower/publish.sh --action=$1
+}
+
+function run {
+ build
+
+ # First prepare all scripts (build, test, commit, tag, ...),
+ # so we are sure everything is all right
+ phase prepare
+ # only then publish to github
+ phase publish
+}
+
+source $(dirname $0)/../utils.inc
diff --git a/scripts/jenkins/release.sh b/scripts/jenkins/release.sh
index c0bb49c0..b4eee4c4 100755
--- a/scripts/jenkins/release.sh
+++ b/scripts/jenkins/release.sh
@@ -4,41 +4,31 @@ echo "#################################"
echo "#### Cut release ################"
echo "#################################"
-if [ "$1" != "patch" -a "$1" != "minor" -a "$1" != "major" ]; then
- echo "Please specify the next version type: patch|minor|major"
- exit 1
-fi
-BUMP_TYPE=$1
-
-# Enable tracing and exit on first failure
-set -xe
-
-# Jump onto the master branch and make sure we are using the latest
-git checkout -f master
-git merge --ff-only origin/master
-
-
-# Normalize working dir to script dir
-cd `dirname $0`/../..
-
-
-# Bump versions: remove "-snapshot" suffix
-./scripts/jenkins/bump-remove-snapshot.sh
-
-# Build
-./jenkins_build.sh
-
-# Bump versions: Increment version and add "-snapshot"
-./scripts/jenkins/bump-increment.sh $BUMP_TYPE
-
-echo "-- push to Github"
-# push the commits to github
-git push origin master
-# push the release tag
-git push origin v`cat build/version.txt`
-
-# Update code.angularjs.org
-./scripts/code.angularjs.org/publish.sh
-
-# Update bower
-./scripts/bower/publish.sh
+ARG_DEFS=(
+ "--next_version_type=(patch|minor|major)"
+ "--next-version-name=(.+)"
+ "[--no-test=true]"
+)
+
+function init {
+ NG_ARGS=("$@")
+ if [[ $NO_TEST ]]; then
+ NG_ARGS+=(--no_test=true)
+ fi
+}
+
+function phase {
+ ../angular.js/publish.sh --action=$1 "${NG_ARGS[@]}"
+ ../code.angularjs.org/publish.sh --action=$1
+ ../bower/publish.sh --action=$1
+}
+
+function run {
+ # First prepare all scripts (build, test, commit, tag, ...),
+ # so we are sure everything is all right
+ phase prepare
+ # only then publish to github
+ phase publish
+}
+
+source $(dirname $0)/../utils.inc