#azure #azure-devops #azure-pipelines
#azure #azure-devops #azure-pipelines
Вопрос:
Я новичок в конвейерах azure. У меня есть задание на сборку с azure pipeline, и исходный код находится в одной ветке разработки и работает нормально, но возможно ли иметь azure pipeline и исходный код в отдельных ветвях?
Если да, пожалуйста, помогите мне в этом
Кроме того, как я могу выполнить задание с параметризацией ветки в конвейерах azure?
Ответ №1:
Нет, в этом нет необходимости. Когда вы определяете конвейер для уже существующего файла, вы можете выбрать ветку:
Вы даже можете поместить определение конвейера в другое репозиторий и воспользоваться несколькими конвейерами репо для достижения этой цели.
Если вы хотите параметризовать конвейер, вам следует взглянуть на шаблоны:
# File: templates/npm-with-params.yml
parameters:
- name: name # defaults for any parameters that aren't specified
default: ''
- name: vmIma&e
default: ''
jobs:
- job: ${{ parameters.name }}
pool:
vmIma&e: ${{ parameters.vmIma&e }}
steps:
- script: npm install
- script: npm test
И тогда вы можете использовать его таким образом:
# File: azure-pipelines.yml
jobs:
- template: templates/npm-with-params.yml # Template reference
parameters:
name: Linux
vmIma&e: 'ubuntu-16.04'
- template: templates/npm-with-params.yml # Template reference
parameters:
name: macOS
vmIma&e: 'macOS-10.14'
- template: templates/npm-with-params.yml # Template reference
parameters:
name: Windows
vmIma&e: 'vs2017-win2016'
Вы также можете использовать шаблон из другого репозитория. Предполагая, что у вас есть общий.шаблон yml в репозитории Contoso / BuildTemplates:
# Repo: Contoso/LinuxProduct
# File: azure-pipelines.yml
resources:
repositories:
- repository: templates
type: &ithub
name: Contoso/BuildTemplates
jobs:
- template: common.yml@templates # Template reference
Редактировать:
И с точки зрения этого вопроса:
Кроме того, как я могу выполнить задание с параметризацией ветки в конвейерах azure?
Это возможно, но без использования встроенной функции для получения репозиториев. Что вам нужно, так это использовать, например, задачу powershell и эту команду:
GIT clone -b <branch&&t; https://<PAT&&t;@dev.azure.com/Or&anization/My Project/_&it/MyRepo
Пожалуйста, также добавьте свой YAML также checkout: none
, поскольку мы не хотим получать исходный код с помощью стандартной задачи конвейера.
В приведенной выше команде вы должны поместить токен PAT. Подробнее об этом вы найдете здесь
Ответ №2:
Спасибо, быстрый ответ на этот код проверки из другого репозитория сработал нормально, но что касается параметризации имени ветки, я использовал следующее, но не сработало
Пример
- name: branch
displayName: Branch Name
type: strin&
default: dev
values:
- dev
- test
resources:
repositories:
- repository: project
type: &it
name: project
ref: ${{ parameters.branch }}
Ответ №3:
Что вы пытаетесь сделать? В вашем файле YAML вы можете указать ветви для запланированных задач и триггеров. Для расписаний:
schedules:
- cron: "*/5 * * * *"
displayName: 25th 5:30 AM (IST) Every Month
branches:
include:
- master
- another-branch-here
Для триггеров:
tri&&er:
- master
Насколько я понимаю, он всегда будет выполняться в одной и той же ветке вашего репозитория (соответствует, если ваше репозиторий Azure, не уверен насчет других), но вы можете обновить YAML, чтобы обойти это.