Рубрики
Uncategorized

Построение определений VSTS YAML со Sparrowdo

Как сгенерировать код YAML для определений по сборке VSTS с помощью инструмента Sparrowdo. Tagged с VSTS, Perl6, DevOps, Microsoft.

Сегодня VSTS предоставляет Yaml DSL создавать определения сборки вместо того, чтобы создавать их в веб -интерфейсе.

Мне нравится эта идея, хотя поддержание кода YAML для более одного проекта быстро становится утомительным. Microsoft предлагает несколько помощников на этой дороге, например, Шаблоны Чтобы повторно использовать свои определения сборки, но позвольте мне показать разумную альтернативу.

Sparrowdo:: VSTS является подмножеством модулей Sparrowdo для Boostrap/Generate YAML для ваших определений сборки VSTS. Sparrowdo Сам сам по себе является гибким и мощным инструментом управления и управления задачами/конфигурацией, созданным на плечах Perl5/Perl6.

Первоначально Sparrowdo был написан в качестве инструмента управления конфигурацией для запуска удаленных сценариев SSH, однако Sparrowdo можно было легко преобразовать в локальный бегун задачи, установив пару опций:

$ sparrowdo --local_mode --no_sudo

Это заставляет клиент Sparrowdo работать в локальном режиме (на локальном хосте) и опускает Sudo При выполнении команд, поскольку это не требуется для задач генерации кода.

Основная идея подхода состоит в том, чтобы создать генератор кода для определений сборки YAML, вместо этого для создания YAML вручную. Используя высокие абстракции Perl6 Perl6, можно сгенерировать определение кода YAML ( build.yaml ), а затем совершить изменения в репозитории GIT и, наконец, запустить сборку с помощью сгенерированного файла определения сборки.

Следуя схематической картине общего дизайна:

1. Sparrowdo generator ( sparrowfile ):


+-----------------------------------------+
|                                         |
|  < build header >                       |
|      agent-info                         |
|      repo-info                          |
+-----------------------------------------+
|  < tasks >                              |
|                                         |
|      task1 <===> Sparrowdo Module Call  |
|      task2 <===> Sparrowdo Module Call  |
|      task3 <===> Sparrowdo Module Call  |
|      task4 <===> Sparrowdo Module Call  |
|      task5 <===> Sparrowdo Module Call  |
|      ... so on                          |
+-----------------------------------------+


2. Outcome => build.yaml file ( build definition )


Каждое определение сборки YAML должно содержать важную информацию о том, где запустить сборку, мы называем его заголовком сборки, он Sparrowdo представление такого Sparrowdo:: VSTS:: Yaml:: Модуль сборки:

$ nano sparrowfile


#!perl6

module_run "VSTS::YAML::Build", %(
  build-dir => "cicd/build",
  agent-name => "BuildServer01", # default value is not set
  queue => "Queue01",
  timeout => 10, # build timeout 10 minutes, this is default value
);


Мы определяем все необходимые и дополнительные параметры, как и функция Perl6, другие шаги будут выражены одинаково. Здесь мы хотим создать нашу сборку на агенте под названием «Builderver01», в очереди под названием «queue01», с максимальным временем выполнения 10 минут.

Как я уже говорил, каждая задача VSTS — это просто правильный Sparrowdo:: VSTS::* Вызов модуля, рассмотрите простой сценарий, чтобы построить dotnet Проект и публикация артефактов в хранилище VSTS, это подразумевает следующие шаги:

  1. исходный код проверки (обеспечивается самим VSTS)
  2. Установить зависимости Nuget и Nuget
  3. Строить решение
  4. Публикация артефактов

Ниже приведены данные о реализации:

Установить зависимости Nuget и Nuget

$ nano sparrowfile

#!perl6

module_run "VSTS::YAML::Nuget", %(
  build-dir => "cicd/build",
  working-folder => ".", # path to project
  solution => "app.sln", # path to solution file, default value
);


Строить решение

$ nano sparrowfile


#!perl6

module_run "VSTS::YAML::Solution", %(
  vs-version  => '15.0', # visual  studio version, default value
  build-dir => "cicd/build",
  solution => "app.sln", # path to solution file, default is "**\*.sln"
  platform => "x86",
  configuration => "debug",
  restore-solution => "app.sln", # path to NugetRestore solution file
  test-assemblies => True, # run tests, default value is False
  publish-symbols => False, # publish symbols, this is default value
);


Публикация артефактов

$ nano sparrowfile

#!perl6

module_run "VSTS::YAML::Artifact", %(
  build-dir => "cicd/build",
  artifact-name => "drop",
  path => "'\$(build.artifactstagingdirectory)'",
  publish-location => "Container" # default value
);


Вот как мы создаем определение сборки YAML с царапины:

$ git clone $repo-url app && cd app # cloning source code of application to build

$ zef install Sparrowdo::VSTS::YAML::Build Sparrowdo::VSTS::YAML::Nuget Sparrowdo::VSTS::YAML::Solution Sparrowdo::VSTS::YAML::Artifact # Install proper Sparrowdo modules


$ nano sparrowfile # create build scenario mentioned in previous paragraphs


$ mkdir -p cicd/build # create directory to hold internal build files


$ sparrowdo --local_mode --no_sudo # generate build definition


$ echo ".cache" >> .gitingore # ask git to skip .cache files inside cicd/build dir


$ git add sparrowfile cicd/ .gitingore  && git commit -a -m "YAML build definition" # commit outcome

$ git push # push changes


Вы можете перейти в веб -интерфейс VSTS и создать конвейер на основе YAML, указанный cicd/build/build.yaml Как сценарий сборки, мы все готовы!

Оригинал: «https://dev.to/melezhik/building-vsts-yaml-definitions-with-sparrowdo-3opd»