diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 0981726..c970945 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -8,11 +8,23 @@ jobs: release: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - name: Checkout code + uses: actions/checkout@v2 - run: yarn --production - run: git add node_modules -f - - uses: ./ + - name: Generate changelog + id: changelog + uses: ./ with: github-token: ${{ secrets.github_token }} + + - name: Create Release + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.github_token }} + with: + tag_name: ${{ steps.changelog.outputs.tag }} + release_name: ${{ steps.changelog.outputs.tag }} + body: ${{ steps.changelog.outputs.changelog }} diff --git a/action.yml b/action.yml index f329101..bb771b5 100644 --- a/action.yml +++ b/action.yml @@ -43,3 +43,11 @@ inputs: description: 'The path to the package.json to use' default: './package.json' required: false + +outputs: + changelog: + description: 'The generated changelog for the new version' + version: + description: 'The new version' + tag: + description: 'The name of the generated tag' diff --git a/src/helpers/generateChangelog.js b/src/helpers/generateChangelog.js index 7fc2c1f..5a66972 100644 --- a/src/helpers/generateChangelog.js +++ b/src/helpers/generateChangelog.js @@ -1,11 +1,32 @@ const fs = require('fs') const conventionalChangelog = require('conventional-changelog') -module.exports = (tagPrefix, preset, jsonPackage, fileName, releaseCount) => new Promise((resolve) => { +module.exports.generateStringChangelog = (tagPrefix, preset, jsonPackage, releaseCount) => new Promise((resolve, reject) => { const changelogStream = conventionalChangelog({ preset, releaseCount: parseInt(releaseCount, 10), - tagPrefix + tagPrefix, + }, + { + version: jsonPackage.version, + currentTag: `${tagPrefix}${jsonPackage.version}`, + }, + ) + + let changelog = '' + + changelogStream + .on('data', (data) => { + changelog += data.toString() + }) + .on('end', () => resolve(changelog)) +}) + +module.exports.generateFileChangelog = (tagPrefix, preset, jsonPackage, fileName, releaseCount) => new Promise((resolve) => { + const changelogStream = conventionalChangelog({ + preset, + releaseCount: parseInt(releaseCount, 10), + tagPrefix, }, { version: jsonPackage.version, diff --git a/src/index.js b/src/index.js index e80df94..b37fdce 100644 --- a/src/index.js +++ b/src/index.js @@ -3,7 +3,7 @@ const conventionalRecommendedBump = require('conventional-recommended-bump') const git = require('./helpers/git') const packageJson = require('./helpers/packageJson') -const generateChangelog = require('./helpers/generateChangelog') +const changelog = require('./helpers/generateChangelog') async function run() { try { @@ -42,8 +42,15 @@ async function run() { core.info(`New version: ${jsonPackage.version}`) - // Generate the changelog - await generateChangelog(tagPrefix, preset, jsonPackage, outputFile, releaseCount) + // If output file === 'false' we don't write it to file + if (outputFile !== 'false') { + // Generate the changelog + await changelog.generateFileChangelog(tagPrefix, preset, jsonPackage, outputFile, releaseCount) + } + + const stringChangelog = await changelog.generateStringChangelog(tagPrefix, preset, jsonPackage, 1) + core.info('Changelog generated') + core.info(stringChangelog) core.info('Push all changes') @@ -52,6 +59,11 @@ async function run() { await git.commit(commitMessage.replace('{version}', `${tagPrefix}${jsonPackage.version}`)) await git.createTag(`${tagPrefix}${jsonPackage.version}`) await git.push() + + // Set outputs so other actions (for example actions/create-release) can use it + core.setOutput('changelog', stringChangelog) + core.setOutput('version', jsonPackage.version) + core.setOutput('tag', `${tagPrefix}${jsonPackage.version}`) } })