Fix autogeneration of release notes

This commit is contained in:
John Kleinschmidt
2018-03-13 15:14:52 -04:00
parent b1dd013425
commit c9e5d17950
2 changed files with 33 additions and 12 deletions

2
Jenkinsfile vendored
View File

@@ -9,7 +9,6 @@ pipeline {
}
steps {
timeout(60) {
sh 'nvm use 8'
sh 'script/bootstrap.py --target_arch=x64 --dev'
sh 'npm run lint'
sh 'script/build.py -c D'
@@ -31,7 +30,6 @@ pipeline {
}
steps {
timeout(60) {
sh 'nvm use 8'
sh 'script/bootstrap.py --target_arch=x64 --dev'
sh 'npm run lint'
sh 'script/build.py -c D'

View File

@@ -78,8 +78,10 @@ async function getReleaseNotes (currentBranch) {
base: `v${pkg.version}`,
head: currentBranch
}
let releaseNotes = ''
if (!args.automaticRelease) {
let releaseNotes
if (args.automaticRelease) {
releaseNotes = '## Bug Fixes/Changes \n\n'
} else {
releaseNotes = '(placeholder)\n'
}
console.log(`Checking for commits from ${pkg.version} to ${currentBranch}`)
@@ -95,19 +97,40 @@ async function getReleaseNotes (currentBranch) {
`${currentBranch}, skipping release.`)
process.exit(0)
}
let prCount = 0
const mergeRE = /Merge pull request #(\d+) from .*\n/
const newlineRE = /(.*)\n*.*/
const prRE = /(.* )\(#(\d+)\)(?:.*)/
commitComparison.data.commits.forEach(commitEntry => {
let commitMessage = commitEntry.commit.message
if (commitMessage.toLowerCase().indexOf('merge') > -1) {
let mergeRE = /Merge pull request (#\d+) from .*\n/
if (commitMessage.indexOf('#') > -1) {
let prMatch = commitMessage.match(mergeRE)
commitMessage = commitMessage.replace(mergeRE, '').replace('\n', '')
if (commitMessage.substr(commitMessage.length - 1, commitMessage.length) !== '.') {
commitMessage += '.'
let prNumber
if (prMatch) {
commitMessage = commitMessage.replace(mergeRE, '').replace('\n', '')
let newlineMatch = commitMessage.match(newlineRE)
if (newlineMatch) {
commitMessage = newlineMatch[1]
}
prNumber = prMatch[1]
} else {
prMatch = commitMessage.match(prRE)
if (prMatch) {
commitMessage = prMatch[1].trim()
prNumber = prMatch[2]
}
}
if (prMatch) {
if (commitMessage.substr(commitMessage.length - 1, commitMessage.length) !== '.') {
commitMessage += '.'
}
releaseNotes += `* ${commitMessage} #${prNumber} \n\n`
prCount++
}
releaseNotes += `${commitMessage} ${prMatch[1]} \n\n`
}
})
console.log(`${pass} Done generating release notes for ${currentBranch}.`)
console.log(`${pass} Done generating release notes for ${currentBranch}. Found ${prCount} PRs.`)
return releaseNotes
}
@@ -223,7 +246,7 @@ async function prepareRelease (isBeta, notesOnly) {
let currentBranch = await getCurrentBranch(gitDir)
if (notesOnly) {
let releaseNotes = await getReleaseNotes(currentBranch)
console.log(`Draft release notes are: ${releaseNotes}`)
console.log(`Draft release notes are: \n${releaseNotes}`)
} else {
await verifyNewVersion()
await createRelease(currentBranch, isBeta)