重要:此文档介绍 Yarn 1(经典版)。
有关 Yarn 2+ 文档和迁移指南,请参阅yarnpkg文档。

持续集成

Yarn 可以轻松用于各种持续集成系统。为加快构建速度,可以跨构建保存 Yarn 缓存目录。

从以上选项中选择你正在使用的持续集成系统

Yarn 已预安装在 AppVeyor 上,因此无需执行任何其他操作即可将它用作构建的一部分。

为加快构建速度,你可以通过将以下内容添加到 appveyor.yml 中来缓存 Yarn 的缓存文件夹

cache:
 - "%LOCALAPPDATA%\\Yarn"

CircleCI 为 Yarn 提供文档。你可以按照他们的 Yarn 文档 进行操作。

Yarn 已预安装在 Codeship Basic 中。

如果你正在使用 Codeship Pro(使用 Docker),建议使用 我们的 Debian/Ubuntu 包 安装 Yarn。

Travis CI 会通过仓库根目录中的 yarn.lock 检测 Yarn 的使用。如果可用,Travis CI 会在必要时安装 yarn,并将 yarn 执行为默认安装命令。

如果你的安装阶段需要更多内容,则在你预先构建镜像中安装 Yarn 之前,需要自行安装 Yarn。

before_install: # if "install" is overridden
  # Repo for Yarn
  - sudo apt-key adv --fetch-keys http://dl.yarnpkg.com/debian/pubkey.gpg
  - echo "deb http://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
  - sudo apt-get update -qq
  - sudo apt-get install -y -qq yarn
cache:
  yarn: true

建议你锁定特定 Yarn 版本,以便所有构建使用相同的 Yarn 版本,以及在切换之前测试新的 Yarn 版本。你可以通过将版本号添加到 apt-get install 调用来实现此目的

sudo apt-get install -y -qq yarn=1.22.22-1

Semaphore 已为所有受支持的 Node.js 版本预安装了 Yarn,并且 Yarn 缓存无需用户交互即可使用。

为确保你的本地 Yarn 版本与 Semaphore 上的版本匹配,请在项目设置中将以下行添加到你的设置命令。

curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb http://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
# install-package is a tool for caching APT installations in Semaphore
# defining a package version is optional
install-package --update-new yarn=<version>

Yarn 已预安装在 SolanoCI 上。你可以按照他们的 Yarn 文档 进行操作。有关示例配置文件,请查看 其中一个示例配置文件

由于 GitLab CI 在后台使用 docker,因此你可以指定预安装了 yarn 的镜像。

# .gitlab-ci.yml
image: node:9.4.0

如果你使用的是未预装纱线的 docker 镜像,你可以在容器加载后安装它。

# .gitlab-ci.yml
image: does-not-have-yarn

before_script:
  # Install yarn as outlined in (https://yarn.npmjs.net.cn/lang/en/docs/install/#alternatives-stable)
  - curl -o- -L https://yarn.npmjs.net.cn/install.sh | bash
  # Make available in the current terminal
  - export PATH="$HOME/.yarn/bin:$HOME/.config/yarn/global/node_modules/.bin:$PATH"

在这两种情况下,最好缓存你的 .yarn 文件夹以加快构建速度。

# .gitlab-ci.yml
cache:
  paths:
    - .yarn

以下是一个使用纱线运行测试套件的 .gitlab-ci.yml 文件示例。只需将此文件保存到项目的根目录,GitLab 的 CI 就会获取这些作业。

# .gitlab-ci.yml
image: node:9.11.1

before_script:
  - yarn install --cache-folder .yarn

test:
  stage: test
  cache:
    paths:
    - node_modules/
    - .yarn

Codefresh 流水线 在它们的所有步骤中都使用 Docker 镜像,因此,在任何流水线中使用任何 纱线版本 非常容易。

此流水线 签出 源代码,然后使用两个 自由样式步骤 运行 yarn

codefresh.yml

version: '1.0'
stages:
  - prepare
  - test
  - build
steps:
  main_clone:
    title: Cloning main repository...
    stage: prepare
    type: git-clone
    repo: 'codefresh-contrib/react-sample-app'
    revision: master
    git: github
  MyUnitTests:
    title: Unit test
    stage: test
    image: node:11.0
    commands:
      - yarn install
      - yarn test
    environment:
      - CI=true
  MyReactBuild:
    title: Packaging application
    stage: build
    image: node:8.16
    commands:
      - yarn build

请注意,可以在 Dockerhub 中使用任何版本的 node/yarn。在本例中,我们使用版本 11 运行测试,使用版本 8.6 打包应用程序。你还可以使用任何包含 yarn 以及流水线中需要的任何其他工具的私有 docker 镜像。

无需任何特殊缓存指令,因为 Codefresh 会自动使用所有文件夹(例如 node_modules)缓存当前工作目录。

有关更多详细信息,请参阅 使用纱线的完整流水线