mirror of
https://github.com/Hopiu/angular.js.git
synced 2026-03-16 23:30:23 +00:00
chore(build): automate cutting a release, publishing to bower and to code.angular.js
This commit is contained in:
parent
03088d6010
commit
8c10db3847
11 changed files with 163 additions and 62 deletions
10
Gruntfile.js
10
Gruntfile.js
|
|
@ -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');
|
||||
|
|
@ -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
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
|||
0
jenkins_build.sh
Executable file → Normal file
0
jenkins_build.sh
Executable file → Normal file
|
|
@ -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 = {
|
||||
|
|
@ -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;
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -1,28 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
#
|
||||
# init all of the bower repos
|
||||
#
|
||||
|
||||
set -e # fail if any command fails
|
||||
|
||||
REPOS=(
|
||||
angular \
|
||||
angular-animate \
|
||||
angular-cookies \
|
||||
angular-i18n \
|
||||
angular-loader \
|
||||
angular-mocks \
|
||||
angular-route \
|
||||
angular-resource \
|
||||
angular-sanitize \
|
||||
angular-scenario \
|
||||
angular-touch \
|
||||
)
|
||||
|
||||
cd `dirname $0`
|
||||
|
||||
for repo in "${REPOS[@]}"
|
||||
do
|
||||
git clone git@github.com:angular/bower-$repo.git
|
||||
done
|
||||
|
|
@ -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 \
|
||||
|
|
@ -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 git@github.com: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
|
||||
|
||||
|
|
@ -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
scripts/code.angularjs.org/README.md
Normal file
19
scripts/code.angularjs.org/README.md
Normal file
|
|
@ -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
scripts/code.angularjs.org/publish.sh
Executable file
57
scripts/code.angularjs.org/publish.sh
Executable file
|
|
@ -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 git@github.com: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
scripts/jenkins/master.sh
Executable file
14
scripts/jenkins/master.sh
Executable file
|
|
@ -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
scripts/jenkins/release.sh
Normal file
29
scripts/jenkins/release.sh
Normal file
|
|
@ -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
|
||||
|
||||
|
||||
Loading…
Reference in a new issue