как ограничить доступ к файлу build.yml от разработчиков в хранилище DevOps Azure - PullRequest
3 голосов
/ 04 ноября 2019

В Azure DevOps мы создали конвейер сборки и выпуска с использованием классического способа, и теперь мы планируем преобразовать его в файл yaml.

Но, похоже, в методе yaml код можно поместить только вкорень репозитория, где мы хотим хранить файлы сборки yaml в отдельном репозитории, к которому у разработчиков не будет доступа.

Как этого добиться?

Ответы [ 3 ]

5 голосов
/ 04 ноября 2019

Вы можете использовать шаблоны , поместить в основной репо только минимальный yalm, который относится к шаблону со всеми этапами, шаблон выходит из другого репо.

Например,Ваш главный репо yaml:

resources:
  repositories:
    - repository: templates
      type: git
      name: Contoso/BuildTemplates

jobs:
- template: common.yml@templates  # Template reference

В репо: Contoso / BuildTemplates поместите полный yaml:

# Repo: Contoso/BuildTemplates
# File: common.yml
parameters:
  vmImage: 'ubuntu 16.04'

jobs:
- job: Build
  pool:
    vmImage: ${{ parameters.vmImage }}
  steps:
  - script: npm install
  - script: npm test

Ограничить доступ ко второму репо (если толькопользователь конвейера агента).

Читать здесь больше информации о ресурсах.

2 голосов
/ 04 ноября 2019

Вам не нужно хранить файлы YAML в корне репозитория;наши находятся в отдельной подпапке:

Example of a YAML pipeline file in a subfolder

Это очень важно, потому что это означает, что мы можем добавить PR-политику, которая ограничивает тех, кто может утверждать изменения влюбой из конвейерных YAML-файлов.

1 голос
/ 04 ноября 2019

Я согласен, что одним из решений может быть решение, предложенное @Shayki Abramczyk

, но чтобы иметь автономный * .yml в выделенном репозитории, вы можете использовать 'git clone', используя 'Git Credentials' для доступа к другому. репозиторий, содержащий файлы, которые вы хотите построить конвейером.

Если ваш репозиторий, предназначенный для * .yml, находится в том же проекте Azure Devops, у вас не должно возникнуть проблем с определением выпуска.

Пожалуйста, посмотрите пример * .yml, который работает для нас, как описано:

pool:
  vmImage: 'your-preferred-image'

variables:
  solution: '$(Agent.BuildDirectory)/**/YourSolution.sln'
  buildPlatform: 'Any CPU'
  buildConfiguration: 'Debug'
  urlWithCreds: 'https://YourUser:YourPassword@dev.azure.com/YourOrganization/YourProject/
    _git/YourOtherRepository'

steps:
- task: CmdLine@2
  inputs:
    script: |
      git --version
      git clone --quiet $(urlWithCreds)
      git checkout master

- task: VSBuild@1
  inputs:
    solution: '$(solution)'
    msbuildArgs: 'your build args'
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'
...