ci: Update release process to support major releases (no-changelog) (#6552)

This commit is contained in:
कारतोफ्फेलस्क्रिप्ट™ 2023-06-27 16:15:29 +02:00 committed by GitHub
parent f89ef83c76
commit 5b5f30fd33
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 26 additions and 23 deletions

View file

@ -7,10 +7,13 @@ import { dirname } from 'path';
import { fileURLToPath } from 'url';
import stream from 'stream';
import { promisify } from 'util';
import packageJson from '../../package.json' assert { type: 'json' };
const pipeline = promisify(stream.pipeline);
const changelogFile = resolve(dirname(fileURLToPath(import.meta.url)), '../../CHANGELOG.md');
const baseDir = resolve(dirname(fileURLToPath(import.meta.url)), '../..');
const fullChangelogFile = resolve(baseDir, 'CHANGELOG.md');
const versionChangelogFile = resolve(baseDir, `CHANGELOG-${packageJson.version}.md`);
const changelogStream = conventionalChangelog({
preset: 'angular',
@ -24,13 +27,16 @@ const changelogStream = conventionalChangelog({
process.exit(1);
});
// We need to duplicate the stream here to pipe the changelog into two separate files
const stream1 = new stream.PassThrough();
const stream2 = new stream.PassThrough();
changelogStream.pipe(stream1);
changelogStream.pipe(stream2);
await pipeline(stream1, createWriteStream(versionChangelogFile));
// Since we can't read and write from the same file at the same time,
// we use a temporary file to output the updated changelog to.
const tmpFile = createTempFile();
await pipeline(
changelogStream,
addStream(createReadStream(changelogFile)),
createWriteStream(tmpFile),
);
await pipeline(createReadStream(tmpFile), createWriteStream(changelogFile));
await pipeline(stream2, addStream(createReadStream(fullChangelogFile)), createWriteStream(tmpFile)),
await pipeline(createReadStream(tmpFile), createWriteStream(fullChangelogFile));

View file

@ -35,37 +35,33 @@ jobs:
fetch-depth: 0
ref: ${{ github.event.inputs.base-branch }}
- name: Push the base branch
run: |
git checkout -b "release/${{ github.event.inputs.release-type }}"
git push -f origin "release/${{ github.event.inputs.release-type }}"
- uses: pnpm/action-setup@v2.2.4
- uses: actions/setup-node@v3
with:
node-version: 18.x
- run: npm install --prefix=.github/scripts --no-package-lock
- name: Bump package versions
run: |
echo "NEXT_RELEASE=$(node .github/scripts/bump-versions.mjs)" >> $GITHUB_ENV
pnpm i --lockfile-only
env:
RELEASE_TYPE: ${{ github.event.inputs.release-type }}
- name: Update Changelog
run: node .github/scripts/update-changelog.mjs
- name: Push the base branch
run: |
git push -f origin refs/remotes/origin/${{ github.event.inputs.base-branch }}:refs/heads/release/${{ env.NEXT_RELEASE }}
- name: Push the release branch, and Create the PR
uses: peter-evans/create-pull-request@v4
uses: peter-evans/create-pull-request@v5
with:
base: 'release/${{ github.event.inputs.release-type }}'
branch: 'release/${{ env.NEXT_RELEASE }}'
base: 'release/${{ env.NEXT_RELEASE }}'
branch: '${{ env.NEXT_RELEASE }}-pr'
commit-message: ':rocket: Release ${{ env.NEXT_RELEASE }}'
delete-branch: true
labels: 'release'
title: ':rocket: Release ${{ env.NEXT_RELEASE }}'
# 'TODO: add generated changelog to the body. create a script to generate custom changelog'
body: ''
# TODO: post PR link to slack
body-path: 'CHANGELOG-${{ env.NEXT_RELEASE }}.md'

View file

@ -5,8 +5,7 @@ on:
types:
- closed
branches:
- 'release/patch'
- 'release/minor'
- 'release/*'
jobs:
publish-release:
@ -50,6 +49,7 @@ jobs:
tag: 'n8n@${{env.RELEASE}}'
prerelease: true
makeLatest: false
body: ${{github.event.pull_request.body}}
- name: Trigger a release note
continue-on-error: true

1
.gitignore vendored
View file

@ -20,3 +20,4 @@ packages/**/.turbo
cypress/videos/*
cypress/screenshots/*
*.swp
CHANGELOG-*.md