Skip to content

chore: setup PR-driven release pipeline#10550

Merged
sheremet-va merged 55 commits into
vitest-dev:mainfrom
hi-ogawa:poc/pr-driven-release-pipeline
Jun 12, 2026
Merged

chore: setup PR-driven release pipeline#10550
sheremet-va merged 55 commits into
vitest-dev:mainfrom
hi-ogawa:poc/pr-driven-release-pipeline

Conversation

@hi-ogawa

@hi-ogawa hi-ogawa commented Jun 9, 2026

Copy link
Copy Markdown
Collaborator

Description

This PR implements the basic idea of #10551. The maintainer guide of the release process is added to CONTRIBUTING.md.

The test flight is done in my fork repo. See

There are some aspects that could be improved later but not included here:

  • Setup Github App to auto create PR during "prepare publish" workflow dispatch.
    • Currently "prepare publish" job only outputs the compare URL for human to create PR manually. This is because even though auto creating PR from in-repo GITHUB_TOKEN won't trigger the actions on the created PR due to Github's chaining action prevention.
  • Automatically derive npm dist-tags for backport release case in publish-ci.ts script.
    • publish-ci.ts currently publishes backport release of npm package as release dist tags. To prevent this, we would need manual fix up for each backport branch like v3 or we should implement automatic way to derive dist-tags.
  • Rework changelog and github release generation. For example, changelog generation could be moved ahead to "prepare publish" time.

They are put into follow up issue #10560

Please don't delete this checklist! Before submitting the PR, please make sure you do the following:

  • It's really useful if your PR references an issue where it is discussed ahead of time. If the feature is substantial or introduces breaking changes without a discussion, PR might be closed.
  • Ideally, include a test that fails without this PR but passes with it.
  • Please, don't make changes to pnpm-lock.yaml unless you introduce a new test example.
  • Please check Allow edits by maintainers to make review process faster. Note that this option is not available for repositories that are owned by Github organizations.

Tests

  • Run the tests with pnpm test:ci.

Documentation

  • If you introduce new functionality, document it. You can run documentation with pnpm run docs command.

Changesets

  • Changes in changelog are generated from PR name. Please, make sure that it explains your changes in an understandable manner. Please, prefix changeset messages with feat:, fix:, perf:, docs:, or chore:.

Comment thread .github/workflows/prepare-publish.yml Fixed
Comment thread .github/workflows/prepare-publish.yml Fixed
@netlify

netlify Bot commented Jun 9, 2026

Copy link
Copy Markdown

Deploy Preview for vitest-dev ready!

Built without sensitive environment variables

Name Link
🔨 Latest commit 57848fd
🔍 Latest deploy log https://app.netlify.com/projects/vitest-dev/deploys/6a2bd0c14c6ceb0008d44876
😎 Deploy Preview https://deploy-preview-10550--vitest-dev.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
🤖 Make changes Run an agent on this branch

To edit notification comments on pull requests, go to your Netlify project configuration.

@hi-ogawa hi-ogawa changed the title chore: add PR-driven release pipeline chore: setup PR-driven release pipeline Jun 9, 2026
Comment thread .github/workflows/publish.yml Outdated
Comment thread .github/workflows/publish.yml Outdated
Comment thread .github/workflows/publish.yml Outdated
Comment thread .github/workflows/publish.yml Outdated
Comment thread .github/workflows/publish.yml

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 8 out of 9 changed files in this pull request and generated 4 comments.

Files not reviewed (1)
  • pnpm-lock.yaml: Generated file

Comment thread .github/workflows/publish.yml
Comment thread .github/workflows/publish.yml Outdated
Comment thread pnpm-lock.yaml
Comment thread scripts/publish-ci.ts
Co-authored-by: Copilot Autofix powered by AI <[email protected]>
Comment thread .github/workflows/publish.yml Outdated
Comment thread scripts/publish-ci.ts Outdated
Comment thread .github/workflows/publish.yml Outdated
Comment thread CONTRIBUTING.md
Comment thread package.json
@hi-ogawa
hi-ogawa requested a review from sheremet-va June 12, 2026 09:34
@sheremet-va

Copy link
Copy Markdown
Member

We would also need to backport this to v4 and v3, right? Because the release workflow needs to be identical

@hi-ogawa

Copy link
Copy Markdown
Collaborator Author

Did local dry run. So many warnings but looks good:

