Skip to content

Commit

Permalink
chore(build): automate cutting a release, publishing to bower and to …
Browse files Browse the repository at this point in the history
…code.angular.js
  • Loading branch information
tbosch committed Dec 13, 2013
1 parent 03088d6 commit 8c10db3
Show file tree
Hide file tree
Showing 11 changed files with 163 additions and 62 deletions.
10 changes: 10 additions & 0 deletions Gruntfile.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 4,7 @@ var path = require('path');

module.exports = function(grunt) {
//grunt plugins
grunt.loadNpmTasks('grunt-bump');
grunt.loadNpmTasks('grunt-contrib-clean');
grunt.loadNpmTasks('grunt-contrib-copy');
grunt.loadNpmTasks('grunt-contrib-connect');
Expand Down Expand Up @@ -268,6 269,15 @@ module.exports = function(grunt) {
write: {
versionTXT: {file: 'build/version.txt', val: NG_VERSION.full},
versionJSON: {file: 'build/version.json', val: JSON.stringify(NG_VERSION)}
},

bump: {
options: {
files: ['package.json'],
commit: false,
createTag: false,
push: false
}
}
});

Expand Down
Empty file modified jenkins_build.sh
100755 → 100644
Empty file.
9 changes: 7 additions & 2 deletions lib/grunt/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -36,13 36,12 @@ module.exports = {
var package = JSON.parse(fs.readFileSync('package.json', 'UTF-8'));
var match = package.version.match(/^([^\-]*)(?:\-(. ))?$/);
var semver = match[1].split('.');
var hash = shell.exec('git rev-parse --short HEAD', {silent: true}).output.replace('\n', '');

var fullVersion = match[1];

if (match[2]) {
fullVersion = '-';
fullVersion = (match[2] == 'snapshot') ? hash : match[2];
fullVersion = (match[2] == 'snapshot') ? getSnapshotSuffix() : match[2];
}

version = {
Expand All @@ -55,6 54,12 @@ module.exports = {
};

return version;

function getSnapshotSuffix() {
var jenkinsBuild = process.env.BUILD_NUMBER || 'local';
var hash = shell.exec('git rev-parse --short HEAD', {silent: true}).output.replace('\n', '');
return 'build.' jenkinsBuild ' sha.' hash;
}
},


Expand Down
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 10,7 @@
"devDependencies": {
"grunt": "~0.4.1",
"bower": "~1.2.2",
"grunt-bump": "~0.0.13",
"grunt-contrib-clean": "~0.5.0",
"grunt-contrib-compress": "~0.5.2",
"grunt-contrib-connect": "~0.5.0",
Expand Down
13 changes: 4 additions & 9 deletions scripts/bower/README.md
Original file line number Diff line number Diff line change
@@ -1,23 1,18 @@
# Angular Bower Script

Script for updating the Angular bower repos from a code.angularjs.org package
Script for updating the Angular bower repos from current local build.

Requires `node` (for parsing `bower.json`) and `wget` (for fetching the `angular.zip` from `code.angularjs.org`)
Requires `node` (for parsing `bower.json`)


## Instructions

You need to run `./init.sh` the first time you use this script to clone all the repos.

For subsequent updates:
`grunt package`: Build angular locally

```shell
./publish.sh NEW_VERSION
./publish.sh
```

Where `NEW_VERSION` is a version number like `1.2.3`.


## License
MIT

28 changes: 0 additions & 28 deletions scripts/bower/init.sh

This file was deleted.

45 changes: 22 additions & 23 deletions scripts/bower/publish.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 7,13 @@
set -e # fail if any command fails

cd `dirname $0`
SCRIPT_DIR=`pwd`

NEW_VERSION=$1
export TMP_DIR=../../tmp

ZIP_FILE=angular-$NEW_VERSION.zip
ZIP_FILE_URL=http://code.angularjs.org/$NEW_VERSION/angular-$NEW_VERSION.zip
ZIP_DIR=angular-$NEW_VERSION
export BUILD_DIR=../../build

NEW_VERSION=$(node -e "console.log(require(process.env.BUILD_DIR '/version.json').full)" | sed -e 's/\r//g')

REPOS=(
angular \
Expand All @@ -28,47 29,45 @@ REPOS=(
angular-touch \
)


#
# download and unzip the file
# clone repos
#

if [ ! -f $ZIP_FILE ]; then
wget $ZIP_FILE_URL
unzip $ZIP_FILE
fi
for repo in "${REPOS[@]}"
do
git clone [email protected]:angular/bower-$repo.git $TMP_DIR/bower-$repo
done


#
# move the files from the zip
# move the files from the build
#

for repo in "${REPOS[@]}"
do
if [ -f $ZIP_DIR/$repo.js ] # ignore i18l
if [ -f $BUILD_DIR/$repo.js ] # ignore i18l
then
cd bower-$repo
cd $TMP_DIR/bower-$repo
git reset --hard HEAD
git checkout master
git fetch --all
git reset --hard origin/master
cd ..
mv $ZIP_DIR/$repo.* bower-$repo/
cd $SCRIPT_DIR
cp $BUILD_DIR/$repo.* $TMP_DIR/bower-$repo/
fi
done

# move i18n files
mv $ZIP_DIR/i18n/*.js bower-angular-i18n/
cp $BUILD_DIR/i18n/*.js $TMP_DIR/bower-angular-i18n/

# move csp.css
mv $ZIP_DIR/angular-csp.css bower-angular
cp $BUILD_DIR/angular-csp.css $TMP_DIR/bower-angular


#
# get the old version number
#

OLD_VERSION=$(node -e "console.log(require('./bower-angular/bower').version)" | sed -e 's/\r//g')
OLD_VERSION=$(node -e "console.log(require(process.env.TMP_DIR '/bower-angular/bower').version)" | sed -e 's/\r//g')
echo $OLD_VERSION
echo $NEW_VERSION

Expand All @@ -79,12 78,12 @@ echo $NEW_VERSION

for repo in "${REPOS[@]}"
do
cd bower-$repo
cd $TMP_DIR/bower-$repo
sed -i '' -e "s/$OLD_VERSION/$NEW_VERSION/g" bower.json
git add -A
git commit -m "v$NEW_VERSION"
git tag v$NEW_VERSION
git push origin master
git push origin v$NEW_VERSION
cd ..
# TODO git push origin master
# TODO git push origin v$NEW_VERSION
cd $SCRIPT_DIR
done
19 changes: 19 additions & 0 deletions scripts/code.angularjs.org/README.md
Original file line number Diff line number Diff line change
@@ -0,0 1,19 @@
# code.angular.js.org Script

Script for updating code.angularjs.org repo from current local build.

Requires `node` (for parsing `bower.json`)

Note: This should only be run for a release build, not a snapshot build!

## Instructions

`grunt package`: Build angular locally

```shell
./publish.sh
```

## License
MIT

57 changes: 57 additions & 0 deletions scripts/code.angularjs.org/publish.sh
Original file line number Diff line number Diff line change
@@ -0,0 1,57 @@
#!/bin/bash

#
# update all the things
#

set -e # fail if any command fails

cd `dirname $0`
SCRIPT_DIR=`pwd`

export TMP_DIR=../../tmp
export REPO_DIR=$TMP_DIR/code.angularjs.org

export BUILD_DIR=../../build

NEW_VERSION=$(node -e "console.log(require(process.env.BUILD_DIR '/version.json').full)" | sed -e 's/\r//g')

#
# Don't publish snapshot builds!
#
if [[ "$NEW_VERSION" =~ sha ]] ;then
echo "publish to code.angularjs.org is not allowed for snapshot builds"
exit 1;
fi

exit 2

#
# clone
#

git clone [email protected]:angular/code.angularjs.org.git $REPO_DIR

#
# copy the files from the build
#

mkdir $REPO_DIR/$NEW_VERSION

cd $REPO_DIR
git reset --hard HEAD
git checkout master
git fetch --all
git reset --hard origin/master
cd $SCRIPT_DIR
cp -r $BUILD_DIR/* $REPO_DIR/$NEW_VERSION/

#
# commit and push
#

cd $REPO_DIR
git add -A
git commit -m "v$NEW_VERSION"
# TODO git push origin master
cd $SCRIPT_DIR
14 changes: 14 additions & 0 deletions scripts/jenkins/master.sh
Original file line number Diff line number Diff line change
@@ -0,0 1,14 @@
#!/bin/bash

set -e # fail if any command fails
cd `dirname $0`/../..

# Build
./jenkins_build.sh

# Update code.angularjs.org
VERSION=`cat build/version.txt`
curl http://code.angularjs.org/fetchLatestSnapshot.php?ver=$VERSION

# Push to bower
./scripts/bower/publish.sh
29 changes: 29 additions & 0 deletions scripts/jenkins/release.sh
Original file line number Diff line number Diff line change
@@ -0,0 1,29 @@
#!/bin/bash

set -e # fail if any command fails
cd `dirname $0`/../..

# bump versions: remove "-snapshot" suffix
sed -i -e 's/"version": "\(.*\)-snapshot"/"version": "\1"/' package.json

# Build
./jenkins_build.sh

VERSION=`cat build/version.txt`

# bump versions: increment version number and add "-snapshot" again
grunt bump:$BUMP_TYPE
sed -i -e 's/"version": "\(.*\)"/"version": "\1-snapshot"/' package.json

# commit, tag and push
git commit -m "chore(release): v%VERSION%"
git tag -m "v%VERSION%" v%VERSION%
# TODO git push

# Update code.angularjs.org
./scripts/code.angularjs.org/publish.sh

# Push to bower
./scripts/bower/publish.sh


0 comments on commit 8c10db3

Please sign in to comment.