Рубрики
Uncategorized

Как развернуть в IIS, используя Azure DevOps YAML Pipelines

Этот блог предназначен как практическое руководство о том, как развернуть в IIS на виртуальной машине с помощью Azure … Помечено с Azure, Devops, Microsoft, IIS.

Этот блог предназначен в качестве практического руководства о том, как развернуть в IIS на виртуальной машине с помощью Azure DevOps YAML-трубопроводы. Если вы хотите прочитать больше о Azure DEVOPS, и преимущества DEVOPS Проверьте это: https://docs.microsoft.com/en-us/azure/devops/pipelines/?view=azure-devops

Некоторые предположения, прежде чем мы начнем:

  • У вас есть доступ к серверу, который вы хотите развернуть и администратор доступа к PowerShell.
  • У вас есть доступ к Интернету на удаленном сервере, который вы хотите развернуть.
  • У вас есть Admin Access для установки .NET Core Hosting Bundle на сервере.
  • Вы можете создавать среды, нажать код на репо и создавать трубопроводы.
  • У вас есть API .NET CORE для развертывания.

Создание окружающей среды

  1. Перейти к трубопроводам, а затем выберите среды.

  2. Выберите Создать среду.

  3. Введите имя окружающей среды, введите описание и Выберите виртуальные машины и нажмите Далее.

  1. Затем выберите универсальный провайдер в раскрывающемся списке и выберите Windows в качестве операционной системы. Затем вы можете скопировать сценарий регистрации с помощью значка копирования.
  1. Откройте административный терминал PowerShell на Windows Машина, которую вы хотите развернуть, вставьте сценарий регистрации в терминал и запустить скрипт. Этот шаг обычно занимает пока.

  2. Когда агент сделан загрузкой, вам будет предложено, если вы Хотите добавить тег на машину. Это не требуется, если там это одна машина в среде, но вам нужно будет добавить Связанные теги Если у вас есть несколько машин в окружающая обстановка.

  3. Затем вам будет предложено спросить, хотите ли вы расстегнуть для каждого Задача, которая не требуется — так что вы можете сказать нет.

  4. Затем вам будет предложено ввести учетную запись пользователя для агента Бег на машине. Вы можете оставить его как по умолчанию или создать Новая учетная запись услуг, при котором будет запущен агент.

Когда вашему агенту создается успех, вы сможете вернуться к Azure DEVOPS и посмотреть вашу виртуальную машину, добавленную в качестве ресурса в окружающей среде!

Создание стадии сборки

  1. Перейти к трубопроводам, а затем выберите трубопроводы.

  2. Выберите Создать трубопровод и подключитесь к источнику вашего приложения код.

  1. Выберите, чтобы показать больше на шаге конфигурирования трубопровода, затем выберите ядро ASP.NET.
  1. Затем у вас будет базовый трубопровод для приложений ASP.NET Core, вы можете добавить сцену сборки, добавив следующий фрагмент кода:
trigger:
- master

pool:
  vmImage: ubuntu-latest

variables:
  buildConfiguration: 'Release'

  #Replace these variables to suit your application
  projectName: 'WeatherService'
  websiteName: 'WeatherService'
  appPoolName: 'WeatherService'

stages:
- stage: 'Build'
  displayName: 'Build'
  jobs:
     - job: 
       steps:  
        - task: DotNetCoreCLI@2
          displayName: 'dotnet restore'
          inputs:
            command: 'restore'
            projects: '*.sln'

        - task: DotNetCoreCLI@2
          displayName: Build
          inputs:
            command: 'build'
            projects: '*.sln'
            arguments: --configuration Release

        - task: DotNetCoreCLI@2
          displayName: Test
          inputs:
            command: test
            projects: '*.sln'
            arguments: '--configuration $(BuildConfiguration)'

        - 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
  1. Замените переменные вверху, чтобы удовлетворить ваше приложение, заменив имя пула приложения, имени сайта и имени проекта с деталями вашего проекта.
  2. Затем вы можете нажать Сохранить и запустить, чтобы устроить конвейер, который создает ваше приложение.

Создать выпуск трубопровода

  1. Перейдите на трубопроводы и выберите трубопроводы.
  2. Вы увидите созданный вами трубопровод, в левой части вашего трубопровода выберите «Дополнительные параметры», а затем выберите «Редактировать».
  3. Ваш трубопровод будет загружен, то вы можете добавить следующий код YAML в свой трубопровод:
