연속 통합

pnpm은 다양한 ci 시스템들과 함께 사용하기 쉽습니다.

참고

제공된 모든 설정 파일에서는 스토어를 캐시합니다. 하지만 이는 필수가 아니며, 스토어를 캐시한다고 해서 설치가 더 빨라진다는 보장은 없습니다. 따라서 작업에서 pnpm 스토어를 캐시하지 않아도 괜찮습니다.

Important

pnpm의 스토어와 캐시 디렉터리는 신뢰할 수 있는 작업만 쓸 수 있는 위치에만 캐시하세요. 신뢰할 수 있는 작업이 나중에 복원하는 스토어나 메타데이터 캐시에 신뢰할 수 없는 CI 작업이 쓰지 못하도록 하세요. 이 디렉터리들은 신뢰할 수 있는 캐시입니다. 자세한 내용은 storeDir 및 cacheDir 설정을 참조하세요.

AppVeyor#

AppVeyor에서는 appveyor.yml에 다음을 추가하여 pnpm으로 종속성을 설치할 수 있습니다:

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

Azure Pipelines#

Azure Pipelines에서는 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@latest-10 --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을 통해 dependencies를 설치하고 캐시할 수 있습니다.

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

pipelines:
  pull-requests:
    "**":
      - step:
          name: Build and test
          image: node:18.17.1
          script:
            - npm install --global corepack@latest
            - corepack enable
            - corepack prepare pnpm@latest-10 --activate
            - pnpm install
            - pnpm run build # Replace with your build/test…etc. commands
          caches:
            - pnpm

CircleCI#

CircleCI에서는 .circleci/config.yml에 다음을 추가하여 pnpm으로 종속성을 설치하고 캐싱할 수 있습니다:

.circleci/config.yml
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@latest-10 --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에서는 다음과 같이 pnpm으로 종속성을 설치하고 캐싱할 수 있습니다(.github/workflows/NAME.yml에 작성):

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

jobs:
  build:
    runs-on: ubuntu-22.04
    strategy:
      matrix:
        node-version: [20]
    steps:
      - uses: actions/checkout@v4
      - name: Install pnpm
        uses: pnpm/action-setup@v4
        with:
          version: 10
      - name: Use Node.js ${{ matrix.node-version }}
        uses: actions/setup-node@v4
        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:18.17.1
  before_script:
    - npm install --global corepack@latest
    - corepack enable
    - corepack prepare pnpm@latest-10 --activate
    - pnpm config set store-dir .pnpm-store
  script:
    - pnpm install # install dependencies
  cache:
    key:
      files:
        - pnpm-lock.yaml
    paths:
      - .pnpm-store

Jenkins#

pnpm을 통해 dependencies를 설치하고 캐시할 수 있습니다.

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@latest-10 --activate'
                sh 'pnpm install'
            }
        }
    }
}

Semaphore#

Semaphore에서는 .semaphore/semaphore.yml 파일에 다음을 추가하여 pnpm으로 종속성을 설치하고 캐싱할 수 있습니다:

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

Travis#

Travis CI에서는 .travis.yml 파일에 다음을 추가하여 pnpm으로 종속성을 설치할 수 있습니다:

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