From 5f5ddf275bd4f7e5407b1627525855a9d42e316a Mon Sep 17 00:00:00 2001 From: Arda TANRIKULU Date: Thu, 24 Jun 2021 15:55:38 +0300 Subject: [PATCH] Able to release with custom tags --- .github/workflows/canary.yml | 15 ++++-- .vscode/settings.json | 2 +- package.json | 2 +- ...hema.test..ts => delegateToSchema.test.ts} | 0 scripts/canary-release.js | 49 ++++++++++++------- 5 files changed, 46 insertions(+), 22 deletions(-) rename packages/delegate/tests/{delegateToSchema.test..ts => delegateToSchema.test.ts} (100%) diff --git a/.github/workflows/canary.yml b/.github/workflows/canary.yml index 45c8b7014bb..058d1b6564c 100644 --- a/.github/workflows/canary.yml +++ b/.github/workflows/canary.yml @@ -6,15 +6,22 @@ on: - master workflow_dispatch: inputs: - confirm: + onDemand: description: 'Are you sure?' required: true default: 'yes' + npmTag: + description: 'NPM Tag' + required: true + default: 'alpha' + npmVersionSuffix: + description: 'Custom NPM Version Suffix' + required: false jobs: publish-canary: name: Publish Canary runs-on: ubuntu-latest - if: github.event.pull_request.head.repo.full_name == github.repository || github.event.inputs.confirm == 'yes' + if: github.event.pull_request.head.repo.full_name == github.repository || github.event.inputs.onDemand == 'yes' steps: - name: Checkout Master uses: actions/checkout@v2 @@ -50,7 +57,9 @@ jobs: npm-script: 'yarn release:canary' changesets: true env: - ON_DEMAND: ${{github.event.inputs.confirm}} + ON_DEMAND: ${{github.event.inputs.onDemand}} + NPM_TAG: ${{github.event.inputs.npmTag || 'alpha'}} + NPM_VERSION_SUFFIX: ${{github.event.inputs.npmVersionSuffix}} - name: Publish a message if: steps.canary.outputs.released uses: 'kamilkisiela/pr-comment@master' diff --git a/.vscode/settings.json b/.vscode/settings.json index c1a50609bf2..f3f1f765ec0 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -12,7 +12,7 @@ "files.exclude": { "**/.git": true, "**/.DS_Store": true, - "node_modules": true, + "node_modules": false, "test-lib": true, "lib": true, "coverage": true, diff --git a/package.json b/package.json index be808c61dfd..70946bd3dfc 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ "prerelease": "yarn build", "prerelease-canary": "yarn build", "release": "changeset publish", - "release:canary": "(node scripts/canary-release.js && yarn build && yarn changeset publish --tag alpha) || echo Skipping Canary..." + "release:canary": "(node scripts/canary-release.js && yarn build && yarn changeset publish --tag $NPM_TAG) || echo Skipping Canary..." }, "repository": { "type": "git", diff --git a/packages/delegate/tests/delegateToSchema.test..ts b/packages/delegate/tests/delegateToSchema.test.ts similarity index 100% rename from packages/delegate/tests/delegateToSchema.test..ts rename to packages/delegate/tests/delegateToSchema.test.ts diff --git a/scripts/canary-release.js b/scripts/canary-release.js index 62e2cf32439..5a8ce567124 100644 --- a/scripts/canary-release.js +++ b/scripts/canary-release.js @@ -3,21 +3,31 @@ const semver = require('semver'); const cp = require('child_process'); const { basename } = require('path'); -const { read: readConfig } = require("@changesets/config"); -const readChangesets = require("@changesets/read").default; -const assembleReleasePlan = require("@changesets/assemble-release-plan").default; -const applyReleasePlan = require("@changesets/apply-release-plan").default; -const { getPackages } = require("@manypkg/get-packages"); +const { read: readConfig } = require('@changesets/config'); +const readChangesets = require('@changesets/read').default; +const assembleReleasePlan = require('@changesets/assemble-release-plan').default; +const applyReleasePlan = require('@changesets/apply-release-plan').default; +const { getPackages } = require('@manypkg/get-packages'); function getNewVersion(version, type) { - const gitHash = cp.spawnSync('git', ['rev-parse', '--short', 'HEAD']).stdout.toString().trim(); - - return semver.inc(version, `pre${type}`, true, 'alpha-' + gitHash); + let npmVersionSuffix = process.env.NPM_VERSION_SUFFIX; + if (!npmVersionSuffix) { + const gitHash = cp.spawnSync('git', ['rev-parse', '--short', 'HEAD']).stdout.toString().trim(); + npmVersionSuffix = `alpha-${gitHash}`; + } + return semver.inc(version, `pre${type}`, true, npmVersionSuffix); } function getRelevantChangesets(baseBranch) { - const comparePoint = cp.spawnSync('git', ['merge-base', `origin/${baseBranch}`, 'HEAD']).stdout.toString().trim(); - const listModifiedFiles = cp.spawnSync('git', ['diff', '--name-only', comparePoint]).stdout.toString().trim().split('\n'); + const comparePoint = cp + .spawnSync('git', ['merge-base', `origin/${baseBranch}`, 'HEAD']) + .stdout.toString() + .trim(); + const listModifiedFiles = cp + .spawnSync('git', ['diff', '--name-only', comparePoint]) + .stdout.toString() + .trim() + .split('\n'); return listModifiedFiles.filter(f => f.startsWith('.changeset')).map(f => basename(f, '.md')); } @@ -28,7 +38,10 @@ async function updateVersions() { const config = await readConfig(cwd, packages); const modifiedChangesets = getRelevantChangesets(config.baseBranch); const allChangesets = await readChangesets(cwd); - const changesets = process.env.ON_DEMAND ? allChangesets : allChangesets.filter(change => modifiedChangesets.includes(change.id)); + const changesets = + process.env.ON_DEMAND === 'yes' + ? allChangesets + : allChangesets.filter(change => modifiedChangesets.includes(change.id)); if (changesets.length === 0) { console.warn(`Unable to find any relevant package for canary publishing. Please make sure changesets exists!`); @@ -60,9 +73,11 @@ async function updateVersions() { } } -updateVersions().then(() => { - console.info(`Done!`) -}).catch(err => { - console.error(err); - process.exit(1); -}); +updateVersions() + .then(() => { + console.info(`Done!`); + }) + .catch(err => { + console.error(err); + process.exit(1); + });