【问题标题】:Cache Chocolatey packages in Azure Devops在 Azure Devops 中缓存 Chocolatey 包
【发布时间】:2021-06-15 18:56:43
【问题描述】:

TLDR;

我有一个 Azure Devops Pipeline,它使用巧克力来安装依赖项。我想缓存下载的巧克力包,类似于缓存节点依赖项的方式(见下文)或使用缓存代理服务器。

  1. 是否可以缓存从 Chocolatey 下载的包以便在下次运行时可用?

  2. 如果目前还不容易实现,那么是否可以为巧克力包运行类似于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 美元/年比我现在想支付的要多一点。他们建议使用社区版。

【问题讨论】:

    标签: azure-devops continuous-integration chocolatey


    【解决方案1】:

    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'
    

    【讨论】:

    • 我知道 choco 缓存选项,应该将它添加到我的问题中,但是让我挂断如何使用缓存任务的一件事是:关键真的是?
    • 我在那里看到两个选项: 1. 您将任意字符串作为键(即“version1”)并在每次要使缓存无效时手动更改该字符串。 2. 如果包在packages.config 中,则将列表放入,该文件成为键。这样,如果您想添加另一个包或更新版本,您只需更改 packages.config。
    猜你喜欢
    • 1970-01-01
    • 2021-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-26
    • 1970-01-01
    • 2020-06-01
    • 2022-10-05
    相关资源
    最近更新 更多