Конвейер Azure DevOps Создает неизменяемый образ (упаковщик), не находя скрипт

#azure #azure-devops #packer

#лазурный #azure-devops #упаковщик #azure

Вопрос:

Итак, я пытаюсь использовать конвейер выпуска Azure DevOps и упаковщик для создания золотого образа, но я сталкиваюсь со странной ошибкой, когда скрипт не найден. Я пытаюсь использовать автоматически сгенерированный шаблон, поскольку у меня вообще нет опыта работы с упаковщиком, но это казалось очень простым, поэтому я упорствовал.

Я создаю базовый образ Ubuntu 18.04-LTS, мой пакет отлично извлекается из конвейера CI и отображается в пользовательском интерфейсе. Мой пакет содержит сценарий, и это также видно из пользовательского интерфейса. У меня нет аргументов для сценария, поскольку на данном этапе он содержит очень мало.

Начальный шаг выполняется нормально, как указано ниже, и когда я ввожу неправильное имя скрипта или путь, он завершается с ошибкой, как я и ожидал.

 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
  

Мои первоначальные мысли заключаются в том, что пакет все еще находился в процессе копирования, поскольку отметка времени между загрузкой и попыткой запуска скрипта проходит очень быстро, и я знаю из других этапов конвейера, что копирование пакета обычно занимает намного больше времени. Я пытался запустить пользовательскую версию скрипта, но продолжал блокироваться другими способами.

Я включил код из deploy, поскольку на самом деле это всего лишь команда apt-get, которую я надеялся конкретизировать после того, как проведу успешный тестовый запуск, но пока не вижу никакого успеха.

Будем признательны за любую помощь или предложения.

Настройки шага Настройки, как показано ниже (написаны в графическом интерфейсе и скопированы в 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>"}'
  

Комментарии:

1. Привет, @Grae Saunders, не могли бы вы поделиться настройкой задачи и полным журналом отладки здесь?

2. Извините за поздний ответ.

3. Я обновил вопрос. Что касается полных журналов, я бы предпочел не делиться ими, поскольку для их очистки требуется время, не могли бы вы уточнить, что вы, возможно, ищете?

4. Привет @Grae Saunders, я хочу проверить путь к файлу .sh, кстати, вы проверили этот блог ? Я пробовал, и это работает.

5. Привет, Вито, как в конфигурации, так и в извлечении журнала показан путь .sh. Что касается блога, который был основой для многого из того, что я сделал, за единственным исключением, заключающимся в том, что я использовал приложение dot net вместо приложения node js. Мне было интересно, есть ли более обновленная версия блога, поскольку я знаю, что в Az DevOps произошли некоторые изменения

Ответ №1:

У меня была такая же проблема. Однако это решило проблему.

Это была очень простая проблема. Я изменил агент, используемый для печати артефактов, с Windows на Linux, и проблема была решена.

Я много пробовал с содержимым следующих репозиториев и убедительно подтвердил, что агент, создающий артефакты, должен быть запущен на базе Linux. https://github.com/microsoft/azure-pipelines-tasks/blob/master/Tasks/PackerBuildV1/DefaultTemplates/custom.managed.linux.template.json

Это старая проблема, но я надеюсь, что все пройдет хорошо.