From 16b2a74ad08bd69f96d17d4c172dc77767968254 Mon Sep 17 00:00:00 2001 From: lauren Date: Thu, 17 Oct 2024 17:51:44 -0400 Subject: [PATCH 1/2] [compiler] Clean up publish script Few small tweaks to make it easier to run adhoc publishes --- .github/workflows/compiler_prereleases.yml | 2 +- compiler/scripts/release/publish.js | 60 ++++++++++++---------- 2 files changed, 34 insertions(+), 28 deletions(-) diff --git a/.github/workflows/compiler_prereleases.yml b/.github/workflows/compiler_prereleases.yml index c2b09dae05..40b49d36ee 100644 --- a/.github/workflows/compiler_prereleases.yml +++ b/.github/workflows/compiler_prereleases.yml @@ -49,4 +49,4 @@ jobs: - name: Publish packages to npm run: | cp ./scripts/release/ci-npmrc ~/.npmrc - scripts/release/publish.js --frfr --ci --tags ${{ inputs.dist_tag }} + scripts/release/publish.js --frfr --ci --tag ${{ inputs.dist_tag }} diff --git a/compiler/scripts/release/publish.js b/compiler/scripts/release/publish.js index ef3b75a80f..a7ad1a7254 100755 --- a/compiler/scripts/release/publish.js +++ b/compiler/scripts/release/publish.js @@ -59,12 +59,19 @@ async function main() { type: 'boolean', default: false, }) - .option('tags', { - description: 'Tags to publish to npm', - type: 'string', + .option('tag', { + description: 'Tag to publish to npm', + type: 'choices', + choices: ['experimental', 'beta'], default: 'experimental', }) + .option('version-name', { + description: 'Version name', + type: 'string', + default: '0.0.0', + }) .help('help') + .strict() .parseSync(); if (argv.debug === false) { @@ -82,7 +89,7 @@ async function main() { pkgNames = [argv.packages]; } const spinner = ora( - `Preparing to publish ${ + `Preparing to publish ${argv.versionName}@${argv.tag} ${ argv.forReal === true ? '(for real)' : '(dry run)' } [debug=${argv.debug}]` ).info(); @@ -118,14 +125,15 @@ async function main() { } ); const dateString = await getDateStringForCommit(commit); - const otp = argv.ci === false ? await promptForOTP() : null; + const otp = + argv.ci === false && argv.debug === false ? await promptForOTP() : null; const {hash} = await hashElement(path.resolve(__dirname, '../..'), { encoding: 'hex', folders: {exclude: ['node_modules']}, files: {exclude: ['.DS_Store']}, }); const truncatedHash = hash.slice(0, 7); - const newVersion = `0.0.0-experimental-${truncatedHash}-${dateString}`; + const newVersion = `${argv.versionName}-${argv.tag}-${truncatedHash}-${dateString}`; for (const pkgName of pkgNames) { const pkgDir = path.resolve(__dirname, `../../packages/${pkgName}`); @@ -179,29 +187,27 @@ async function main() { spinner.succeed(`Successfully published ${pkgName} to npm`); spinner.start('Pushing tags to npm'); - if (typeof argv.tags === 'string') { - for (const tag of argv.tags.split(',')) { - try { - let opts = ['dist-tag', 'add', `${pkgName}@${newVersion}`, tag]; - if (otp != null) { - opts.push(`--otp=${otp}`); - } - if (argv.debug === true) { - spinner.info(`dry-run: npm ${opts.join(' ')}`); - } else { - await spawnHelper('npm', opts, { - cwd: pkgDir, - stdio: 'inherit', - }); - } - } catch (e) { - spinner.fail(e.toString()); - throw e; + if (typeof argv.tag === 'string') { + try { + let opts = ['dist-tag', 'add', `${pkgName}@${newVersion}`, argv.tag]; + if (otp != null) { + opts.push(`--otp=${otp}`); } - spinner.succeed( - `Successfully pushed dist-tag ${tag} for ${pkgName} to npm` - ); + if (argv.debug === true) { + spinner.info(`dry-run: npm ${opts.join(' ')}`); + } else { + await spawnHelper('npm', opts, { + cwd: pkgDir, + stdio: 'inherit', + }); + } + } catch (e) { + spinner.fail(e.toString()); + throw e; } + spinner.succeed( + `Successfully pushed dist-tag ${argv.tag} for ${pkgName} to npm` + ); } } From 15af99b4ba2aae32e5761ba7e06dbe655b801e61 Mon Sep 17 00:00:00 2001 From: lauren Date: Thu, 17 Oct 2024 17:55:47 -0400 Subject: [PATCH 2/2] [ci] Allow passing various params to compiler publish script Allow passing in a few more inputs when manually publishing. --- .github/workflows/compiler_prereleases.yml | 5 ++++- .github/workflows/compiler_prereleases_manual.yml | 14 ++++++++++++-- .github/workflows/compiler_prereleases_nightly.yml | 1 + 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/.github/workflows/compiler_prereleases.yml b/.github/workflows/compiler_prereleases.yml index 40b49d36ee..4f4954dd95 100644 --- a/.github/workflows/compiler_prereleases.yml +++ b/.github/workflows/compiler_prereleases.yml @@ -13,6 +13,9 @@ on: dist_tag: required: true type: string + version_name: + required: true + type: string secrets: NPM_TOKEN: required: true @@ -49,4 +52,4 @@ jobs: - name: Publish packages to npm run: | cp ./scripts/release/ci-npmrc ~/.npmrc - scripts/release/publish.js --frfr --ci --tag ${{ inputs.dist_tag }} + scripts/release/publish.js --frfr --ci --versionName=${{ inputs.version_name }} --tag ${{ inputs.dist_tag }} diff --git a/.github/workflows/compiler_prereleases_manual.yml b/.github/workflows/compiler_prereleases_manual.yml index 87de411ddc..3e42ae2cf2 100644 --- a/.github/workflows/compiler_prereleases_manual.yml +++ b/.github/workflows/compiler_prereleases_manual.yml @@ -5,6 +5,15 @@ on: inputs: prerelease_commit_sha: required: false + release_channel: + required: true + type: string + dist_tag: + required: true + type: string + version_name: + required: true + type: string env: TZ: /usr/share/zoneinfo/America/Los_Angeles @@ -15,7 +24,8 @@ jobs: uses: facebook/react/.github/workflows/compiler_prereleases.yml@main with: commit_sha: ${{ inputs.prerelease_commit_sha || github.sha }} - release_channel: experimental - dist_tag: experimental + release_channel: ${{ inputs.release_channel }} + dist_tag: ${{ inputs.dist_tag }} + version_name: ${{ inputs.version_name }} secrets: NPM_TOKEN: ${{ secrets.NPM_TOKEN }} diff --git a/.github/workflows/compiler_prereleases_nightly.yml b/.github/workflows/compiler_prereleases_nightly.yml index 90aafac4f6..82f893aa5e 100644 --- a/.github/workflows/compiler_prereleases_nightly.yml +++ b/.github/workflows/compiler_prereleases_nightly.yml @@ -16,5 +16,6 @@ jobs: commit_sha: ${{ github.sha }} release_channel: experimental dist_tag: experimental + version_name: '0.0.0' secrets: NPM_TOKEN: ${{ secrets.NPM_TOKEN }}