Skip to content

Commit

Permalink
chore: apply changes tested on auto-beta-releases repository
Browse files Browse the repository at this point in the history
  • Loading branch information
danielbarion committed May 7, 2024
1 parent 102cc19 commit b47e870
Show file tree
Hide file tree
Showing 4 changed files with 81 additions and 16 deletions.
17 changes: 2 additions & 15 deletions .github/workflows/beta-release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -33,15 +33,8 @@ jobs:
- name: Get current package.json version
run: echo "PACKAGE_VERSION=$(npm pkg get version)" >> $GITHUB_ENV

- name: First beta release for this pull request
if: contains(env.PACKAGE_VERSION, 'beta') == false
run: echo "NEW_VERSION=$(npm version prerelease --no-git-tag-version --preid=beta.$GITHUB_PR_NUMBER)" >> $GITHUB_ENV
env:
GITHUB_PR_NUMBER: ${{ github.event.pull_request.number }}

- name: Subsequent beta releases for this pull request
if: contains(env.PACKAGE_VERSION, 'beta')
run: echo "NEW_VERSION=$(npm version prerelease --no-git-tag-version --preid=beta)" >> $GITHUB_ENV
- name: Setup Beta Release Version
run: node beta-release.js --issue $GITHUB_PR_NUMBER
env:
GITHUB_PR_NUMBER: ${{ github.event.pull_request.number }}

Expand All @@ -50,12 +43,6 @@ jobs:
env:
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}

- name: Save new release version
run: |
git add ./package.json
git commit -m "chore: bump version to $NEW_VERSION"
git push
- uses: actions/github-script@v6
with:
script: |
Expand Down
77 changes: 77 additions & 0 deletions beta-release.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
/* eslint-disable @typescript-eslint/no-var-requires */
const util = require('util')
const exec = util.promisify(require('child_process').exec)
const package = require('./package.json')

const args = require('minimist')(process.argv.slice(2))

const issueNumber = args['issue']

console.log(issueNumber)

const runCommand = async (command) => {
return new Promise((resolve) => {
exec(command, (error, stdout, stderr) => {
resolve({ error, stdout, stderr })
})
})
}

const AutoBetaRelease = async () => {
// get all the versions of the package from npm
const { stdout } = await runCommand(`npm view . versions --json`)

// show npm published versions of this package
console.log(stdout)

// check if there is a beta release with the same issue number on published versions
const arrayOfBetaReleases = JSON.parse(stdout).filter((version) =>
version.includes(`${package.version}-beta.${issueNumber}`),
)

let fullLastBetaRelease = null

// if yes, get the latest beta release. Output: 1.0.0-beta.1.rc.0
if (arrayOfBetaReleases.length) {
fullLastBetaRelease = arrayOfBetaReleases[arrayOfBetaReleases.length - 1]
}

console.log('Last Beta Release: ', fullLastBetaRelease)

let nextBetaReleaseVersion = 0

if (fullLastBetaRelease) {
const lastBetaReleaseRCVersionArray = fullLastBetaRelease.match(/rc.+[0-9]+/g)

const lastBetaReleaseRCVersion =
lastBetaReleaseRCVersionArray && lastBetaReleaseRCVersionArray.length
? lastBetaReleaseRCVersionArray[0]
: null

const lastBetaReleaseVersion = lastBetaReleaseRCVersion
? lastBetaReleaseRCVersion.split('.')[1]
: 0

nextBetaReleaseVersion = parseInt(lastBetaReleaseVersion, 10) + 1
}

// next beta release version. Output: 1.0.0-beta.1.rc.1
const nextBetaReleaseVesionFull = `${package.version}-beta.${issueNumber}.rc.${nextBetaReleaseVersion}`

// update the beta version on package.json
const { error } = await runCommand(
`npm version ${nextBetaReleaseVesionFull} --no-git-tag-version`,
)

if (error) {
console.error(error)
return
}

// the beta version is already updated on package.json on the next line
console.log('Next Beta version: ', `${nextBetaReleaseVesionFull}`)

await runCommand(`echo "NEW_VERSION=${nextBetaReleaseVesionFull}" >> $GITHUB_ENV`)
}

AutoBetaRelease()
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,7 @@
"jest-environment-jsdom": "29.4.3",
"jest-transform-css": "6.0.1",
"lint-staged": "13.1.2",
"minimist": "^1.2.8",
"postcss": "8.4.21",
"prettier": "2.8.4",
"process": "^0.11.10",
Expand Down
2 changes: 1 addition & 1 deletion yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -5696,7 +5696,7 @@ minimist-options@4.1.0:
is-plain-obj "^1.1.0"
kind-of "^6.0.3"

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

0 comments on commit b47e870

Please sign in to comment.