【问题标题】:Azure Devops Pipeline: Possible to cache task container?Azure Devops Pipeline:可以缓存任务容器吗?
【发布时间】:2020-12-18 15:57:40
【问题描述】:

我正在为 .Net Framework 应用程序设置多阶段 Azure Devops yaml 管道。

部分管道将涉及使用 AWSPowerShellModuleScript 任务在 AWS 中配置负载均衡器规则。

我的任务看起来像这样......

        - task: AWSPowerShellModuleScript@1.7.0
          name: SetupLoadBalancerRules
          inputs:
            awsCredentials: 'My AWS Service Connection'
            regionName: 'ap-southeast-2'
            scriptType: 'filepath'
            filePath: 'pipeline-scripts/manage-aws-load-balancer-rules.ps1'

一切正常。但是,AWSPowerShellModuleScript 任务的初始化速度很慢。 powershell 本身非常快,但设置该任务大约需要 1.5 分钟。

我在管道的不同阶段运行其中的 2 个任务,因此总时间增加了 3 分钟。这可能看起来不多,但应用程序本身非常小,因此这些任务的设置实际上是管道中最耗时的部分。

据我所知,管道似乎正在启动一个通用容器,然后在每次需要运行其中一项任务时安装 AWS Powershell 工具。

这似乎非常浪费和低效,所以我想知道是否有更好的方法来处理它,例如,在安装 powershell 工具后缓存构建的容器,或者使用现有的图像与工具安装等。

我对使用 yaml 管道很陌生,所以我不确定有什么可能。

我希望我的管道尽可能高效,所以每次我需要运行一个简单的 powershell 脚本时,都会重新运行这个重复的安装过程,这让我很困扰。

另外我应该提到我正在使用托管的 Devops 代理... vmImage: 'windows-2019'

以防万一。这是来自任务日志输出...

Checking install status for AWS Tools for Windows PowerShell module.
AWS Tools for Windows PowerShell module not found.
Installing AWS Tools for Windows PowerShell module to current user scope

Name                           Version          Source           Summary                                               
----                           -------          ------           -------                                               
nuget                          2.8.5.208        https://onege... NuGet provider for the OneGet meta-package manager

所以它确定AWS工具没有安装,然后可能使用nuget安装它??

我想也许我可以使用缓存任务来缓存安装,但即使我能找到工具的安装位置,简单地恢复文件夹似乎也不太可能。

【问题讨论】:

    标签: azure-devops aws-powershell


    【解决方案1】:

    使用 Microsoft 托管的代理,每次运行管道时,您都会获得一个新鲜虚拟机。所以需要在每个管道中安装该工具。

    一个阶段是一个或多个作业,它们是可分配给同一台机器的工作单元。使用 Microsoft 托管的代理,每个阶段通常使用单独的代理。所以每个阶段都会安装该工具。

    总之,微软托管的代理是不能缓存工具的。为了每次都预装或不装,可以部署Self-hosted Windows agents,在每台运行代理服务的机器上安装工具。

    【讨论】:

      猜你喜欢
      • 2020-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-01
      • 2020-03-02
      • 1970-01-01
      • 2020-09-28
      • 1970-01-01
      相关资源
      最近更新 更多