发布过程
发布新版本
根据您推送的发布类型(主要、次要或补丁),步骤稍有不同
要发布新的修补程序版本(例如 从 0.28.1 到 0.28.2)
- 将所有需要的修改Cherry-pick到
-stable
分支(例如,0.28-stable
) - 确保切换到本地的
-stable
分支上 - 运行
npm version patch
递增版本号并创建 Git Commit和Tag - 运行
git push origin 0.xx-stable --follow-tags
(将0.xx-stable
换为正确的分支名称)
To release a new minor or major version (eg. from 0.28.x to 0.29.0)
- 确保当前 master 分支在 Circle, Travis 和 AppVeyor 上是绿色的。
- Ensure you are on
master
and your local copy of Yarn is up-to-date - 运行
./scripts/release-branch.sh
。这将:- Create the
0.xx-stable
branch and0.xx.0
tag - Bump
master
to the next minor version (eg. after releasing0.29.0
, master will be bumped to0.30.0
) - 将其全部推送到
origin
- Create the
标记一个 RC 版本为稳定版
Once an RC has been tested by the community for a while and all major bugs have been ironed out, it can be marked as stable. To do this, go to https://release.yarnpkg.com/ and click the “Promote RC to stable” button.
Note: There is a whitelist for the users that are able to access this page. If a maintainer is missing from the whitelist, you can modify it here.
调试发布版本
Sometimes things go wrong. Here’s how to debug some common issues:
I’ve committed the tag but the site still points to the old version
Check the GitHub release for any missing artifacts. The release scripts do not bump the version number on the site until both the Linux and the Windows artifacts have been attached to the release.
缺少 Linux 相关文件(.tar.gz
、.deb
等)
如果它已经失败,检查 CircleCI build 并重新运行它。 If the build succeeded, check the webhook logs for any errors.
Windows artifacts (.msi
) are missing
Check the AppVeyor build and re-run it if it has failed. If the build succeeded, check the webhook logs for any errors.
All artifacts are attached to release, but site still points to old version
Check the yarn-version Jenkins build job and see whether it has failed.
如何手动执行
Most of the release has been automated and is fairly straightforward. 通常来说,您只需阅读到这里。 However, if the release tooling ever breaks (or if you like doing things the hard way), you can manually perform the release steps.
创建新发布
- Run
yarn build-dist && yarn build-deb
to build the release tarball, Debian package, and RPM package - Run
yarn build-dist && yarn build-win-installer
on Windows to build the Windows installer -
GPG 签名
.tar.gz
和.js
artifacts: sh gpg -u 9D41F3C3 –armor –detach-sign yarn-0.xx.xx.tar.gz 这将生成.asc
files that you should also attach to the release -
Authenticode sign the
.msi
artifacts: sh osslsigncode sign -t http://timestamp.digicert.com -n “Yarn Installer” -i https://yarnpkg.com/ -pkcs12 yarn-20161122.pfx -readpass yarn-20161122.key -h sha1 -in yarn-0.xx.xx-unsigned.msi -out yarn-0.xx.xx.msi osslsigncode sign -t http://timestamp.digicert.com -n “Yarn Installer” -i https://yarnpkg.com/ -pkcs12 yarn-20161122.pfx -readpass yarn-20161122.key -nest -h sha2 -in yarn-0.xx.xx.msi -out yarn-0.xx.xx.msi - Create new release on GitHub, and attach all artifacts. For the MSI, ensure you attach the signed version!
- Publish the tarball to npm:
npm publish ./artifacts/yarn-v0.xx.xx.tar.gz
- 执行下面的 post-release 步骤
RC 转入稳定版
- 修改 GitHub 发布,将其标为稳定版
- 运行
npm dist-tag add yarn@0.xx.xx latest
(其中0.xx.xx
是要发布的版本号) - 运行下面的 post-release 步骤
Post-release
- Bump version number in _config.yml on the website
- Run
./scripts/build-chocolatey.ps1
to push to Chocolatey - Run
./scripts/update-homebrew.sh
to push to Homebrew - Debian 和 CentOS 仓库应该在5分钟内自动更新到最新版本(盯住那些提交)