发布过程

发布新版本

根据您推送的发布类型(主要、次要或补丁),步骤稍有不同

要发布新的修补程序版本(例如 从 0.28.1 到 0.28.2)

  1. 将所有需要的修改Cherry-pick到 -stable分支(例如,0.28-stable
  2. 确保切换到本地的-stable分支上
  3. 运行 npm version patch 递增版本号并创建 Git Commit和Tag
  4. 运行 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)

  1. 确保当前 master 分支在 Circle, TravisAppVeyor 上是绿色的。
  2. Ensure you are on master and your local copy of Yarn is up-to-date
  3. 运行 ./scripts/release-branch.sh。这将:
    • Create the 0.xx-stable branch and 0.xx.0 tag
    • Bump master to the next minor version (eg. after releasing 0.29.0, master will be bumped to 0.30.0)
    • 将其全部推送到 origin

标记一个 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.

创建新发布

  1. Run yarn build-dist && yarn build-deb to build the release tarball, Debian package, and RPM package
  2. Run yarn build-dist && yarn build-win-installer on Windows to build the Windows installer
  3. 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

  4. 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

  5. Create new release on GitHub, and attach all artifacts. For the MSI, ensure you attach the signed version!
  6. Publish the tarball to npm: npm publish ./artifacts/yarn-v0.xx.xx.tar.gz
  7. 执行下面的 post-release 步骤

RC 转入稳定版

  1. 修改 GitHub 发布,将其标为稳定版
  2. 运行 npm dist-tag add yarn@0.xx.xx latest (其中 0.xx.xx 是要发布的版本号)
  3. 运行下面的 post-release 步骤

Post-release

  1. Bump version number in _config.yml on the website
  2. Run ./scripts/build-chocolatey.ps1 to push to Chocolatey
  3. Run ./scripts/update-homebrew.sh to push to Homebrew
  4. Debian 和 CentOS 仓库应该在5分钟内自动更新到最新版本(盯住那些提交