@@ -8,6 +8,7 @@ var fs = require('fs');
8
8
// Fetch command-line arguments.
9
9
var args = minimist ( process . argv . slice ( 2 ) , {
10
10
string : [ 'env' , 'newversion' , 'tagmessage' ] ,
11
+ alias : { v : 'newversion' , m : 'tagmessage' } ,
11
12
default : {
12
13
env : process . env . NODE_ENV || 'production' ,
13
14
newversion : 'patch' ,
@@ -16,25 +17,12 @@ var args = minimist(process.argv.slice(2), {
16
17
} ) ;
17
18
args . newversion = args . newversion || 'patch' ;
18
19
19
- /* ----- REUSABLE TASKS ----- */
20
-
21
20
// Get package version from package.json.
22
21
function getVersion ( ) {
23
22
var pkg = JSON . parse ( fs . readFileSync ( './package.json' ) ) ;
24
23
return 'v' + pkg . version ;
25
24
}
26
25
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
-
38
26
/* ----- TASKS ----- */
39
27
40
28
// Bump version using NPM (only affects package*.json, doesn't commit).
@@ -43,39 +31,25 @@ gulp.task('bump-version', function bumpVersion() {
43
31
return exec ( 'npm --no-git-tag-version version ' + args . newversion ) ;
44
32
} ) ;
45
33
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 ( ) {
58
36
var version = getVersion ( ) ;
59
- var branch = 'release/' + version ;
37
+ var branch = 'master' ;
60
38
var cmd = 'git checkout ' + branch + ' && npm run build' ;
61
39
62
- console . log ( 'Running build process in release branch.' ) ;
40
+ console . log ( 'Running build process in master branch.' ) ;
63
41
return exec ( cmd ) . then ( function ( ) {
64
42
console . log ( 'Adding all changes and performing final commit.' ) ;
65
43
return exec ( 'git add -A && git commit --allow-empty -m "Build ' + version + '"' ) ;
66
- } ) . then ( function ( ) {
44
+ } ) . then ( function ( ) {
67
45
console . log ( 'Tagging with provided tag message.' ) ;
68
46
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' )
80
54
} ) ;
81
55
} ) ) ;
0 commit comments