Azure DevOps管道构建不可变映像(Packer)找不到脚本



所以,我试图使用Azure DevOps发布管道和Packer来构建一个黄金映像,但我遇到了一个奇怪的错误,即找不到脚本。我正在尝试使用自动生成的模板,因为我根本没有使用Packer的经验,但它看起来很直接,所以我坚持了下来。

我正在构建一个基本的Ubuntu 18.04-LTS映像,我的包是从CI管道中提取的,并且在UI中可见。我的包包含脚本,这也可以从UI中看到。我不支持这个剧本,因为在这个阶段它包含的内容很少。

最初的步骤运行良好,如下所示,当我输入错误的脚本名称或路径时,它会失败,正如我所期望的那样。

2020-09-21T13:42:28.5763293Z Resolving deploy package path.
2020-09-21T13:42:28.5872208Z Resolved deploy package path: /agent/_work/r1/a/_APP/_drop/MyApp.Web.
2020-09-21T13:42:28.5873284Z Resolving deploy script path.
2020-09-21T13:42:28.7426014Z Resolved deploy script path: deploy.sh.

构建过程通过封隔器验证,然后设置机器。该任务通过SSH成功连接,日志显示其上传如下。然后由于找不到脚本而失败。

2020-09-21T13:43:51.9642183Z ==> azure-arm: Connected to SSH!
2020-09-21T13:43:51.9642706Z 
2020-09-21T13:43:51.9661411Z ==> azure-arm: Provisioning with shell script: /tmp/packer-shell391925162
2020-09-21T13:43:51.9678528Z 
2020-09-21T13:43:54.3568719Z ==> azure-arm: Uploading /agent/_work/r1/a/_APP/_drop/MyApp.Web => /deployTemp/MyApp.Web
2020-09-21T13:50:54.8214369Z 
2020-09-21T13:50:55.8696845Z ==> azure-arm: Provisioning with shell script: /tmp/packer-shell088825827
2020-09-21T13:50:55.8700537Z 
2020-09-21T13:50:55.9197460Z     azure-arm: MyApp.Web
2020-09-21T13:50:55.9198790Z 
2020-09-21T13:50:55.9211167Z     azure-arm: /tmp/script_5793.sh: 5: /tmp/script_5793.sh: /deployTemp/MyApp.Web/deploy.sh: not found

我最初的想法是,包仍在复制过程中,因为上传和尝试运行脚本之间的时间戳非常快,我从管道中的其他步骤中知道,复制包通常需要更长的时间。我确实尝试运行用户生成的脚本版本,但在其他方面一直被阻止。

我已经包含了部署中的代码,因为这只是一个真正的apt-get命令,我希望在成功的测试运行后充实它,但还没有看到任何成功。

如有任何帮助或建议,我们将不胜感激。

步骤设置根据以下设置(在GUI中编写并复制到YAML(

steps:
- task: PackerBuild@1
displayName: 'Build immutable image'
inputs:
ConnectedServiceName: '<Service Account>'
managedImageName: AppNameGoldImageSept20
location: australiaeast
storageAccountName: astorageaccount
azureResourceGroup: '<ResourceGroup>'
baseImage: 'Canonical:UbuntuServer:18.04-LTS:linux'
packagePath: '$(System.DefaultWorkingDirectory)/_APP/_drop/MyApp.Web'
deployScriptPath: deploy.sh
additionalBuilderParameters: '{"vm_size":"Standard_D3_v2","virtual_network_name":"<VNetHere>","virtual_network_subnet_name":"<Subnet Here>","virtual_network_resource_group_name":"<VnetRg>"}'

我遇到了同样的问题。然而,它解决了这个问题

这是一个非常简单的问题。我将用于打印工件的代理从Windows更改为Linux,问题得到了解决。

我对以下存储库的内容进行了大量尝试,并最终确认创建工件的代理应该在Linux基础上运行。https://github.com/microsoft/azure-pipelines-tasks/blob/master/Tasks/PackerBuildV1/DefaultTemplates/custom.managed.linux.template.json

这是个老问题,但我希望进展顺利。

最新更新