From db872a04c63198fffa0273c44d84f7e9b64fc5c0 Mon Sep 17 00:00:00 2001 From: Guillaume Cornut Date: Tue, 13 Aug 2024 10:09:14 +0200 Subject: [PATCH] chore(release): add step to deprecate older prerelease version --- .github/workflows/release.yml | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 534ed9741..64d2a1684 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -89,7 +89,8 @@ jobs: console.log(`NPM dist tag: ${distTag}`); // Get base version (version from which to increment) - let baseVersion = await getVersion(distTag) + const distTagBaseVersion = await getVersion(distTag); + let baseVersion = distTagBaseVersion; // Prerelease should start with latest NPM version + patch (ex: 'v1.0.0' => 'v1.0.1-alpha.0') if (releaseType === 'prerelease' && (!baseVersion || !baseVersion.startsWith(semver.inc(npmLatestVersion, 'patch')))) { baseVersion = npmLatestVersion; @@ -113,7 +114,7 @@ jobs: // Update version in changelog (need to run in a package which has a version, so not the root package) await run(`yarn workspace @lumx/core update-version-changelog`); - return { nextVersion, distTag, branch, releaseType, refName }; + return { nextVersion, distTag, branch, releaseType, refName, distTagBaseVersion }; - name: "Build libs" run: yarn build:libs @@ -152,6 +153,19 @@ jobs: #git tag "$tag" #git push origin "$tag" + - name: "Deprecate older prerelease version" + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} + DIST_TAG_BASE_VERSION: ${{ fromJSON(steps.version.outputs.result).distTagBaseVersion }} + if: ${{ fromJSON(steps.version.outputs.result).releaseType == 'prerelease' && env.DIST_TAG_BASE_VERSION }} + run: | + packages=$(npm pkg get name -ws | egrep -o '@lumx/\w+' | uniq) + for package in $packages; + do + echo "Deprecate ${package}@${DIST_TAG_BASE_VERSION}"; + npm deprecate ${package}@${DIST_TAG_BASE_VERSION} deprecated; + done + outputs: releaseType: ${{ fromJSON(steps.version.outputs.result).releaseType }} baseRef: ${{ fromJSON(steps.version.outputs.result).refName }}