Упражнение. Развертывание веб-приложения в Службе приложений Azure
В этом модуле вы создадите конвейер с несколькими этапами для создания и развертывания приложения в Службе приложений Azure. Вы узнаете, как:
- Создайте экземпляр службы приложений для размещения веб-приложения.
- Создайте конвейер с несколькими этапами.
- Развертывание в Службе приложений Azure.
Создайте экземпляр службы приложений
Войдите на портал Azure.
Выберите службы приложений на левой панели.
Выберите "Создать>веб-приложение" , чтобы создать новое веб-приложение.
На вкладке "Основные сведения" введите следующие значения.
Настройки Ценность Сведения о проекте Подписка подписка Группа ресурсов Нажмите кнопку "Создать", а затем введите tailspin-space-game-rg и нажмите кнопку "ОК". Сведения об экземпляре Имя Укажите уникальное имя, например tailspin-space-game-web-1234. Это имя должно быть уникальным в Azure. Он становится частью доменного имени. На практике выберите имя, описывающее службу. Запишите имя для дальнейшего использования. Опубликовать Код Стек выполнения программы .NET 8 (LTS) Операционная система Линукс Регион Выберите регион, предпочтительнее один близко к вам. Планы ценообразования План Linux Примите значение по умолчанию. Тарифный план Выберите ценовую категорию "Базовый B1" в раскрывающемся меню. Выберите "Просмотр и создание", просмотрите форму и нажмите кнопку "Создать". Развертывание занимает несколько минут.
После завершения развертывания выберите "Перейти к ресурсу". Сервис App Service Essentials отображает сведения, связанные с вашим развертыванием.
Выберите URL-адрес, чтобы проверить состояние службы приложений.
Это важно
На странице "Очистка среды Azure DevOps" в этом модуле объясняется, как удалить экземпляр службы приложений после завершения работы с ним. Очистка помогает убедиться в том, что после завершения работы с этим модулем с вас не будут взиматься платы за ресурсы Azure. Следуйте инструкциям по очистке, даже если этот модуль не завершен.
Создание подключения к службе
Это важно
Убедитесь, что вы вошли в Azure и Azure DevOps в той же учетной записи Майкрософт.
В Azure DevOps перейдите в проект Space Game - web - Release.
В нижнем левом углу страницы выберите параметры проекта .
В разделе "Конвейерные процессы" выберите Подключения Службы.
Выберите "Создать подключение службы", а затем выберите Azure Resource Manager и нажмите кнопку "Далее".
Выберите служебный принципал (автоматически), а затем Далее.
Заполните необходимые поля следующим образом: при появлении запроса войдите в учетную запись Майкрософт.
Поле Ценность Уровень области Подписка Подписка Ваша подписка Azure Группа ресурсов tailspin-space-game-rg Имя соединения с сервисом Resource Manager — Tailspin — Space Game Убедитесь, что выбрано предоставление доступа ко всем конвейерам.
Нажмите кнопку "Сохранить".
Добавьте этап сборки в конвейер
Конвейер с несколькими этапами позволяет определить различные этапы, через которые выполняется изменение, так как оно продвигается через конвейер. Каждый этап определяет агент, переменные и шаги, необходимые для выполнения этого этапа конвейера. В этом разделе описано, как определить один этап выполнения сборки. Вы определяете второй этап развертывания веб-приложения в Службе приложений.
Чтобы преобразовать существующую конфигурацию сборки в многоэтапный конвейер, добавьте stages
раздел в конфигурацию, а затем добавьте один или несколько stage
разделов для каждого этапа конвейера. Этапы разделяются на задачи, представляющие собой ряд последовательных шагов, которые выполняются как единое целое.
В проекте в Visual Studio Code откройте azure-pipelines.yml и замените его содержимое следующим кодом:
trigger: - '*' variables: buildConfiguration: 'Release' stages: - stage: 'Build' displayName: 'Build the web application' jobs: - job: 'Build' displayName: 'Build job' pool: vmImage: 'ubuntu-20.04' demands: - npm variables: wwwrootDir: 'Tailspin.SpaceGame.Web/wwwroot' dotnetSdkVersion: '6.x' steps: - task: UseDotNet@2 displayName: 'Use .NET SDK $(dotnetSdkVersion)' inputs: version: '$(dotnetSdkVersion)' - task: Npm@1 displayName: 'Run npm install' inputs: verbose: false - script: './node_modules/.bin/node-sass $(wwwrootDir) --output $(wwwrootDir)' 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: $(wwwrootDir) - task: DotNetCoreCLI@2 displayName: 'Restore project dependencies' inputs: command: 'restore' projects: '**/*.csproj' - task: DotNetCoreCLI@2 displayName: 'Build the project - $(buildConfiguration)' inputs: command: 'build' arguments: '--no-restore --configuration $(buildConfiguration)' projects: '**/*.csproj' - task: DotNetCoreCLI@2 displayName: 'Publish the project - $(buildConfiguration)' inputs: command: 'publish' projects: '**/*.csproj' publishWebProjects: false arguments: '--no-build --configuration $(buildConfiguration) --output $(Build.ArtifactStagingDirectory)/$(buildConfiguration)' zipAfterPublish: true - publish: '$(Build.ArtifactStagingDirectory)' artifact: drop
В интегрированном терминале выполните следующие команды для добавления в индекс, фиксации изменений и отправки ваших изменений в удаленную ветвь.
git add azure-pipelines.yml git commit -m "Add a build stage" git push origin release-pipeline
В Azure Pipelines перейдите к конвейеру, чтобы просмотреть журналы.
После завершения сборки нажмите кнопку "Назад", чтобы вернуться на страницу сводки и проверить состояние конвейера и опубликованного артефакта.
Создание среды разработки
Среда — это абстрактное представление вашей среды развертывания. Вы можете использовать среды для определения конкретных критериев выпуска, например, какой конвейер имеет разрешение на развертывание в данной среде. Вы также можете использовать среды для настройки утверждений вручную для конкретного пользователя или группы для утверждения перед возобновлением развертывания.
В Azure Pipelines выберите "Среды".
Выберите "Создать среду".
В разделе "Имя" введите dev.
Оставьте оставшиеся поля по умолчанию.
Нажмите кнопку "Создать".
Сохранение имени веб-приложения в переменной конвейера
Этап развертывания , который мы создаем, использует имя для идентификации экземпляра службы приложений для развертывания; например, tailspin-space-game-web-1234.
Хотя вы можете жестко закодировать это имя в конфигурации конвейера, определение его как переменной делает конфигурацию более повторно используемой.
В Azure DevOps выберите конвейеры и выберите библиотеку.
Выберите +Группа переменных , чтобы создать новую группу переменных.
Введите Release для имени группы переменных.
Выберите "Добавить " в разделе "Переменные" , чтобы добавить новую переменную.
Введите WebAppName для имени переменной и имени экземпляра службы приложений для его значения: например, tailspin-space-game-web-1234.
Нажмите кнопку "Сохранить".
Добавьте этап развертывания в конвейер
Мы расширяем наш конвейер, добавив этап развертывания для развертывания Space Game в Службе приложений с помощью download
и AzureWebApp@1
задач, чтобы скачать артефакт сборки, а затем развернуть его.
Из Visual Studio Code замените содержимое azure-pipelines.yml следующим YAML-кодом.
trigger: - '*' variables: buildConfiguration: 'Release' stages: - stage: 'Build' displayName: 'Build the web application' jobs: - job: 'Build' displayName: 'Build job' pool: vmImage: 'ubuntu-20.04' demands: - npm variables: wwwrootDir: 'Tailspin.SpaceGame.Web/wwwroot' dotnetSdkVersion: '6.x' steps: - task: UseDotNet@2 displayName: 'Use .NET SDK $(dotnetSdkVersion)' inputs: version: '$(dotnetSdkVersion)' - task: Npm@1 displayName: 'Run npm install' inputs: verbose: false - script: './node_modules/.bin/node-sass $(wwwrootDir) --output $(wwwrootDir)' 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: $(wwwrootDir) - task: DotNetCoreCLI@2 displayName: 'Restore project dependencies' inputs: command: 'restore' projects: '**/*.csproj' - task: DotNetCoreCLI@2 displayName: 'Build the project - $(buildConfiguration)' inputs: command: 'build' arguments: '--no-restore --configuration $(buildConfiguration)' projects: '**/*.csproj' - task: DotNetCoreCLI@2 displayName: 'Publish the project - $(buildConfiguration)' inputs: command: 'publish' projects: '**/*.csproj' publishWebProjects: false arguments: '--no-build --configuration $(buildConfiguration) --output $(Build.ArtifactStagingDirectory)/$(buildConfiguration)' zipAfterPublish: true - publish: '$(Build.ArtifactStagingDirectory)' artifact: drop - stage: 'Deploy' displayName: 'Deploy the web application' dependsOn: Build jobs: - deployment: Deploy pool: vmImage: 'ubuntu-20.04' environment: dev variables: - group: Release strategy: runOnce: deploy: steps: - download: current artifact: drop - task: AzureWebApp@1 displayName: 'Azure App Service Deploy: website' inputs: azureSubscription: 'Resource Manager - Tailspin - Space Game' appName: '$(WebAppName)' package: '$(Pipeline.Workspace)/drop/$(buildConfiguration)/*.zip'
Обратите внимание на выделенный раздел и то, как мы используем задачи
download
иAzureWebApp@1
. Конвейер извлекает$(WebAppName)
из созданной ранее группы переменных.Также обратите внимание, как мы используем
environment
для развертывания в среде разработки.В интегрированном терминале добавьте azure-pipelines.yml в индекс. Затем зафиксируйте изменение и отправьте его в GitHub.
git add azure-pipelines.yml git commit -m "Add a deployment stage" git push origin release-pipeline
В Azure Pipelines перейдите к конвейеру, чтобы просмотреть журналы.
После завершения сборки нажмите кнопку "Назад", чтобы вернуться на страницу сводки и проверить состояние этапов. Оба этапа успешно завершились в нашем случае.
Просмотр развернутого веб-сайта в службе приложений
Если у вас по-прежнему открыта вкладка "Служба приложений", обновите страницу. В противном случае перейдите в службу приложений Azure на портале Azure и выберите URL-адрес экземпляра: например,
https://tailspin-space-game-web-1234.azurewebsites.net
Веб-сайт Space Game успешно развернут в Службе приложений Azure.
Поздравляю! Вы успешно развернули веб-сайт Space Game в Службе приложений Azure с помощью Azure Pipelines.