首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >当将管道拆分为构建和发布时,WebJob不起作用

当将管道拆分为构建和发布时,WebJob不起作用
EN

Stack Overflow用户
提问于 2020-10-02 16:53:27
回答 2查看 439关注 0票数 0

我正在尝试使用Azure DevOps部署一个WebJob。我有以下管道:

代码语言:javascript
代码运行次数:0
运行
复制
pool:

#  name: Hosted Windows 2019 with VS2019
  vmImage: windows-2019

  demands:
  - msbuild
  - visualstudio
  - vstest

variables:
    BuildPlatform: 'any cpu'
    BuildConfiguration: 'release'
    Parameters.solution: '**\*.sln'

steps:

- task: UseDotNet@2
  displayName: 'Use Net Core 3.1.0'
  inputs:
#    packageType: 'runtime' # Options: runtime, sdk
    packageType: 'sdk'
    version: '3.1.100'

- task: NuGetToolInstaller@1
  displayName: 'Use NuGet 5.7.0'
  inputs:
    versionSpec: 5.7.0

- task: NuGetCommand@2
  displayName: 'NuGet restore'
  inputs:
    restoreSolution: '$(Parameters.solution)'

- task: DotNetCoreCLI@2
  displayName: 'net build'
  inputs:
    command: 'build'
    projects: '**\*.csproj'
    arguments: '--configuration Release'

- task: DotNetCoreCLI@2
  displayName: 'net publish'
  inputs:
    command: 'publish'
    publishWebProjects: false
    projects: '**\*.csproj'
    arguments: '--output $(Build.ArtifactStagingDirectory)\WebJob\App_Data\jobs\continuous\WJ_Channel_Fetch'
    zipAfterPublish: false
    modifyOutputPath: false

- task: PowerShell@2
  inputs:
    targetType: 'inline'
    script: '"dotnet WJ_Channel_Fetch.dll" | Out-File run.cmd -Encoding ASCII; $LASTEXITCODE'
    errorActionPreference: 'stop'
    failOnStderr: false
    ignoreLASTEXITCODE: false
    pwsh: false
    workingDirectory: '$(Build.ArtifactStagingDirectory)\WebJob\App_Data\jobs\continuous\WJ_Channel_Fetch'

- task: AzureAppServiceManage@0
  displayName: 'Stop Azure App Service: XXXX-pipelines2'
  inputs:
    azureSubscription: 'Visual Studio Professional (**********)'
    Action: 'Stop Azure App Service'
    WebAppName: 'XXXX-pipelines2'

- task: AzureRmWebAppDeployment@3
  displayName: 'Azure App Service Deploy: XXXX-pipelines2'
  inputs:
    azureSubscription: 'Visual Studio Professional (**********)'
    WebAppName: 'XXXX-pipelines2'
    Package: '$(Build.ArtifactStagingDirectory)\WebJob'
    TakeAppOfflineFlag: true

- task: AzureAppServiceManage@0
  displayName: 'Start Azure App Service: XXXX-pipelines2'
  inputs:
    azureSubscription: 'Visual Studio Professional (**********)'
    Action: 'Start Azure App Service'
    WebAppName: 'XXXX-pipelines2'

- task: PublishBuildArtifacts@1
  displayName: 'Publish Artifact: drop'
  inputs:
    PathtoPublish: '$(Build.ArtifactStagingDirectory)'
    ArtifactName: 'drop'
    publishLocation: 'Container'
  condition: succeededOrFailed()

这很好,但我想将部署部分移到发布管道上,这样我就可以利用环境之间的批准(DEV、QA、测试、PROD)。

问题是,当我将它移动到发布管道时,会部署WebJob,但它似乎处于不一致的状态。我不能停止它,也不能删除它;摆脱它的唯一方法是删除WebApp。如果我只使用上面的YAML就行了。

这是我的发布管道:

有什么想法吗?事先非常感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-10-03 15:41:06

通过将Azure difference部署任务降级到版本3。*解决了这个问题,这也是我的YAML文件与我使用GUI创建的发布管道之间的区别。

我仍然认为它应该与最新的版本一起工作,但就目前而言,我是开放的。

票数 1
EN

Stack Overflow用户

发布于 2020-10-02 18:21:47

这有很多部分,因为您的解决方案已经在YAML中工作,并且您只需要得到批准,所以使用YAML也可以很容易地实现这一点。

您可以利用Azure DevOps的环境特性。在“环境”部分中,您可以按以下方式添加审批

选择各自的环境(您可以根据YAML手动创建该环境)

以上就是解决方案之一。如果这有用的话请告诉我。另一种解决方案是使用释放管道下的部署方法。

在这种情况下,您需要分别部署web作业和实际代码。

wwwroot>>app_data>>job

  • then下的
  1. 首先部署web作业,将剩余的代码(如果与应用程序代码一起部署)部署到www.root

一旦您需要在中手动添加web作业,它将直接与部署一起工作。在我的环境中,我也在做类似的事情,而且工作也很好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64175425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档