gpt4 book ai didi

azure - 在 Azure Pipelines 中缓存 node_modules 比安装它们需要更长的时间

转载 作者:行者123 更新时间:2023-12-03 00:45:50 25 4
gpt4 key购买 nike

我正在运行一个自托管代理(Windows Server),并且我试图通过缓存我的node_modules来减少我的管道构建时间。但是,恢复 node_modules 缓存所需的时间与从头开始安装软件包的时间一样长。另外,查看日志给我的印象是它正在外部下载/上传缓存,而不是将缓存保留在虚拟机上。如果这是真的,那么我对 node_modules 的缓存将导致在每次构建时传输约 1GB 的数据。

我做错了什么?

我的目标是简单地维护/保留我的自托管代理上的构建之间的node_modules,原因如下:

  1. 防止每次都安装node_modules
  2. 将 node_modules/.cache 文件夹保留为 computational caching目的

enter image description here

我的管道 YML 文件:

trigger:
- develop
- master

variables:
nodeModulesCache: $(System.DefaultWorkingDirectory)/node_modules

stages:
- stage: client_qa
displayName: Client code QA
dependsOn: []
pool:
name: Default
jobs:
- job:
displayName: Lint & test client code
steps:
# Use NodeJS.
- task: UseNode@1
inputs:
version: "12.x"

# Restore cache.
- task: Cache@2
inputs:
key: 'npm | "$(Agent.OS)" | client/package-lock.json'
restoreKeys: |
npm | "$(Agent.OS)"
path: $(nodeModulesCache)
displayName: Cache Node modules

# Install dependencies.
- script: npm install
workingDirectory: client
displayName: "Install packages"

# Lint affected code.
- script: npm run lint:affected:ci
workingDirectory: client
displayName: "Lint affected code"

# Test affected code.
- script: npm run test:affected:ci
workingDirectory: client
displayName: "Run affected unit tests"

最佳答案

node_modules缓存到$(System.DefaultWorkingDirectory)/node_modules,路径应为_\agent_work\1\s\node_modules。自托管代理将在获取之前运行 execute git clean -ffdx && git reset --hard HEAD ,它将删除文件夹 node_modules 并安装 node_modules 每次。检查这个doc了解更多详情。

我们需要在步骤级别添加代码 - checkout: self clean: false

YAML 定义

trigger:
- develop
- master

variables:
nodeModulesCache: $(System.DefaultWorkingDirectory)/node_modules

stages:
- stage: client_qa
displayName: Client code QA
dependsOn: []
pool:
name: Default
jobs:
- job:
displayName: Lint & test client code
steps:
- checkout: self
clean: false
# Use NodeJS.
- task: UseNode@1
inputs:
version: "12.x"

# Restore cache.
- task: Cache@2
inputs:
key: 'npm | "$(Agent.OS)" | client/package-lock.json'
restoreKeys: |
npm | "$(Agent.OS)"
path: $(nodeModulesCache)
displayName: Cache Node modules

# Install dependencies.
- script: npm install
workingDirectory: client
displayName: "Install packages"

# Lint affected code.
- script: npm run lint:affected:ci
workingDirectory: client
displayName: "Lint affected code"

# Test affected code.
- script: npm run test:affected:ci
workingDirectory: client
displayName: "Run affected unit tests"

关于azure - 在 Azure Pipelines 中缓存 node_modules 比安装它们需要更长的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65958925/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com