@@ -8,6 +8,7 @@ var fs = require('fs');
88// Fetch command-line arguments.
99var args = minimist ( process . argv . slice ( 2 ) , {
1010 string : [ 'env' , 'newversion' , 'tagmessage' ] ,
11+ alias : { v : 'newversion' , m : 'tagmessage' } ,
1112 default : {
1213 env : process . env . NODE_ENV || 'production' ,
1314 newversion : 'patch' ,
@@ -16,25 +17,12 @@ var args = minimist(process.argv.slice(2), {
1617} ) ;
1718args . newversion = args . newversion || 'patch' ;
1819
19- /* ----- REUSABLE TASKS ----- */
20-
2120// Get package version from package.json.
2221function getVersion ( ) {
2322 var pkg = JSON . parse ( fs . readFileSync ( './package.json' ) ) ;
2423 return 'v' + pkg . version ;
2524}
2625
27- // Merge the specified branch back into master and develop.
28- function mergeBranch ( branch ) {
29- var mergeCmd = 'git merge --no-ff --no-edit ' + branch ;
30-
31- console . log ( 'Merging release into master.' )
32- return exec ( 'git checkout master && ' + mergeCmd ) . then ( function ( ) {
33- console . log ( 'Merging release into develop.' )
34- return exec ( 'git checkout develop && ' + mergeCmd ) ;
35- } ) ;
36- }
37-
3826/* ----- TASKS ----- */
3927
4028// Bump version using NPM (only affects package*.json, doesn't commit).
@@ -43,39 +31,25 @@ gulp.task('bump-version', function bumpVersion() {
4331 return exec ( 'npm --no-git-tag-version version ' + args . newversion ) ;
4432} ) ;
4533
46- // Stage a release (bump version and create a 'release/[version]' branch).
47- gulp . task ( 'stage-release' , gulp . series ( 'bump-version' , function stageRelease ( ) {
48- var version = getVersion ( ) ;
49- var branch = 'release/' + version ;
50- var cmd = 'git checkout -b ' + branch + ' && git add -A' ;
51- cmd += ' && git commit -m "Prepare release ' + version + '"' ;
52-
53- console . log ( 'Creating release branch and committing changes.' ) ;
54- return exec ( cmd ) ;
55- } ) ) ;
56-
57- gulp . task ( 'finalize-release' , function finalizeRelease ( ) {
34+ // Bump version, build, commit, tag, and merge into stable.
35+ gulp . task ( 'release' , gulp . series ( 'bump-version' , function release ( ) {
5836 var version = getVersion ( ) ;
59- var branch = 'release/' + version ;
37+ var branch = 'master' ;
6038 var cmd = 'git checkout ' + branch + ' && npm run build' ;
6139
62- console . log ( 'Running build process in release branch.' ) ;
40+ console . log ( 'Running build process in master branch.' ) ;
6341 return exec ( cmd ) . then ( function ( ) {
6442 console . log ( 'Adding all changes and performing final commit.' ) ;
6543 return exec ( 'git add -A && git commit --allow-empty -m "Build ' + version + '"' ) ;
66- } ) . then ( function ( ) {
44+ } ) . then ( function ( ) {
6745 console . log ( 'Tagging with provided tag message.' ) ;
6846 return exec ( 'git tag -a ' + version + ' -m "' + version + ' ' + args . tagmessage + '"' ) ;
69- } ) ;
70- } ) ;
71-
72- // Tag and merge the latest release into master/develop.
73- gulp . task ( 'release' , gulp . series ( 'finalize-release' , function release ( ) {
74- var version = getVersion ( ) ;
75- var branch = 'release/' + version ;
76-
77- return mergeBranch ( branch ) . then ( function ( ) {
78- console . log ( 'Deleting release branch.' ) ;
79- return exec ( 'git branch -d ' + branch ) ;
47+ } ) . then ( function ( ) {
48+ console . log ( 'Getting repo root location.' ) ;
49+ return exec ( 'git rev-parse --show-toplevel' ) ;
50+ } ) . then ( function ( res ) {
51+ console . log ( 'Pushing release to stable branch.' ) ;
52+ var repoRoot = res . stdout . trim ( '\n' ) ;
53+ return exec ( 'git push --follow-tags ' + repoRoot + ' master:stable' )
8054 } ) ;
8155} ) ) ;
0 commit comments