Как настроить мой конвейер 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.

Другие вопросы по тегам