継続的インテグレーション
pnpmは、さまざまな継続的インテグレーションシステムで簡単に使用できます。
ここで提供している全ての設定で、ストアをキャッシュしています。 しかし、ストアのキャッシュは必須ではありません。また、ストアのキャッシュによってインストールが速くなることを保証するわけでもありません。 そのため、あなたのジョブで pnpm ストアをキャッシュしなくても構いません。
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
On AppVeyor, you can use pnpm for installing your dependencies by adding this to your 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 Pipelines では、次のような内容を .azure-pipelines.yml に追加することで、pnpm による依存関係のインストールとキャッシュが可能です:
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 を使用できます。
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 # Replace with your build/test…etc. commands
caches:
- pnpm
CircleCI
CircleCI では、次のような内容を .circleci/config.yml ファイルに追加することで、pnpm による依存関係のインストールとキャッシュが可能です:
version: 2.1
jobs:
build: # this can be any name you choose
docker:
- image: node:18
resource_class: large
parallelism: 10
steps:
- checkout
- restore_cache:
name: Restore pnpm Package Cache
keys:
- pnpm-packages-{{ checksum "pnpm-lock.yaml" }}
- run:
name: Install pnpm package manager
command: |
npm install --global corepack@latest
corepack enable
corepack prepare pnpm@next-11 --activate
pnpm config set store-dir .pnpm-store
- run:
name: Install Dependencies
command: |
pnpm install
- save_cache:
name: Save pnpm Package Cache
key: pnpm-packages-{{ checksum "pnpm-lock.yaml" }}
paths:
- .pnpm-store
GitHub Actions
GitHub Actionsでは、( .github/workflows/NAME.yml に) 次のような設定を書くことで、 pnpm による依存関係のインストールとキャッシュが可能です:
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 では、(.gitlab-ci.yml に) 次のような設定を書くことで、pnpm による依存関係のインストールとキャッシュが可能です:
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 # install dependencies
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
Semaphore では、次の内容を .semaphore.yml ファイルに追加することで、pnpm による依存関係のインストールとキャッシュが可能です:
version: v1.0
name: Semaphore CI pnpm example
agent:
machine:
type: e1-standard-2
os_image: ubuntu2404
blocks:
- name: Install dependencies
task:
jobs:
- name: pnpm install
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
On Travis CI, you can use pnpm for installing your dependencies by adding this to your .travis.yml file:
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