Упражнение. Создание конвейера
На этом этапе Мара определила конфигурацию сборки для веб-сайта Space Game . Теперь, это твой поворот; Вы создадите конвейер и создадите первый артефакт сборки.
Как вы знаете, Мара использовала файл YAML для определения сборки. При создании конвейера процесс запрашивает файл YAML. В проекте еще нет этого файла.
Если вы не предоставляете исходный файл YAML для проекта, Azure Pipelines может создать его на основе типа приложения. В этом уроке вы скомпилируете приложение ASP.NET Core, однако Azure Pipelines также предоставляет начальные конфигурации сборки для других типов проектов, включая Java, Go и т. д.
Создание конвейера
В Azure DevOps перейдите к проекту.
На странице проекта или на левой панели выберите "Конвейеры".
Выберите "Создать конвейер" (или "Создать конвейер", если этот конвейер не является первым в проекте).
На вкладке "Подключение" выберите GitHub.
При появлении запроса введите свои учетные данные на GitHub.
На вкладке "Выбор " выберите репозиторий mslearn-tailspin-spacegame-web .
Чтобы установить приложение Azure Pipelines, вы можете перенаправиться на GitHub. Если да, прокрутите страницу вниз и выберите "Утвердить" и " Установить".
На вкладке "Настройка" выберите ASP.NET Core.
Примечание.
Если этот параметр не отображается, нажмите кнопку "Показать больше". Не выбирайте ASP.NET Core (платформа .NET Framework).
Снимок экрана выбора ASP.NET Core из списка доступных типов приложений.
На вкладке "Рецензирование" обратите внимание на начальную конфигурацию сборки.
Снимок экрана начальной конфигурации сборки в Azure Pipelines.
Это очень базовая конфигурация, которую Azure DevOps предоставляет на основе типа приложения ASP.NET Core. Конфигурация по умолчанию использует агент, размещенный корпорацией Майкрософт.
Замените текст
vmImage: ubuntu-latest
name: Default
(или имя пула агентов, если вы указали другой пул при настройке секретов репозитория Codespaces).На вкладке "Рецензирование " нажмите кнопку "Сохранить и запустить". Чтобы зафиксировать изменения в GitHub и запустить конвейер, нажмите кнопку "Зафиксировать непосредственно в главную ветвь " и нажмите кнопку "Сохранить" и запустить его во второй раз. Если вам будет предложено предоставить разрешение с таким
This pipeline needs permission to access a resource before this run can continue
сообщением, нажмите кнопку "Вид " и следуйте указаниям, чтобы разрешить доступ.
Наблюдение за выполнением конвейера
В разделе "Задания" выберите "Задание". Затем выполните трассировку процесса сборки с помощью каждого шага. Чтобы просмотреть выходные данные задания в виде текстового файла после завершения сборки, выберите View raw log (Просмотреть журнал необработанных данных).
Если конвейер не запускается быстро, убедитесь, что пространства кода по-прежнему выполняются. Пространства кода завершаются через 30 минут и могут быть перезапущены.
Если состояние конвейера остается в очереди и не переходит на Выполнение через несколько минут, проверьте параллельные задания и запросите бесплатное предоставление. Если у вас нет доступа к параллельным заданиям, можно запустить модуль с помощью Codespaces.
Здесь вы увидите шаги, созданные определением сборки. Он подготавливает виртуальную машину, извлекает последний исходный код из GitHub, а затем создает приложение.
Снимок экрана выходных данных начальной конфигурации сборки в Azure Pipelines.
Эта конфигурация является отличным началом, так как теперь у вас есть место для добавления задач сборки. Вам по-прежнему необходимо обновить его для удовлетворения потребностей команды Tailspin, например для мини-файлов JavaScript и CSS.
Совет
Проверьте электронную почту. Возможно, вы уже получили уведомление о сборке с результатами выполнения. Вы можете использовать эти уведомления, чтобы сообщить членам команды о завершении сборки и о том, передана ли каждая сборка или сбой.
Добавление задач сборки
Теперь, когда у вас есть рабочий процесс сборки, можно приступить к добавлению задач сборки.
Помните, что вы работаете из main
ветви. Чтобы сохранить работу, вы создадите ветвь с именем build-pipeline
. Ветвь предоставляет вам место для экспериментов и получить работу сборки полностью, не влияя на остальную часть команды.
Вы можете добавлять задачи сборки в azure-pipelines.yml непосредственно в Azure Pipelines. Azure Pipelines фиксирует изменения непосредственно в ветви. Здесь вы измените azure-pipelines.yml локально и отправить или отправить изменения в GitHub. Это позволит вам попрактиковаться в навыках Git. Следите за автоматическим созданием приложения при отправке изменений.
На практике можно добавлять задачи сборки по одному за раз, отправлять изменения и наблюдать за выполнением сборки. Здесь вы добавите все задачи сборки, которые мы определили ранее в один раз.
Примечание.
Вы будете выполнять несколько команд Git. Не беспокойтесь, если вы не знакомы с Git. Мы покажем, что делать. Мы также рассмотрим более подробные сведения о Git в будущих модулях.
В Visual Studio Code перейдите в интегрированный терминал. Откройте ветвь
main
своего репозитория, а затем выполните следующие шаги.Чтобы получить последние изменения из GitHub и обновить ветвь
main
, выполните следующуюgit pull
команду.git pull origin main
Как будет видно из выходных данных, Git приносит файл с именем azure-pipelines.yml. Это начальная конфигурация конвейера, созданная azure Pipelines. При настройке конвейера Azure Pipelines добавляет этот файл в репозиторий GitHub.
Чтобы создать ветвь с именем
build-pipeline
, выполните следующую командуgit checkout
:git checkout -B build-pipeline
В Visual Studio Code измените azure-pipelines.yml следующим образом:
trigger: - '*' pool: name: 'Default' # Replace Default with the name of your agent pool if you used a different pool variables: buildConfiguration: 'Release' steps: - task: UseDotNet@2 displayName: 'Use .NET SDK 6.x' inputs: packageType: sdk version: '6.x' - task: Npm@1 displayName: 'Run npm install' inputs: verbose: false - script: './node_modules/.bin/node-sass Tailspin.SpaceGame.Web/wwwroot --output Tailspin.SpaceGame.Web/wwwroot' displayName: 'Compile Sass assets' - task: gulp@1 displayName: 'Run gulp tasks' - script: 'echo "$(Build.DefinitionName), $(Build.BuildId), $(Build.BuildNumber)" > buildinfo.txt' displayName: 'Write build info' workingDirectory: Tailspin.SpaceGame.Web/wwwroot - task: DotNetCoreCLI@2 displayName: 'Restore project dependencies' inputs: command: 'restore' projects: '**/*.csproj' - task: DotNetCoreCLI@2 displayName: 'Build the project - Release' inputs: command: 'build' arguments: '--no-restore --configuration Release' projects: '**/*.csproj'
trigger: - '*' pool: vmImage: ubuntu-latest variables: buildConfiguration: 'Release' steps: - task: UseDotNet@2 displayName: 'Use .NET SDK 6.x' inputs: packageType: sdk version: '6.x' - task: Npm@1 displayName: 'Run npm install' inputs: verbose: false - script: './node_modules/.bin/node-sass Tailspin.SpaceGame.Web/wwwroot --output Tailspin.SpaceGame.Web/wwwroot' displayName: 'Compile Sass assets' - task: gulp@1 displayName: 'Run gulp tasks' - script: 'echo "$(Build.DefinitionName), $(Build.BuildId), $(Build.BuildNumber)" > buildinfo.txt' displayName: 'Write build info' workingDirectory: Tailspin.SpaceGame.Web/wwwroot - task: DotNetCoreCLI@2 displayName: 'Restore project dependencies' inputs: command: 'restore' projects: '**/*.csproj' - task: DotNetCoreCLI@2 displayName: 'Build the project - Release' inputs: command: 'build' arguments: '--no-restore --configuration Release' projects: '**/*.csproj'
В разделе
steps
вы увидите задачи сборки, соответствующие каждой из команд скрипта, которые мы определили ранее.Azure Pipelines предоставляет встроенные задачи сборки, которые сопоставляют многие распространенные действия сборки. Например, задача
DotNetCoreCLI@2
соответствует программе командной строкиdotnet
. Конвейер используетDotNetCoreCLI@2
два раза: один раз для восстановления или установки зависимостей проекта и один раз для сборки проекта.Помните, что не все действия сборки сопоставляют со встроенной задачей. Например, нет встроенной задачи, которая запускает служебную программу node-Sass или записывает сведения о сборке в текстовый файл. Для выполнения общих системных команд используйте задачу
CmdLine@2
илиscript
. Конвейер использует задачуscript
, так как это стандартный ярлык дляCmdLine@2
.На шаге сборки, который записывает сведения о сборке в файл, обратите внимание на следующие элементы:
$(Build.DefinitionName)
$(Build.BuildId)
$(Build.BuildNumber)
Это встроенные переменные, которые система предоставляет для использования в конвейерах:
$(Build.DefinitionName)
— это имя конвейера сборки. Например, SpaceGame-Web-CI.$(Build.BuildId)
— это числовой идентификатор завершенной сборки, например 115.$(Build.BuildNumber)
— имя завершенной сборки. Вы можете настроить формат, но по умолчанию номер сборки содержит текущую дату, после которой идет номер сборки за этот день. Примером номера сборки является "20190329.1".
Вы также можете определить собственные переменные, которые будут выполняться в ближайшее время.
Возможно, вы также заметили
UseDotNet@2
задачу, которая является первым шагом сборки. Мара вспомнила, что скрипт сборки не установил необходимые средства сборки. Хотя агент сборки поставляется с несколькими версиями пакета SDK для .NET, эта задача позволяет автору конвейера легко указать версию, необходимую для агента сборки.В интегрированном терминале выполните следующие команды Git, чтобы добавить azure-pipelines.yml в индекс, зафиксировать изменение и отправить изменение в GitHub. Эти этапы аналогичны тем, что вы выполняли ранее.
Совет
Прежде чем выполнять эти команды Git, не забудьте сохранить azure-pipelines.yml.
git add azure-pipelines.yml git commit -m "Add build tasks" git push origin build-pipeline
На этот раз вы отправляете ветвь
build-pipeline
, а неmain
, на GitHub.Отправка ветви на GitHub активирует процесс сборки в Azure Pipelines.
В Azure Pipelines перейдите к сборке. Для этого на стороне страницы выберите конвейеры, а затем выберите конвейер. Вы увидите сообщение о фиксации и выполнение сборки с использованием кода из ветви
build-pipeline
.Снимок экрана журнала выполнения Azure Pipelines с ветвью, недавно отправленной в GitHub.
Совет
Если вы не видите сборку, подождите некоторое время или обновите страницу.
Выберите сборку и выберите задания и трассировку задач сборки при выполнении.
Например, вот что происходит при
gulp@1
выполнении задачи для выполнения задач gulp, которые миниифицируют ресурсы JavaScript и CSS:Снимок экрана трассировки задач gulp в Azure Pipelines.
При сбое любого шага в выходных данных отображается ошибка, позволяя вам продиагностировать и устранить сбой.
Ранее вы выполнили более минимальную конфигурацию сборки. На этот раз, когда сборка завершится, вы увидите более полный набор задач, необходимых для создания приложения.
Снимок экрана Azure Pipelines с полным списком задач сборки.
После завершения сборки выберите любой из шагов, чтобы увидеть общую прогрессию сборки. После этого можно перейти к журналам сборки или связанному изменению на GitHub.
Снимок экрана: Azure Pipelines с полным списком задач сборки. Выбрана задача Run gulp.