]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
refactor: remove canary release workflows edison/chore/dropCanaryRelease 13794/head
authordaiwei <daiwei521@126.com>
Fri, 22 Aug 2025 02:40:26 +0000 (10:40 +0800)
committerdaiwei <daiwei521@126.com>
Fri, 22 Aug 2025 02:40:26 +0000 (10:40 +0800)
now using continuous release with pkg.pr.new

.github/workflows/canary-minor.yml [deleted file]
.github/workflows/canary.yml [deleted file]
rollup.config.js
scripts/release.js

diff --git a/.github/workflows/canary-minor.yml b/.github/workflows/canary-minor.yml
deleted file mode 100644 (file)
index 8145aa4..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-name: canary minor release
-on:
-  # Runs every Monday at 1 AM UTC (9:00 AM in Singapore)
-  schedule:
-    - cron: 0 1 * * MON
-  workflow_dispatch:
-
-jobs:
-  canary:
-    # prevents this action from running on forks
-    if: github.repository == 'vuejs/core'
-    runs-on: ubuntu-latest
-    environment: Release
-    steps:
-      - uses: actions/checkout@v5
-        with:
-          ref: minor
-
-      - name: Install pnpm
-        uses: pnpm/action-setup@v4.1.0
-
-      - name: Install Node.js
-        uses: actions/setup-node@v4
-        with:
-          node-version-file: '.node-version'
-          registry-url: 'https://registry.npmjs.org'
-          cache: 'pnpm'
-
-      - run: pnpm install
-
-      - run: pnpm release --canary --publish --tag minor
-        env:
-          NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
diff --git a/.github/workflows/canary.yml b/.github/workflows/canary.yml
deleted file mode 100644 (file)
index 19e3869..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-name: canary release
-on:
-  # Runs every Monday at 1 AM UTC (9:00 AM in Singapore)
-  schedule:
-    - cron: 0 1 * * MON
-  workflow_dispatch:
-
-jobs:
-  canary:
-    # prevents this action from running on forks
-    if: github.repository == 'vuejs/core'
-    runs-on: ubuntu-latest
-    environment: Release
-    steps:
-      - uses: actions/checkout@v5
-
-      - name: Install pnpm
-        uses: pnpm/action-setup@v4.1.0
-
-      - name: Install Node.js
-        uses: actions/setup-node@v4
-        with:
-          node-version-file: '.node-version'
-          registry-url: 'https://registry.npmjs.org'
-          cache: 'pnpm'
-
-      - run: pnpm install
-
-      - run: pnpm release --canary --publish
-        env:
-          NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
index da7de554b64d4e780c086359b3ffcb1081ed3c46..8f1f85b936339667e2305b126c6236ea05ff1f1e 100644 (file)
@@ -135,8 +135,7 @@ function createConfig(format, output, plugins = []) {
   const isServerRenderer = name === 'server-renderer'
   const isCJSBuild = format === 'cjs'
   const isGlobalBuild = /global/.test(format)
-  const isCompatPackage =
-    pkg.name === '@vue/compat' || pkg.name === '@vue/compat-canary'
+  const isCompatPackage = pkg.name === '@vue/compat'
   const isCompatBuild = !!packageOptions.compat
   const isBrowserBuild =
     (isGlobalBuild || isBrowserESMBuild || isBundlerESMBuild) &&
@@ -288,10 +287,7 @@ function createConfig(format, output, plugins = []) {
     // requires a ton of template engines which should be ignored.
     /** @type {ReadonlyArray<string>} */
     let cjsIgnores = []
-    if (
-      pkg.name === '@vue/compiler-sfc' ||
-      pkg.name === '@vue/compiler-sfc-canary'
-    ) {
+    if (pkg.name === '@vue/compiler-sfc') {
       cjsIgnores = [
         ...Object.keys(consolidatePkg.devDependencies),
         'vm',
index cd287dfc12b15bb8e97a9f06c68ae2e8fafc7849..ec166c03d326946187e909c4fcbc3b1280ffaae5 100644 (file)
@@ -36,9 +36,6 @@ const { values: args, positionals } = parseArgs({
     tag: {
       type: 'string',
     },
-    canary: {
-      type: 'boolean',
-    },
     skipBuild: {
       type: 'boolean',
     },
@@ -69,9 +66,8 @@ const isDryRun = args.dry
 /** @type {boolean | undefined} */
 let skipTests = args.skipTests
 const skipBuild = args.skipBuild
-const isCanary = args.canary
-const skipPrompts = args.skipPrompts || args.canary
-const skipGit = args.skipGit || args.canary
+const skipPrompts = args.skipPrompts
+const skipGit = args.skipGit
 
 const packages = fs
   .readdirSync(path.resolve(__dirname, '../packages'))
@@ -98,18 +94,6 @@ const isCorePackage = (/** @type {string} */ pkgName) => {
   )
 }
 
-const renamePackageToCanary = (/** @type {string} */ pkgName) => {
-  if (pkgName === 'vue') {
-    return '@vue/canary'
-  }
-
-  if (isCorePackage(pkgName)) {
-    return `${pkgName}-canary`
-  }
-
-  return pkgName
-}
-
 const keepThePackageName = (/** @type {string} */ pkgName) => pkgName
 
 /** @type {string[]} */
@@ -151,57 +135,6 @@ async function main() {
 
   let targetVersion = positionals[0]
 
-  if (isCanary) {
-    // The canary version string format is `3.yyyyMMdd.0` (or `3.yyyyMMdd.0-minor.0` for minor)
-    // Use UTC date so that it's consistent across CI and maintainers' machines
-    const date = new Date()
-    const yyyy = date.getUTCFullYear()
-    const MM = (date.getUTCMonth() + 1).toString().padStart(2, '0')
-    const dd = date.getUTCDate().toString().padStart(2, '0')
-
-    const major = semver.major(currentVersion)
-    const datestamp = `${yyyy}${MM}${dd}`
-    let canaryVersion
-
-    canaryVersion = `${major}.${datestamp}.0`
-    if (args.tag && args.tag !== 'latest') {
-      canaryVersion = `${major}.${datestamp}.0-${args.tag}.0`
-    }
-
-    // check the registry to avoid version collision
-    // in case we need to publish more than one canary versions in a day
-    try {
-      const pkgName = renamePackageToCanary('vue')
-      const { stdout } = await run(
-        'pnpm',
-        ['view', `${pkgName}@~${canaryVersion}`, 'version', '--json'],
-        { stdio: 'pipe' },
-      )
-      let versions = JSON.parse(/** @type {string} */ (stdout))
-      versions = Array.isArray(versions) ? versions : [versions]
-      const latestSameDayPatch = /** @type {string} */ (
-        semver.maxSatisfying(versions, `~${canaryVersion}`)
-      )
-
-      canaryVersion = /** @type {string} */ (
-        semver.inc(latestSameDayPatch, 'patch')
-      )
-      if (args.tag && args.tag !== 'latest') {
-        canaryVersion = /** @type {string} */ (
-          semver.inc(latestSameDayPatch, 'prerelease', args.tag)
-        )
-      }
-    } catch (/** @type {any} */ e) {
-      if (/E404/.test(e.message)) {
-        // the first patch version on that day
-      } else {
-        throw e
-      }
-    }
-
-    targetVersion = canaryVersion
-  }
-
   if (!targetVersion) {
     // no explicit version, offer suggestions
     /** @type {{ release: string }} */
@@ -239,11 +172,7 @@ async function main() {
   }
 
   if (skipPrompts) {
-    step(
-      isCanary
-        ? `Releasing canary version v${targetVersion}...`
-        : `Releasing v${targetVersion}...`,
-    )
+    step(`Releasing v${targetVersion}...`)
   } else {
     /** @type {{ yes: boolean }} */
     const { yes: confirmRelease } = await prompt({
@@ -261,10 +190,7 @@ async function main() {
 
   // update all package versions and inter-dependencies
   step('\nUpdating cross dependencies...')
-  updateVersions(
-    targetVersion,
-    isCanary ? renamePackageToCanary : keepThePackageName,
-  )
+  updateVersions(targetVersion, keepThePackageName)
   versionUpdated = true
 
   // generate changelog
@@ -285,11 +211,8 @@ async function main() {
   }
 
   // update pnpm-lock.yaml
-  // skipped during canary release because the package names changed and installing with `workspace:*` would fail
-  if (!isCanary) {
-    step('\nUpdating lockfile...')
-    await run(`pnpm`, ['install', '--prefer-offline'])
-  }
+  step('\nUpdating lockfile...')
+  await run(`pnpm`, ['install', '--prefer-offline'])
 
   if (!skipGit) {
     const { stdout } = await run('git', ['diff'], { stdio: 'pipe' })
@@ -457,34 +380,9 @@ function updatePackage(pkgRoot, version, getNewPackageName) {
   const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8'))
   pkg.name = getNewPackageName(pkg.name)
   pkg.version = version
-  if (isCanary) {
-    updateDeps(pkg, 'dependencies', version, getNewPackageName)
-    updateDeps(pkg, 'peerDependencies', version, getNewPackageName)
-  }
   fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + '\n')
 }
 
-/**
- * @param {Package} pkg
- * @param {'dependencies' | 'peerDependencies'} depType
- * @param {string} version
- * @param {(pkgName: string) => string} getNewPackageName
- */
-function updateDeps(pkg, depType, version, getNewPackageName) {
-  const deps = pkg[depType]
-  if (!deps) return
-  Object.keys(deps).forEach(dep => {
-    if (isCorePackage(dep)) {
-      const newName = getNewPackageName(dep)
-      const newVersion = newName === dep ? version : `npm:${newName}@${version}`
-      console.log(
-        pico.yellow(`${pkg.name} -> ${depType} -> ${dep}@${newVersion}`),
-      )
-      deps[dep] = newVersion
-    }
-  })
-}
-
 async function buildPackages() {
   step('\nBuilding all packages...')
   if (!skipBuild) {
@@ -509,9 +407,8 @@ async function publishPackages(version) {
     additionalPublishFlags.push('--no-git-checks')
   }
   // add provenance metadata when releasing from CI
-  // canary release commits are not pushed therefore we don't need to add provenance
-  // also skip provenance if not publishing to actual npm
-  if (process.env.CI && !isCanary && !args.registry) {
+  // skip provenance if not publishing to actual npm
+  if (process.env.CI && !args.registry) {
     additionalPublishFlags.push('--provenance')
   }