Конвейеры Azure: обязательно ли иметь конвейеры azure и код в одной ветке

#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, чтобы обойти это.