From 48dd34337019f12b85acbe726550c079f313cfb4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikko=20Haapam=C3=A4ki?= Date: Tue, 31 Jan 2023 09:45:00 +0200 Subject: [PATCH] =?UTF-8?q?fix:=20korjaa=20seuraavan=20versionumeron=20p?= =?UTF-8?q?=C3=A4=C3=A4ttely=20patchaamalla=20semantic-release=20(#571)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- deployment/bin/patchSemanticRelease.sh | 6 +++ deployment/patch/get-last-release.js_patch | 47 ++++++++++++++++++++++ package.json | 4 +- 3 files changed, 55 insertions(+), 2 deletions(-) create mode 100755 deployment/bin/patchSemanticRelease.sh create mode 100644 deployment/patch/get-last-release.js_patch diff --git a/deployment/bin/patchSemanticRelease.sh b/deployment/bin/patchSemanticRelease.sh new file mode 100755 index 000000000..7b60ee14f --- /dev/null +++ b/deployment/bin/patchSemanticRelease.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash +# Kopioi korjaus bugiin, jonka takia useammat alpha-channelit menevät sekaisin uutta versiota päätellessä. +# Korjaus on PR:ssä https://github.com/semantic-release/semantic-release/pull/2416. +# Koska korjausta ei ole valmiiksi saatavilla, tämä skripti patchaa semantic-releasen. + +cp ./deployment/patch/get-last-release.js_patch ./deployment/node_modules/semantic-release/lib/get-last-release.js diff --git a/deployment/patch/get-last-release.js_patch b/deployment/patch/get-last-release.js_patch new file mode 100644 index 000000000..7f54a46ab --- /dev/null +++ b/deployment/patch/get-last-release.js_patch @@ -0,0 +1,47 @@ +const {isUndefined} = require('lodash'); +const semver = require('semver'); +const {makeTag, isSameChannel} = require('./utils'); + +/** + * Last release. + * + * @typedef {Object} LastRelease + * @property {string} version The version number of the last release. + * @property {string} gitHead The Git reference used to make the last release. + * @property {string} gitTag The git tag associated with the last release. + * @property {string} channel The channel on which of the last release was published. + * @property {string} name The name of the last release. + */ + +/** + * Determine the Git tag and version of the last tagged release. + * + * - Filter out the branch tags that are not valid semantic version + * - Sort the versions + * - Retrive the highest version + * + * @param {Object} context semantic-release context. + * @param {Object} params Function parameters. + * @param {Object} params.before Find only releases with version number lower than this version. + * + * @return {LastRelease} The last tagged release or empty object if none is found. + */ +module.exports = ({branch, options: {tagFormat}}, {before} = {}) => { + const [{version, gitTag, channels} = {}] = branch.tags + .filter( + (tag) => + ((branch.type === 'prerelease' && tag.channels.some((channel) => isSameChannel(branch.channel, channel)) && + semver + .parse(tag.version) + .prerelease.includes(branch.prerelease === true ? branch.name : branch.prerelease)) || + !semver.prerelease(tag.version)) && + (isUndefined(before) || semver.lt(tag.version, before)) + ) + .sort((a, b) => semver.rcompare(a.version, b.version)); + + if (gitTag) { + return {version, gitTag, channels, gitHead: gitTag, name: makeTag(tagFormat, version)}; + } + + return {}; +}; diff --git a/package.json b/package.json index 820010e7b..6399ae4ad 100644 --- a/package.json +++ b/package.json @@ -209,8 +209,8 @@ "presynth": "rimraf build cdk.out .next", "synth": "./deployment/node_modules/.bin/cdk $NODE_DEBUG_OPTION --app \"ts-node --project=tsconfig.cdk.json ./deployment/bin/hassu\" synth", "destroy": "./deployment/node_modules/.bin/cdk --app \"ts-node --project=tsconfig.cdk.json ./deployment/bin/hassu\" destroy \"*\" --require-approval never", - "get-next-version": "./deployment/node_modules/.bin/semantic-release --no-ci --dryRun", - "release": "cross-env HUSKY=0 ./deployment/node_modules/.bin/semantic-release --no-ci", + "get-next-version": "./deployment/bin/patchSemanticRelease.sh && ./deployment/node_modules/.bin/semantic-release --no-ci --dryRun", + "release": "./deployment/bin/patchSemanticRelease.sh && cross-env HUSKY=0 ./deployment/node_modules/.bin/semantic-release --no-ci", "createVelhoProjekti": "ts-node --project=backend/tsconfig.json -r dotenv/config ./backend/bin/createVelhoProjekti dotenv_config_path=.env.test", "deleteVelhoProjekti": "ts-node --project=backend/tsconfig.json -r dotenv/config ./backend/bin/deleteVelhoProjekti dotenv_config_path=.env.test", "e2e:test:run": "cypress run -b chrome",