Skip to content

Commit 441a346

Browse files
Merge pull request #41 from dignifiedquire/changelog
Changelog generation
2 parents d612b08 + ced51fe commit 441a346

File tree

8 files changed

+90
-13
lines changed

8 files changed

+90
-13
lines changed

README.md

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -127,9 +127,12 @@ $ gulp build
127127
2. Run tests
128128
3. Build everything
129129
4. Bump the version in `package.json`
130-
5. Commit the version change
131-
6. Create a git tag
132-
7. Run `git push` to `upstream/master`
130+
5. Generate a changelog based on the git log
131+
6. Commit the version change & `CHANGELOG.md`
132+
7. Create a git tag
133+
8. Run `git push` to `upstream/master`
134+
9. Publish a release to Github releases (if `GH_TOKEN` is available)
135+
10. Publish to npm
133136

134137
```bash
135138
# Major release
@@ -151,6 +154,15 @@ $ aegir-release --env node
151154
$ gulp release --env node
152155
```
153156

157+
You can generate a changelog for all versions by using `--first`
158+
159+
```bash
160+
$ aegir-relase --first
161+
```
162+
163+
You can skip all changelog generation and the github release by passing
164+
in `--no-changelog`.
165+
154166
## Other Notes
155167

156168
There is a badge.

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
"babel-preset-es2015": "^6.9.0",
3232
"brfs": "^1.4.3",
3333
"chalk": "^1.1.3",
34+
"conventional-github-releaser": "^1.1.3",
3435
"coveralls": "^2.11.12",
3536
"eslint": "^3.2.0",
3637
"eslint-config-standard": "^5.3.5",
@@ -39,6 +40,7 @@
3940
"gulp": "^3.9.1",
4041
"gulp-babel": "^6.1.2",
4142
"gulp-bump": "^2.2.0",
43+
"gulp-conventional-changelog": "^1.1.0",
4244
"gulp-eslint": "^3.0.1",
4345
"gulp-filter": "^4.0.0",
4446
"gulp-git": "^1.10.0",

src/utils.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
const runSequence = require('run-sequence')
44
const $ = require('gulp-load-plugins')()
5+
const fs = require('fs')
56

67
// Workaround gulp not exiting if there are some
78
// resources not freed
@@ -34,3 +35,7 @@ exports.fail = (msg) => {
3435
$.util.log($.util.colors.red(msg))
3536
process.exit(1)
3637
}
38+
39+
exports.getVersion = () => {
40+
return JSON.parse(fs.readFileSync('./package.json', 'utf8')).version
41+
}

tasks/release/bump.js

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@
22

33
const $ = require('gulp-load-plugins')()
44
const semver = require('semver')
5-
const fs = require('fs')
65
const _ = require('lodash')
76

7+
const getVersion = require('../../src/utils').getVersion
8+
89
function getType () {
910
if (_.includes($.util.env._, 'major')) return 'major'
1011
if (_.includes($.util.env._, 'minor')) return 'minor'
@@ -13,21 +14,13 @@ function getType () {
1314
return 'patch'
1415
}
1516

16-
function getCurrentVersion () {
17-
return JSON.parse(fs.readFileSync('./package.json', 'utf8')).version
18-
}
19-
2017
module.exports = (gulp, done) => {
2118
const type = getType()
22-
const newVersion = semver.inc(getCurrentVersion(), type)
19+
const newVersion = semver.inc(getVersion(), type)
2320

2421
$.util.log('Releasing %s', newVersion)
2522

2623
return gulp.src('./package.json')
2724
.pipe($.bump({version: newVersion}))
2825
.pipe(gulp.dest('./'))
29-
.pipe($.git.add())
30-
.pipe($.git.commit(`chore: release version v${newVersion}`, {args: '-n'}))
31-
.pipe($.filter('package.json'))
32-
.pipe($.tagVersion())
3326
}

tasks/release/changelog.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
'use strict'
2+
3+
const $ = require('gulp-load-plugins')()
4+
5+
module.exports = (gulp, done) => {
6+
if ($.util.env.changelog === false) {
7+
$.util.log('Skipping changelog generation')
8+
return done()
9+
}
10+
11+
const releaseCount = $.util.env.first ? 0 : 1
12+
13+
return gulp.src('CHANGELOG.md')
14+
.pipe($.conventionalChangelog({
15+
preset: 'angular',
16+
releaseCount
17+
}))
18+
.pipe(gulp.dest('./'))
19+
}

tasks/release/commit.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
'use strict'
2+
3+
const $ = require('gulp-load-plugins')()
4+
5+
const getVersion = require('../../src/utils').getVersion
6+
7+
module.exports = (gulp, done) => {
8+
const newVersion = getVersion()
9+
10+
return gulp.src(['package.json', 'CHANGELOG.md'])
11+
.pipe($.git.add())
12+
.pipe($.git.commit(`chore: release version v${newVersion}`, {args: '-n'}))
13+
.pipe($.filter('package.json'))
14+
.pipe($.tagVersion())
15+
}

tasks/release/github.js

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
'use strict'
2+
3+
const $ = require('gulp-load-plugins')()
4+
const conventionalGithubReleaser = require('conventional-github-releaser')
5+
6+
module.exports = (gulp, done) => {
7+
if ($.util.env.changelog === false) {
8+
$.util.log('Skipping github release')
9+
return done()
10+
}
11+
12+
const token = process.env.GH_TOKEN || $.util.env.token
13+
14+
if (!token) {
15+
$.util.log($.util.colors.yellow(`
16+
Skipping Github release as you are missing an oauth token.
17+
You can supply one by either using $GH_TOKEN or --token.
18+
`))
19+
return done()
20+
}
21+
22+
conventionalGithubReleaser({
23+
type: 'oauth',
24+
token
25+
}, {
26+
preset: 'angular'
27+
}, done)
28+
}

tasks/release/post-build.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,10 @@ module.exports = (gulp, done) => {
66
runSequence.use(gulp)(
77
'release:contributors',
88
'release:bump',
9+
'release:changelog',
10+
'release:commit',
911
'release:push',
12+
'release:github',
1013
'release:publish',
1114
done
1215
)

0 commit comments

Comments
 (0)