使用 YAML 文件在正确的位置部署 Azure Webjob

问题描述 投票:0回答:1

我想做什么?

构建一个 YAML 文件,该文件将服务构建并部署为 appservice 的 webjobs 位置中 webjobs 位置内的 webjob。

我有一个 YAML 代码,用于构建工作人员服务的控制台应用程序并将其部署为应用程序服务中的 Azure Webjob。

构建成功,部署也成功,但是webjob没有放置在正确的位置。

我希望将其部署在站点->作业->连续->网络作业名称中,但它被部署到站点->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 webjob 位置

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

如果我在 appservice 的 azure webjobs 中手动添加一个新的 webjob 并附加工件 zip 文件,则该 webjob 会运行我正在尝试自动化的操作。

azure azure-web-app-service azure-webjobs azure-pipelines-yaml
1个回答
0
投票

要将 WebJob 部署到目标位置,您需要确保工件中的 zip 文件(MyTestJobJob.zip)具有正确的文件夹结构,

App_Data/jobs/continuous
表示
continuous
类型。 部署后,应用服务中的结构为
\site\wwwroot\app_data\Jobs\Continuous\webjobname

enter image description here

我这边的神器样本供大家参考:

enter image description here

您有两个带有

DotNetCoreCLI@2
命令的
publish
任务,请尝试删除第二个以确保文件夹结构正确。

另外,对于

AzureWebApp@1
部署任务,它没有参数
webJobName
webJobType
publishWebProjects
,但需要
appType

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

请查看我类似票证中的另一个答案以供参考。

© www.soinside.com 2019 - 2024. All rights reserved.