跳到主内容
版本:Next

持续集成

pnpm 可以很容易地用于各种持续集成系统。

注意

在所有提供的配置文件中,存储都被缓存。 但是,这不是必需的,并且不能保证缓存的存储会使安装速度更快。 因此,不必在作业中缓存 pnpm 存储。

Lockfile behavior in CI

When pnpm detects that it is running in CI, it switches to frozen-lockfile mode automatically. Since v11, pnpm also fails on incompatible lockfiles in CI — if the lockfile was written by a newer pnpm major version, the install will error out instead of silently rewriting it. Upgrade your CI pnpm version to match the one used to generate the lockfile.

AppVeyor

AppVeyor上,你可以使用 pnpm 安装依赖项,只需将此 添加到你的 appveyor.yml中即可:

appveyor.yml
install:
- ps: Install-Product node $env:nodejs_version
- npm install --global corepack@latest
- corepack enable
- corepack prepare pnpm@next-11 --activate
- pnpm install

Azure Pipelines

在 Azure pipeline 中,你可以将以下内容添加到 Azure-Pipelines.yml 中,使用 pnpm 安装和缓存依赖项:

azure-pipelines.yml
variables:
pnpm_config_cache: $(Pipeline.Workspace)/.pnpm-store

steps:
- task: Cache@2
inputs:
key: 'pnpm | "$(Agent.OS)" | pnpm-lock.yaml'
path: $(pnpm_config_cache)
displayName: Cache pnpm

- script: |
npm install --global corepack@latest
corepack enable
corepack prepare pnpm@next-11 --activate
pnpm config set store-dir $(pnpm_config_cache)
displayName: "Setup pnpm"

- script: |
pnpm install
pnpm run build
displayName: "pnpm install and build"

Bitbucket Pipelines

你可以使用 pnpm 来安装和缓存你的依赖项:

.bitbucket-pipelines.yml
definitions:
caches:
pnpm: $BITBUCKET_CLONE_DIR/.pnpm-store

pipelines:
pull-requests:
"**":
- step:
name: Build and test
image: node:24.14.1
script:
- npm install --global corepack@latest
- corepack enable
- corepack prepare pnpm@next-11 --activate
- pnpm install
- pnpm run build # 替换为你的构建/测试…等命令
caches:
- pnpm

CircleCI

在 CircleCI 中,你可以将以下内容添加到 .circleci/config.yml 中,使用 pnpm 安装和缓存依赖项:

.circleci/config.yml
version: 2.1

jobs:
build: # 这可以是你选择的任意名称
docker:
- image: node:18
resource_class: large
parallelism: 10

steps:
- checkout
- restore_cache:
name: 恢复 pnpm 包缓存
keys:
- pnpm-packages-{{ checksum "pnpm-lock.yaml" }}
- run:
name: 安装 pnpm 包管理器
command: |
npm install --global corepack@latest
corepack enable
corepack prepare pnpm@next-11 --activate
pnpm config set store-dir .pnpm-store
- run:
name: 安装依赖
command: |
pnpm install
- save_cache:
name: 保存 pnpm 包缓存
key: pnpm-packages-{{ checksum "pnpm-lock.yaml" }}
paths:
- .pnpm-store

GitHub Actions

在 GitHub Actions 上,你可以像这样使用 pnpm 安装和缓存你的依赖项(属于 .github/workflows/NAME.yml):

.github/workflows/NAME.yml
name: pnpm Example Workflow
on:
push:

jobs:
build:
runs-on: ubuntu-24.04
strategy:
matrix:
node-version: [24]
steps:
- uses: actions/checkout@v6
- name: Install pnpm
uses: pnpm/action-setup@08c4be7e2e672a47d11bd04269e27e5f3e8529cb # v6.0.0
with:
version: 11
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v6
with:
node-version: ${{ matrix.node-version }}
cache: "pnpm"
- name: Install dependencies
run: pnpm install

GitLab CI

在 Gitlab 上,您像这样可以使用 pnpm 来安装和缓存你的依赖项 (在 .gitlab-ci.yml 中):

.gitlab-ci.yml
stages:
- build

build:
stage: build
image: node:24.14.1
before_script:
- npm install --global corepack@latest
- corepack enable
- corepack prepare pnpm@next-11 --activate
- pnpm config set store-dir .pnpm-store
script:
- pnpm install # 安装依赖
cache:
key:
files:
- pnpm-lock.yaml
paths:
- .pnpm-store

Jenkins

你可以使用 pnpm 来安装和缓存你的依赖项:

pipeline {
agent {
docker {
image 'node:lts-bullseye-slim'
args '-p 3000:3000'
}
}
stages {
stage('Build') {
steps {
sh 'npm install --global corepack@latest'
sh 'corepack enable'
sh 'corepack prepare pnpm@next-11 --activate'
sh 'pnpm install'
}
}
}
}

Semaphore

Semapore上 ,将此内容添加到 .semaphore/semaphore.yml 文件中以使用 pnpm 来安装和缓存你的依赖:

.semaphore/semaphore.yml
version: v1.0
name: Semaphore CI pnpm example
agent:
machine:
type: e1-standard-2
os_image: ubuntu2404
blocks:
- name: 安装依赖
task:
jobs:
- name: pnpm 安装
commands:
- npm install --global corepack@latest
- corepack enable
- corepack prepare pnpm@next-11 --activate
- checkout
- cache restore node-$(checksum pnpm-lock.yaml)
- pnpm install
- cache store node-$(checksum pnpm-lock.yaml) $(pnpm store path)

Travis

Travis CI上,你可以使用 pnpm 安装依赖项,方法是将此 添加到你的 .travis.yml 文件中:

.travis.yml
cache:
npm: false
directories:
- "~/.pnpm-store"
before_install:
- npm install --global corepack@latest
- corepack enable
- corepack prepare pnpm@next-11 --activate
- pnpm config set store-dir ~/.pnpm-store
install:
- pnpm install