$ RELEASE_VERSION=5.0.0-beta.5 pnpm release
[WARN] The "$" version reference syntax in overrides is deprecated (used by: @types/node, rollup, vite). Define the version in a catalog and reference it with the "catalog:" protocol instead. See https://pnpm.io/catalogs
[WARN] The "$" version reference syntax in overrides is deprecated (used by: @types/node, rollup, vite). Define the version in a catalog and reference it with the "catalog:" protocol instead. See https://pnpm.io/catalogs
Scope: all 42 workspace projects
[WARN] There are cyclic workspace dependencies: /home/hiroshi/code/others/vitest-release-pipeline-poc/packages/browser, /home/hiroshi/code/others/vitest-release-pipeline-poc/packages/vitest, /home/hiroshi/code/others/vitest-release-pipeline-poc/packages/browser-playwright
✓ Lockfile passes supply-chain policies (verified 7m ago)
Lockfile is up to date, resolution step is skipped
Packages: +20
++++++++++++++++++++
Progress: resolved 20, reused 20, downloaded 0, added 20, done
Done in 1.3s using pnpm v11.6.0
$ tsx scripts/release.ts
Bumping versions in packages: package.json, packages/browser/package.json, packages/browser-playwright/package.json, packages/browser-webdriverio/package.json, packages/coverage-istanbul/package.json, packages/coverage-v8/package.json, packages/expect/package.json, packages/pretty-format/package.json, packages/snapshot/package.json, packages/browser-preview/package.json, packages/spy/package.json, packages/ui/package.json, packages/mocker/package.json, packages/utils/package.json, packages/web-worker/package.json, packages/vitest/package.json 
$  VITE_TEST_WATCHER_DEBUG=false PUBLISH_DRY_RUN=true PUBLISH_BRANCH=main pnpm publish-ci 5.0.0-beta.5
[WARN] The "$" version reference syntax in overrides is deprecated (used by: @types/node, rollup, vite). Define the version in a catalog and reference it with the "catalog:" protocol instead. See https://pnpm.io/catalogs
[WARN] The "$" version reference syntax in overrides is deprecated (used by: @types/node, rollup, vite). Define the version in a catalog and reference it with the "catalog:" protocol instead. See https://pnpm.io/catalogs
Scope: all 42 workspace projects
[WARN] There are cyclic workspace dependencies: /home/hiroshi/code/others/vitest-release-pipeline-poc/packages/browser, /home/hiroshi/code/others/vitest-release-pipeline-poc/packages/vitest, /home/hiroshi/code/others/vitest-release-pipeline-poc/packages/browser-playwright
✓ Lockfile passes supply-chain policies (verified 7m ago)
Lockfile is up to date, resolution step is skipped
Packages: +20
++++++++++++++++++++
Progress: resolved 20, reused 20, downloaded 0, added 20, done
Done in 1.2s using pnpm v11.6.0
$ tsx scripts/publish-ci.ts 5.0.0-beta.5
== DRY RUN ==
Staging version '5.0.0-beta.5' with tag 'beta'
[WARN] The "$" version reference syntax in overrides is deprecated (used by: @types/node, rollup, vite). Define the version in a catalog and reference it with the "catalog:" protocol instead. See https://pnpm.io/catalogs
📦 @vitest/[email protected] → https://registry.npmjs.org/
[WARN] Skip staging @vitest/[email protected] (dry run)
📦 @vitest/[email protected] → https://registry.npmjs.org/
[WARN] Skip staging @vitest/[email protected] (dry run)
📦 @vitest/[email protected] → https://registry.npmjs.org/
[WARN] Skip staging @vitest/[email protected] (dry run)
📦 @vitest/[email protected] → https://registry.npmjs.org/
[WARN] Skip staging @vitest/[email protected] (dry run)
📦 @vitest/[email protected] → https://registry.npmjs.org/
[WARN] 10 other warnings
📦 @vitest/[email protected] → https://registry.npmjs.org/
📦 @vitest/[email protected] → https://registry.npmjs.org/
📦 [email protected] → https://registry.npmjs.org/
📦 @vitest/[email protected] → https://registry.npmjs.org/
📦 @vitest/[email protected] → https://registry.npmjs.org/
📦 @vitest/[email protected] → https://registry.npmjs.org/
📦 @vitest/[email protected] → https://registry.npmjs.org/
📦 @vitest/[email protected] → https://registry.npmjs.org/
📦 @vitest/[email protected] → https://registry.npmjs.org/
📦 @vitest/[email protected] → https://registry.npmjs.org/
+ @vitest/[email protected] (would stage)
+ @vitest/[email protected] (would stage)
+ @vitest/[email protected] (would stage)
+ @vitest/[email protected] (would stage)
[WARN] 11 other warningseta.5 (would stage)
+ @vitest/[email protected] (would stage)
+ @vitest/[email protected] (would stage)
+ [email protected] (would stage)
+ @vitest/[email protected] (would stage)
+ @vitest/[email protected] (would stage)
+ @vitest/[email protected] (would stage)
+ @vitest/[email protected] (would stage)
+ @vitest/[email protected] (would stage)
+ @vitest/[email protected] (would stage)
+ @vitest/[email protected] (would stage)

@hi-ogawa

Copy link
Copy Markdown
Collaborator Author

We would also need to backport this to v4 and v3, right? Because the release workflow needs to be identical

Yes, I'll backport it. Slightly scary updating pnpm there but we'll see.

@sheremet-va
sheremet-va merged commit 3d421d4 into vitest-dev:main Jun 12, 2026
16 of 18 checks passed
@hi-ogawa
hi-ogawa deleted the poc/pr-driven-release-pipeline branch June 13, 2026 06:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Rework release pipeline to be PR-driven

4 participants