diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..7d9589a --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,52 @@ +name: Release + +on: + workflow_dispatch: + inputs: + releaseType: + description: "Release type - major, minor or patch" + required: true + default: "" + preReleaseFlavor: + description: "Pre-Release flavor - rc, alpha, beta etc." + required: false + default: "" + +jobs: + release: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + ref: ${{ github.ref }} + fetch-depth: 0 + + - name: Setup Node + uses: actions/setup-node@v4 + with: + node-version-file: ".nvmrc" + cache: "npm" + + - name: Install Dependencies + run: npm ci + + - name: Setup Git + run: | + git config --global user.name "devx-sauce-bot" + git config --global user.email "devx.bot@saucelabs.com" + + - name: Login to NPM + run: npm set "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" + + - name: Release + if: ${{ github.event.inputs.releaseType != '' }} + run: | + if [ -n "${{ github.event.inputs.preReleaseFlavor }}" ];then + PRE_RELEASE_ARGS="--preRelease=${{ github.event.inputs.preReleaseFlavor }} --github.preRelease" + fi + + npm run release:ci -- ${{ github.event.inputs.releaseType }} ${PRE_RELEASE_ARGS} + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/package.json b/package.json index ba6697d..04ae30c 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,12 @@ "fmt": "prettier --write '**/*.{js,ts,mjs,cjs}'", "prepare": "husky", "build": "gulp build", - "test": "gulp test" + "test": "gulp test", + "release": "release-it --github.release", + "release:ci": "npm run release -- --ci --no-git.requireCleanWorkingDir", + "release:patch": "npm run release -- patch", + "release:minor": "npm run release -- minor", + "release:major": "npm run release -- major" }, "keywords": [ "testcafe",