Skip to content

Commit b47e870

Browse files
committed
chore: apply changes tested on auto-beta-releases repository
1 parent 102cc19 commit b47e870

File tree

4 files changed

+81
-16
lines changed

4 files changed

+81
-16
lines changed

.github/workflows/beta-release.yaml

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -33,15 +33,8 @@ jobs:
3333
- name: Get current package.json version
3434
run: echo "PACKAGE_VERSION=$(npm pkg get version)" >> $GITHUB_ENV
3535

36-
- name: First beta release for this pull request
37-
if: contains(env.PACKAGE_VERSION, 'beta') == false
38-
run: echo "NEW_VERSION=$(npm version prerelease --no-git-tag-version --preid=beta.$GITHUB_PR_NUMBER)" >> $GITHUB_ENV
39-
env:
40-
GITHUB_PR_NUMBER: ${{ github.event.pull_request.number }}
41-
42-
- name: Subsequent beta releases for this pull request
43-
if: contains(env.PACKAGE_VERSION, 'beta')
44-
run: echo "NEW_VERSION=$(npm version prerelease --no-git-tag-version --preid=beta)" >> $GITHUB_ENV
36+
- name: Setup Beta Release Version
37+
run: node beta-release.js --issue $GITHUB_PR_NUMBER
4538
env:
4639
GITHUB_PR_NUMBER: ${{ github.event.pull_request.number }}
4740

@@ -50,12 +43,6 @@ jobs:
5043
env:
5144
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
5245

53-
- name: Save new release version
54-
run: |
55-
git add ./package.json
56-
git commit -m "chore: bump version to $NEW_VERSION"
57-
git push
58-
5946
- uses: actions/github-script@v6
6047
with:
6148
script: |

beta-release.js

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
/* eslint-disable @typescript-eslint/no-var-requires */
2+
const util = require('util')
3+
const exec = util.promisify(require('child_process').exec)
4+
const package = require('./package.json')
5+
6+
const args = require('minimist')(process.argv.slice(2))
7+
8+
const issueNumber = args['issue']
9+
10+
console.log(issueNumber)
11+
12+
const runCommand = async (command) => {
13+
return new Promise((resolve) => {
14+
exec(command, (error, stdout, stderr) => {
15+
resolve({ error, stdout, stderr })
16+
})
17+
})
18+
}
19+
20+
const AutoBetaRelease = async () => {
21+
// get all the versions of the package from npm
22+
const { stdout } = await runCommand(`npm view . versions --json`)
23+
24+
// show npm published versions of this package
25+
console.log(stdout)
26+
27+
// check if there is a beta release with the same issue number on published versions
28+
const arrayOfBetaReleases = JSON.parse(stdout).filter((version) =>
29+
version.includes(`${package.version}-beta.${issueNumber}`),
30+
)
31+
32+
let fullLastBetaRelease = null
33+
34+
// if yes, get the latest beta release. Output: 1.0.0-beta.1.rc.0
35+
if (arrayOfBetaReleases.length) {
36+
fullLastBetaRelease = arrayOfBetaReleases[arrayOfBetaReleases.length - 1]
37+
}
38+
39+
console.log('Last Beta Release: ', fullLastBetaRelease)
40+
41+
let nextBetaReleaseVersion = 0
42+
43+
if (fullLastBetaRelease) {
44+
const lastBetaReleaseRCVersionArray = fullLastBetaRelease.match(/rc.+[0-9]+/g)
45+
46+
const lastBetaReleaseRCVersion =
47+
lastBetaReleaseRCVersionArray && lastBetaReleaseRCVersionArray.length
48+
? lastBetaReleaseRCVersionArray[0]
49+
: null
50+
51+
const lastBetaReleaseVersion = lastBetaReleaseRCVersion
52+
? lastBetaReleaseRCVersion.split('.')[1]
53+
: 0
54+
55+
nextBetaReleaseVersion = parseInt(lastBetaReleaseVersion, 10) + 1
56+
}
57+
58+
// next beta release version. Output: 1.0.0-beta.1.rc.1
59+
const nextBetaReleaseVesionFull = `${package.version}-beta.${issueNumber}.rc.${nextBetaReleaseVersion}`
60+
61+
// update the beta version on package.json
62+
const { error } = await runCommand(
63+
`npm version ${nextBetaReleaseVesionFull} --no-git-tag-version`,
64+
)
65+
66+
if (error) {
67+
console.error(error)
68+
return
69+
}
70+
71+
// the beta version is already updated on package.json on the next line
72+
console.log('Next Beta version: ', `${nextBetaReleaseVesionFull}`)
73+
74+
await runCommand(`echo "NEW_VERSION=${nextBetaReleaseVesionFull}" >> $GITHUB_ENV`)
75+
}
76+
77+
AutoBetaRelease()

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@
8181
"jest-environment-jsdom": "29.4.3",
8282
"jest-transform-css": "6.0.1",
8383
"lint-staged": "13.1.2",
84+
"minimist": "^1.2.8",
8485
"postcss": "8.4.21",
8586
"prettier": "2.8.4",
8687
"process": "^0.11.10",

yarn.lock

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5696,7 +5696,7 @@ [email protected]:
56965696
is-plain-obj "^1.1.0"
56975697
kind-of "^6.0.3"
56985698

5699-
minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5, minimist@^1.2.6:
5699+
minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5, minimist@^1.2.6, minimist@^1.2.8:
57005700
version "1.2.8"
57015701
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c"
57025702
integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==

0 commit comments

Comments
 (0)