azure-devops - 在 Azure Devops 中缓存 Chocolatey 包
问题描述
TLDR;
我有一个 Azure Devops Pipeline,它使用巧克力来安装依赖项。我想缓存下载的巧克力包,类似于如何缓存节点依赖项(见下文)或使用缓存代理服务器。
是否可以缓存从 Chocolatey 下载的包以便在下次运行时可用?
如果目前不容易做到这一点,那么是否可以为巧克力包运行类似于AptCacherNg的缓存代理服务器?
当前设置
我目前在 Azure Devops 中有一个管道设置,需要来自巧克力社区的包。该步骤相当于:
choco install nasm --confirm --no-progress
我正在使用以下内容缓存节点依赖项:
steps:
- task: Cache@2
displayName: 'Cache npm packages'
inputs:
key: '**/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json'
path: '$(System.DefaultWorkingDirectory)/node_modules'
我已经考虑过是否可以为此修改密钥以检查 choco 包或使用使用此插件的重复步骤,但我不知道具体如何执行此操作。
背景
最近,其中一个模块网站离线了几个小时。虽然它处于离线状态,但我注意到在日志中它指出许可用户在缓存包时可能没有问题。我查看了许可证定价,似乎对于最多 8 台机器的单用户许可证,每年的成本是合理的 96 美元,但在许可证中它指出使用它会违反商业使用条款。营业执照为 16 美元/年/机器,至少 100 台机器。对于这样一个只需要安装几个软件包的小型开发团队来说,1600 美元/年比我现在想支付的要多一点。他们建议使用社区版。
解决方案
Choco 有一个方便的--cache
选项,可让您指定缓存位置。将此选项与专用Cache
步骤一起使用:
- task: Cache@2
displayName: 'Cache choco'
inputs:
key: 'path_to_a_file_or_just_a_string_that_you_update_manually'
path: '$(System.DefaultWorkingDirectory)/choco_cache'
- script: choco install nasm --confirm --no-progress --cache $(System.DefaultWorkingDirectory)/choco_cache
displayName: 'install choco packages'
推荐阅读
- visual-studio-code - VS Code 在键入时不显示 Salesforce 对象或类符号。代码完成不起作用
- javascript - 从对象数组中删除按对象属性小于其他对象的元素
- php - PHP AdWords API v201809 - 如何使用 LocationCriterionService 从 GEO_PERFORMANCE_REPORT 获取城市名称?
- sql - 多连接和处理速度
- c# - C# 中 Nuget 包中的 AWS 凭证
- sql - 为 Spark ML 编码转置或旋转一组分类变量的最佳方法
- csv - 是否可以让 gnuplot 忽略具有“N/A”而不是数字的 csv 行?
- spring - 在另一个类中两次获取同一类的实例
- mysql - ./configure 在树莓派 3 上找不到 libmysqlclient 库,无法链接
- javascript - Vue 数据未在 DOM 中显示