【发布时间】: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