如何在 Azure Pipelines 上使用 pnpm?

det*_*ama 4 azure azure-pipelines next.js pnpm

在我的 Nextjs 项目中,我想使用 Azure Pipelines 创建管道。但我的项目使用pnpm包管理器。我读过 pnpm 文档,只知道 Travis、Semaphore、AppVeyor、GitHub Actions、Gitlab CI 和 Bitbucket Pipelines。没有 Azure Pipelines 文档。

有谁知道如何实现这个?

det*_*ama 7

我为 Azure 管道中的管道创建了自己的配方。

任何反馈都会有用

对于 Nextjs

azure-pipelines.yml

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

trigger:
  - main

pool:
  vmImage: ubuntu-latest

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

  - task: Cache@2
    inputs:
      key: next | $(Agent.OS) | pnpm-lock.yaml
      path: "$(System.DefaultWorkingDirectory)/.next/cache"
    displayName: "Cache .next/cache"

  - script: |
      curl -f https://get.pnpm.io/v6.16.js | node - add --global pnpm@7
      pnpm config set store-dir $(pnpm_config_cache)
    displayName: "Setup pnpm"

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

  - task: ArchiveFiles@2
    inputs:
      rootFolderOrFile: "."
      includeRootFolder: false
      archiveType: "zip"
      archiveFile: "$(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip"
      replaceExistingArchive: true

  - task: PublishBuildArtifacts@1
    inputs:
      PathtoPublish: "$(Build.ArtifactStagingDirectory)"
      ArtifactName: "drop"
      publishLocation: "Container"

Run Code Online (Sandbox Code Playgroud)

对于其他构建(删除了 Nextjs 部分的版本)

azure-pipelines.yml

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

trigger:
  - main

pool:
  vmImage: ubuntu-latest

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

  - script: |
      curl -f https://get.pnpm.io/v6.16.js | node - add --global pnpm@7
      pnpm config set store-dir $(pnpm_config_cache)
    displayName: "Setup pnpm"

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

  - task: ArchiveFiles@2
    inputs:
      rootFolderOrFile: "."
      includeRootFolder: false
      archiveType: "zip"
      archiveFile: "$(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip"
      replaceExistingArchive: true

  - task: PublishBuildArtifacts@1
    inputs:
      PathtoPublish: "$(Build.ArtifactStagingDirectory)"
      ArtifactName: "drop"
      publishLocation: "Container"

Run Code Online (Sandbox Code Playgroud)

  • 现在这里有一个非常相似的配方:https://pnpm.io/continuous-integration#azure-pipelines (2认同)