Скелет для конвейера CI / CD как определение YAML - PullRequest
0 голосов
/ 10 июня 2019

Я пытаюсь создать файл определения yaml для простого конвейера CI / CD в DevOps Azure.

Мой конвейер должен выглядеть следующим образом: enter image description here

  1. Можно ли определить весь рабочий процесс в одном файле определения с различными этапами и заданиями?

  2. Как определить, какой проект (какой GITПодпуть вызвал сборку) изменился, чтобы продолжить рабочий процесс проекта A / B?

  3. Первый рабочий процесс с проектом A кажется мне выполнимым.Я могу запустить команду sc вместе с runsas или psexec, чтобы запустить / остановить службу и использовать задачу копирования файла.Но как я могу инициировать публикацию веб-приложения ASP.NET в локальный каталог (как я сделал бы с VS-> Publish-> Local Folder)?

  4. После этого я думаю, что этоСамый простой способ использовать сценарии для замены содержимого, установить пакеты npm для минимизации и объединения файлов js / css и загрузить их на FTP-сервер.Или какие-нибудь лучшие / более простые идеи?

Если вы, ребята, можете поддержать меня, создав первоначальное определение yaml только для рабочего процесса без подробностей задач, я был бы очень признателен.Возможно, у меня появится более четкое видение, если вы сможете ответить на мои вопросы выше.

На данный момент у меня есть очень простой файл начальной сборки:

# ASP.NET
# Build and test ASP.NET projects.
# Add steps that publish symbols, save build artifacts, deploy, and more:
# https://docs.microsoft.com/azure/devops/pipelines/apps/aspnet/build-aspnet-4

trigger:
- master # for a productive deployment after manual approval
- develop # for a automatic test deployment

pool:
  vmImage: 'windows-latest'

variables:
  solution: '**/*.sln'
  buildPlatform: 'Any CPU'
  buildConfiguration: 'Release'

steps:
- task: NuGetToolInstaller@0

- task: NuGetCommand@2
  inputs:
    restoreSolution: '$(solution)'
    feedsToUse: 'select'
    vstsFeed: 'tpcemedia'

- task: VSBuild@1
  inputs:
    solution: '$(solution)'
    msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactStagingDirectory)"'
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'

1 Ответ

1 голос
/ 10 июня 2019
  1. Нет, релизы в yaml пока недоступны.Вы можете иметь этапы сборки \ задания, но нет смысла использовать их в таком простом случае

  2. Yaml имеет фильтр триггера пути , просто настройтесборка для приложения.Не нужно усложнять сборку условиями.сделать что-то вроде этого:

build1:

trigger:
  paths:
    include: src/proj1/*

build2:

trigger:
  paths:
    include: src/proj2/*

Лучше разделить релиз и сборку, таким образом ваш агент релизов будет находиться непосредственно на сервере и сможет перезапускать сервис локально без необходимости доступа к сети (и его более безопасного).Кроме того, он будет извлекать артефакты, сгенерированные агентом сборки "бесплатно".

Зачем использовать ftp, просто используйте шаг (ы) публикации публикаций, гораздо проще.

...