У меня есть следующие задачи конвейера:
(ключевой - Signing and aligning APK file(s)
).
Когда я просматриваю логи сборки (ов), помимо журналов задач Signing and aligning APK file(s)
там я также вижу Pre-job: Signing and aligning APK file(s)
и Post-job: ...
(такие же, как для Checkout
).
Однако я не совсем понимаю, что это за задачи и как они оказались у меня в логах? Я не могу найти никакой документации по этому поводу. И, соответственно, учитывая, что есть задачи «Pre-job», есть ли способ определить мои собственные задачи, выполняемые до начала сборки Pipeline?
Задача может определять предварительные и последующие шаги. Они будут добавлены на этап инициализации задания и на этап очистки. В случае задачи подписи я могу представить, что это помогает гарантировать, что секреты будут должным образом очищены, когда работа будет завершена.
Это может быть важно, особенно для общего агента, потому что отказ от очистки постфактум может привести к тому, что секреты останутся на агенте и могут быть «захвачены» другими заданиями, выполняемыми на той же машине.
Вы можете понять, что именно делают эти задания, посмотрев на источники:
да. Вот что нужно сделать.
Просто чтобы быть уверенным, что я не собираюсь изобретать велосипеды (пока я не могу найти никаких причин, по которым никто не хотел бы запускать какие-либо начальные сценарии Powershell перед любыми другими задачами), не могли бы вы знать о каких-либо удобных (существующих ) инструмент / способ сделать это (с помощью PowerShell или другого аналогичного метода)?
Теоретически вы можете добавить эту функцию к существующей задаче «запустить PowerShell». Насколько я знаю, по умолчанию его там нет. Возможно, стоит запрос на перенос в Azure-Pipelines-tasks.
Что ж, в общем, это не похоже на идеальную архитектуру, поскольку визуально эта (такие) задачи (и) довольно специфичны и предназначены для выполнения «на месте» (где они находятся в списке задач), а проблема в Azure DevOps просто нет разделов «до» и «после». (Было бы нормально иметь общий поток, как сейчас, но вы просто не можете запускать какую-либо задачу, пока источники не будут извлечены из репозитория).
@Agat из любопытства, вы в конечном итоге создали такую задачу для выполнения PowerShell в качестве шага перед выполнением задания? Сейчас мне тоже нужна эта функция.
@KamuelaFranco, пример: github.com/jessehouwing/azure-pipelines-tfvc-tasks/tree/main /…
Спасибо за быстрый ответ. Значит ли это, что для создания такой задачи «Pre-job» я должен создать свой собственный тип задач и прикрепить его к конвейеру? (Например, если я хочу, чтобы какой-нибудь скрипт Powershell запускался в самом начале запуска конвейера).