得到'缺少一个任务。管道引用了一个名为“缓存”的任务。 Azure 管道中的错误
Posted
技术标签:
【中文标题】得到\'缺少一个任务。管道引用了一个名为“缓存”的任务。 Azure 管道中的错误【英文标题】:Getting 'A task is missing. The pipeline references a task called 'Cache'.' error in Azure Pipeline得到'缺少一个任务。管道引用了一个名为“缓存”的任务。 Azure 管道中的错误 【发布时间】:2020-12-21 15:13:15 【问题描述】:我正在尝试将我的 npm 包缓存在 Azure Pipeline YAML 中。我使用了微软的这段代码:https://docs.microsoft.com/en-us/azure/devops/pipelines/release/caching?view=azure-devops#nodejsnpm
这是我的 YAML 文件的一部分:
steps:
- task: NodeTool@0
displayName: 'Use Node 12.x'
inputs:
versionSpec: 12.18.3
checkLatest: false
- task: Npm@1
displayName: 'npm install'
inputs:
workingDir: WebApp
verbose: false
- task: Cache@2
inputs:
key: 'npm | "$(Agent.OS)" | package-lock.json'
restoreKeys: npm | "$(Agent.OS)"
path: $(npm_config_cache)
displayName: Cache NPM packages
当我运行管道时,它会失败并显示以下消息:
A task is missing. The pipeline references a task called 'Cache'. This usually indicates the task isn't installed, and you may be able to install it from the Marketplace: https://marketplace.visualstudio.com.
我尝试从 Microsoft Marketplace 安装缓存任务,但它不可用。我正在使用带有 6 月更新的 Azure DevOps Server 2019。缓存任务尚未被弃用,应该可以根据此页面使用我的 Azure DevOps 服务器版本:https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/utility/cache?view=azure-devops。如何安装缓存任务?
更新:
我在 Microsoft 开发人员论坛上发现了一篇涉及相同问题的帖子:https://developercommunity.visualstudio.com/content/problem/1092245/cache-task-not-available-on-azure-devops-server.html。显然,缓存任务当前在 Azure DevOps Server 2019 上不可用。我将不得不寻找解决方法。谈笑风生。 Microsoft 没有提供缓存任务,并且在他们的网站上没有发布任何关于它的内容。
【问题讨论】:
CacheBeta@0
有效吗?
我尝试了 CacheBeta 并得到了同样的错误。
我猜 ado server 2019 中还没有缓存
使用私有代理时不需要缓存——代理已经维护了缓存。缓存的唯一目的是让 Microsoft 托管的代理避免在每次构建时都从 NuGet/NPM 恢复。
@DanielMann 谢谢。我不知道。有没有办法加快 npm 安装?我的 npm install 构建步骤大约需要 5 分钟才能完成,这似乎很长。
【参考方案1】:
如果您使用的是自托管代理。您可以在管道中添加checkout
步骤并将clean
属性设置为false
(如果未指定,默认为true
)。这样源文件夹中已安装的依赖项将不会被清理以进行下一次构建。它会加速 npm install 任务。见下文:
steps:
- checkout: self
clean: false
- task: NodeTool@0
displayName: 'Use Node 12.x'
inputs:
versionSpec: 12.18.3
checkLatest: false
- task: Npm@1
displayName: 'npm install'
inputs:
workingDir: WebApp
verbose: false
查看here了解更多信息。
【讨论】:
以上是关于得到'缺少一个任务。管道引用了一个名为“缓存”的任务。 Azure 管道中的错误的主要内容,如果未能解决你的问题,请参考以下文章
Azure Pipeline - 构建中缺少一个 csproj