feat: Added outputs

releases/v3
Tycho Bokdam 2020-05-08 09:53:52 +02:00
parent 6bfb377c32
commit 770b36d584
No known key found for this signature in database
GPG Key ID: A0FAE77C8CDF33C7
4 changed files with 60 additions and 7 deletions

View File

@ -8,11 +8,23 @@ jobs:
release: release:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2 - name: Checkout code
uses: actions/checkout@v2
- run: yarn --production - run: yarn --production
- run: git add node_modules -f - run: git add node_modules -f
- uses: ./ - name: Generate changelog
id: changelog
uses: ./
with: with:
github-token: ${{ secrets.github_token }} 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 }}

View File

@ -43,3 +43,11 @@ inputs:
description: 'The path to the package.json to use' description: 'The path to the package.json to use'
default: './package.json' default: './package.json'
required: false 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'

View File

@ -1,11 +1,32 @@
const fs = require('fs') const fs = require('fs')
const conventionalChangelog = require('conventional-changelog') 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({ const changelogStream = conventionalChangelog({
preset, preset,
releaseCount: parseInt(releaseCount, 10), 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, version: jsonPackage.version,

View File

@ -3,7 +3,7 @@ const conventionalRecommendedBump = require('conventional-recommended-bump')
const git = require('./helpers/git') const git = require('./helpers/git')
const packageJson = require('./helpers/packageJson') const packageJson = require('./helpers/packageJson')
const generateChangelog = require('./helpers/generateChangelog') const changelog = require('./helpers/generateChangelog')
async function run() { async function run() {
try { try {
@ -42,8 +42,15 @@ async function run() {
core.info(`New version: ${jsonPackage.version}`) core.info(`New version: ${jsonPackage.version}`)
// If output file === 'false' we don't write it to file
if (outputFile !== 'false') {
// Generate the changelog // Generate the changelog
await generateChangelog(tagPrefix, preset, jsonPackage, outputFile, releaseCount) 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') core.info('Push all changes')
@ -52,6 +59,11 @@ async function run() {
await git.commit(commitMessage.replace('{version}', `${tagPrefix}${jsonPackage.version}`)) await git.commit(commitMessage.replace('{version}', `${tagPrefix}${jsonPackage.version}`))
await git.createTag(`${tagPrefix}${jsonPackage.version}`) await git.createTag(`${tagPrefix}${jsonPackage.version}`)
await git.push() 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}`)
} }
}) })