Разверните веб-задание Azure в правильном месте с помощью файла YAML

Что я пытаюсь сделать?

Создайте один файл YAML, который создает и развертывает службу как веб-задание внутри местоположения веб-заданий в расположении веб-заданий службы приложений.

У меня есть один YAML-код, который создает и развертывает консольное приложение рабочей службы в качестве веб-задания Azure в службе приложений.

Сборка прошла успешно, и развертывание также прошло успешно, однако веб-задание не размещается в нужном месте.

Я хочу, чтобы это было развернуто внутри сайта-> задания -> непрерывное-> имя веб-задания, но оно развертывается в сайт-> wwwroot-> имя веб-задания.

trigger:    
  branches:    
    include:    
      - main    
  paths

    include:

      - MyTestJobJob/MyTestJobService.cs

pool:    
  vmImage: 'windows-latest'
variables:   
  buildConfiguration: 'Release'
  devWebAppName: 'MyTestJobJobDev'
  resourceGroupName: 'MyRG' 
  webJobName: 'MyTestJobJob'    

stages:

- stage: Build

  jobs:

  - job: Build

    steps:

    - task: UseDotNet@2

      inputs:

        packageType: 'sdk'

        version: '8.x'

        installationPath: $(Agent.ToolsDirectory)/dotnet

 

    - task: DotNetCoreCLI@2

      inputs:

        command: 'restore'

        projects: '**/*.csproj'

 

    - task: DotNetCoreCLI@2

      inputs:

        command: 'build'

        projects: '**/*.csproj'

        arguments: '--configuration $(buildConfiguration)'

 

    - task: DotNetCoreCLI@2

      inputs:

        command: 'publish'

        projects: 'MyTestJobJob/MyTestJobJob.csproj'

        arguments: '--configuration $(buildConfiguration) --output $(Build.ArtifactStagingDirectory)/publish_output/App_Data/jobs/continuous/$(webJobName)'

        publishWebProjects: false

        modifyOutputPath: false

        zipAfterPublish: false

 

    - task: DotNetCoreCLI@2

      inputs:

        command: 'publish'

        projects: 'MyTestJobJob/MyTestJobJob.csproj'

        arguments: '--configuration $(buildConfiguration) --output $(Build.ArtifactStagingDirectory)/publish_output'

        publishWebProjects: false

        modifyOutputPath: false

        zipAfterPublish: false

 

    - task: ArchiveFiles@2

      inputs:

        rootFolderOrFile: '$(Build.ArtifactStagingDirectory)'

        includeRootFolder: false

        archiveType: 'zip'

        archiveFile: '$(Build.ArtifactStagingDirectory)/MyTestJobJob.zip'

        replaceExistingArchive: true

 

    - task: PublishBuildArtifacts@1

      inputs:

        PathtoPublish: '$(Build.ArtifactStagingDirectory)/MyTestJobJob.zip'

        ArtifactName: 'drop'

        publishLocation: 'Container'

 

- stage: DeployToDev

  dependsOn: Build

  jobs:

  - deployment: DeployToDev

    environment: 'Dev'

    strategy:

      runOnce:

        deploy:

          steps:

          - download: current

            artifact: drop

 

          - task: AzureWebApp@1

            inputs:

              azureSubscription: 'MyAZSubscription' # Pushes changes to the webjob

              appName: '$(devWebAppName)'

              package: '$(Pipeline.Workspace)/drop/MyTestJobJob.zip'

              resourceGroupName: '$(resourceGroupName)'

              webJobName: '$(webJobName)'

              webJobType: 'Continuous'

              publishWebProjects: false

Я думаю, что изменение должно произойти в этой строке, но я не уверен, что нужно изменить, чтобы перейти в правильное расположение веб-задания Azure.

 arguments: '--configuration $(buildConfiguration) --output $(Build.ArtifactStagingDirectory)/publish_output/App_Data/jobs/continuous/$(webJobName)'

Если я вручную добавлю новое веб-задание в веб-задания Azure в службе приложений и прикреплю zip-файл артефакта, запустится веб-задание, которое я пытаюсь автоматизировать.

Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
0
52
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Чтобы развернуть веб-задание в целевом расположении, вам необходимо убедиться, что zip-файл (MyTestJobJob.zip) в артефакте имеет правильную структуру папок, App_Data/jobs/continuous для continuous типа.

Образец артефакта на моей стороне для справки:

Для вашего результата артефакта yaml в пути будут дополнительные publish_output и дополнительные файлы в zip-архиве.

Чтобы исправить структуру zip-файла, измените местоположение $(Build.ArtifactStagingDirectory) в аргументе публикации на $(Build.BinariesDirectory) и исправьте корневую папку для задачи ArchiveFiles@2.

Образец, как показано ниже:

trigger:    
  branches:    
    include:    
      - main    
  paths:
    include:
      - MyTestJobJob/MyTestJobService.cs

pool:    
  vmImage: 'windows-latest'
variables:   
  buildConfiguration: 'Release'
  devWebAppName: 'MyTestJobJobDev'
  resourceGroupName: 'MyRG' 
  webJobName: 'MyTestJobJob'    

stages:
- stage: Build
  jobs:
  - job: Build
    steps:
    - task: UseDotNet@2
      inputs:
        packageType: 'sdk'
        version: '8.x'
        installationPath: $(Agent.ToolsDirectory)/dotnet

    - task: DotNetCoreCLI@2
      inputs:
        command: 'restore'
        projects: '**/*.csproj'

    - task: DotNetCoreCLI@2
      inputs:
        command: 'build'
        projects: '**/*.csproj'
        arguments: '--configuration $(buildConfiguration)'

    - task: DotNetCoreCLI@2
      inputs:
        command: 'publish'
        projects: 'MyTestJobJob/MyTestJobJob.csproj'
        arguments: '--configuration $(buildConfiguration) --output $(Build.BinariesDirectory)/publish_output/App_Data/jobs/continuous/$(webJobName)'
        publishWebProjects: false
        modifyOutputPath: false
        zipAfterPublish: false

    # - task: DotNetCoreCLI@2
    #   inputs:
    #     command: 'publish'
    #     projects: 'MyTestJobJob/MyTestJobJob.csproj'
    #     arguments: '--configuration $(buildConfiguration) --output $(Build.BinariesDirectory)/publish_output'
    #     publishWebProjects: false
    #     modifyOutputPath: false
    #     zipAfterPublish: false

    - task: ArchiveFiles@2
      inputs:
        rootFolderOrFile: '$(Build.BinariesDirectory)/publish_output'
        includeRootFolder: false
        archiveType: 'zip'
        archiveFile: '$(Build.ArtifactStagingDirectory)/MyTestJobJob.zip'
        replaceExistingArchive: true

    - task: PublishBuildArtifacts@1
      inputs:
        PathtoPublish: '$(Build.ArtifactStagingDirectory)'
        ArtifactName: 'drop'
        publishLocation: 'Container'

Я прокомментировал вторую задачу публикации, добавьте ее обратно, если она вам нужна.

Кроме того, для задачи развертывания AzureWebApp@1 нет параметров webJobName, webJobType, publishWebProjects, но appType необходим.

          - task: AzureWebApp@1
            inputs:
              azureSubscription: 'MyAZSubscription'
              appType: 'webApp'
              appName: '$(devWebAppName)'
              package: '$(Pipeline.Workspace)/drop/MyTestJobJob.zip'
              deploymentMethod: 'auto'

Пожалуйста, проверьте мой еще один ответ в аналогичном билете для справки.

Другие вопросы по теме