Как настроить мой конвейер Az DevOps для работы в другой ветке?
Я настраиваю конвейер Azure DevOps для CI для проекта mvc.NET Core 3.0.
Я создал новую ветку, DEVOPS
, в котором я хотел бы сохранить файл YAML. Файл включает триггер для изменения master
ветвь:
триггер:
- мастерпул:
vmImage: 'ubuntu-latest'# другие шаги / задачи ниже...
Я удалил все файлы кроме .gitignore
а также azure-pipelines.yml
из DEVOPS
ветке, зафиксировал его и отправил в исходную точку (Az DevOps Repo).
Затем я переключился на master
ветку удалил azure-pipelines.yml
файл, зафиксирован и отправлен.
это не запустило конвейер
Затем я изменил одно из представлений в master, зафиксировал и нажал.
это также не запустило конвейер
Итак, как я могу настроить Azure DevOps Pipelines для хранения azure-pipelines.yml
файл в ветке кроме master
, и запускается при изменении master
?
2 ответа
В соответствии с вашими действиями и конфигурацией YAML, сборка не может быть запущена, это разумно.
Давайте сначала сосредоточимся на конфигурации YAML. В вашем определении YAML вы устанавливаетеmaster
как ветвь триггера. Это означает, что изменения произошли только наmaster
может запустить этот конвейер сборки.
Первым делом вы удаляете несколько файлов из DEVOPS
ветвь. Затем зафиксируйте и вставьте его вremotes/Origin
. Но, как вы определили в конвейере, это действие не может запустить этот конвейер. Это как и ожидалось.
Далее в master
ветку, вы удаляете azure-pipelines.yml
файл, затем зафиксируйте и нажмите. Обратите внимание, что в настоящее время удаленная главная ветвь синхронизирована с локальной главной ветвью. Одним словом, после того, как вы нажмете на origin, нетazure-pipelines.yml
файл существует в основной ветке Azure Devops.
НО, запуск сборки зависит от того, существует ли yml или нет. Да, вы внесли некоторые изменения в основную ветку. Но безyml
файл, сборка не может быть успешно запущена. Вот почему вы столкнулись с тем, что конвейер не сработал.
И по той же причине для вашего следующего действия.
Как я могу настроить Azure DevOps Pipelines для хранения файла azure-pipelines.yml в ветке, отличной от главной, и активировать его при изменениях в главной?
До сих пор этого нельзя было достичь, если ваш тип определения сборки - YAML.
Для конвейера, тип определения которого - YAML, для достижения ожидаемого результата yml
файл с такой же конфигурацией также должен храниться в соответствующих ветвях, которые определены в конвейере.
Возьмите пример, который вы описали в вопросе. Если вы храните толькоyml
файл в DEVOPS
ветке, независимо от того, вносите ли какие-либо изменения в master
ветвь, он никогда не запустит сборку.
Чтобы добиться триггера при изменении мастера, это yml
файл также должен храниться в главной ветке. Таким образом, предварительное условие конвейера сборки, тип определения которого YAML, может быть запущен: файл yml также должен существовать в соответствующих ветвях, если он указан в определении yml. Это потому, что этот тип сборки может работать на основеyml
из исходных файлов.
Я думаю, что мне удалось достичь того, что вы пытаетесь сделать. Если вы установите ветку сборки по умолчанию, именно оттуда она будет извлекать файл yaml. Поэтому я нажал «Триггеры» в правом верхнем углу раскрывающегося списка. А затем я нажал «YAML», а под ним нажал «Получить исходные коды», а затем справа переключил ветки, нажав «Ветка по умолчанию для ручных и запланированных сборок».
После этого я проверил это, нажав «Изменить» в конвейере сборки, и моя ветка, назначенная для файла yaml, была правильной, в вашем случае вы сказали DEVOPS. Тогда он все равно должен запустить сборку по той ветке, которую вы указали в файле yaml.