- stage: 'Dev'
  displayName: 'Dev'
  dependsOn: 'Build'
  condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/master'))
  jobs:
   - deployment: Dev
     displayName: Dev
     environment: 
       name: 'Dev'    
       resourceType: VirtualMachine
     variables:
     - name: websitePhysicalPath
       value: '%SystemDrive%\inetpub\wwwroot\$(websiteName)'

     strategy:
      runOnce:
        deploy:
          steps: 
          - task: IISWebAppManagementOnMachineGroup@0
            inputs:            
              IISDeploymentType: 'IISWebsite'
              ActionIISWebsite: 'CreateOrUpdateWebsite'
              WebsiteName: '$(websiteName)'
              WebsitePhysicalPath: '$(websitePhysicalPath)'
              WebsitePhysicalPathAuth: 'WebsiteUserPassThrough'
              CreateOrUpdateAppPoolForWebsite: true
              AppPoolNameForWebsite: '$(appPoolName)'
              DotNetVersionForWebsite: 'No Managed Code'
              PipeLineModeForWebsite: 'Integrated'
              AppPoolIdentityForWebsite: 'ApplicationPoolIdentity'
              AddBinding: true
              Bindings: |
                  {
                      bindings:[
                          {
                              "protocol":"http",
                              "ipAddress":"",
                              "hostname":"",
                              "port":"80",
                              "sslThumbprint":"",
                              "sniFlag":false
                          }
                      ]
                  }
          - task: IISWebAppDeploymentOnMachineGroup@0
            inputs:
              WebSiteName: '$(websiteName)'
              Package: '$(Pipeline.Workspace)/drop/$(buildConfiguration)/$(projectName).zip'

  1. После добавления скрипта выберите Сохранить и запустите, вы сможете отпустить его в среду, которую вы создали ранее.

Реконструировать

Когда вы сделали свой скрипт, он должен выглядеть что-то подобное:

trigger:
- master

pool:
  vmImage: ubuntu-latest

variables:
  buildConfiguration: 'Release'
  projectName: 'WeatherService'
  websiteName: 'WeatherService'
  appPoolName: 'WeatherService'

stages:
- stage: 'Build'
  displayName: 'Build'
  jobs:
     - job: 
       steps:  
        - task: DotNetCoreCLI@2
          displayName: 'dotnet restore'
          inputs:
            command: 'restore'
            projects: '*.sln'

        - task: DotNetCoreCLI@2
          displayName: Build
          inputs:
            command: 'build'
            projects: '*.sln'
            arguments: --configuration Release

        - task: DotNetCoreCLI@2
          displayName: Test
          inputs:
            command: test
            projects: '*.sln'
            arguments: '--configuration $(BuildConfiguration)'

        - 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: 'Dev'
  displayName: 'Dev'
  dependsOn: 'Build'
  condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/master'))
  jobs:
   - deployment: Dev
     displayName: Dev
     environment: 
       name: 'Dev'    
       resourceType: VirtualMachine
     variables:
     - name: websitePhysicalPath
       value: '%SystemDrive%\inetpub\wwwroot\$(websiteName)'

     strategy:
      runOnce:
        deploy:
          steps: 
          - task: IISWebAppManagementOnMachineGroup@0
            inputs:            
              IISDeploymentType: 'IISWebsite'
              ActionIISWebsite: 'CreateOrUpdateWebsite'
              WebsiteName: '$(websiteName)'
              WebsitePhysicalPath: '$(websitePhysicalPath)'
              WebsitePhysicalPathAuth: 'WebsiteUserPassThrough'
              CreateOrUpdateAppPoolForWebsite: true
              AppPoolNameForWebsite: '$(appPoolName)'
              DotNetVersionForWebsite: 'No Managed Code'
              PipeLineModeForWebsite: 'Integrated'
              AppPoolIdentityForWebsite: 'ApplicationPoolIdentity'
              AddBinding: true
              Bindings: |
                  {
                      bindings:[
                          {
                              "protocol":"http",
                              "ipAddress":"",
                              "hostname":"",
                              "port":"80",
                              "sslThumbprint":"",
                              "sniFlag":false
                          }
                      ]
                  }
          - task: IISWebAppDeploymentOnMachineGroup@0
            inputs:
              WebSiteName: '$(websiteName)'
              Package: '$(Pipeline.Workspace)/drop/$(buildConfiguration)/$(projectName).zip'

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

Когда вы ориентируетесь на трубопроводы, он должен выглядеть что-то подобное:

Вы также можете взглянуть на этот пример репозитории: https://github.com/Bassonrichard/AzureDevopsIISDEploy

Когда вы выпускаете это, у вас будет установлена настройка трубопровода DEVOPS с использованием трубопроводов YAML, сделав ваше решение для будущего с помощью простотой развертывания вашего решения.

Оригинал: «https://dev.to/bassonrichard/how-to-deploy-to-iis-using-azure-devops-yaml-pipelines-36ib»