在Azure Devops中部署包含多个webjobs的Web API项目

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

我正在尝试使用Azure Devops来执行CI / CD。我已经创建了适当的Git触发器来构建,当我推送时,每当我创建一个新版本时我都会创建一个新版本。

在发布选项卡中,我尝试使用“部署Azure应用服务”模板部署具有多个webjobs的WebAPI项目。所有的日志似乎表明一切都很顺利,但最后我在Azure中查看应用服务时什么都没有!

我尝试了许多不同的配置,甚至还有一些模板。根据日志,它们看起来都很好,但实际上没有任何部署!

如果我尝试从VS2017构建/部署它可以很好地工作!

  • 为了通过Azure Devops成功部署我的代码,我需要做什么

.

我的构建YAML文件非常接近默认值,仅添加了CopyFiles @ 2,因为另一个SO帖子暗示:

trigger:
  tags:
    include:
    - slot*
  branches:
    include:
    - dev

pool:
  vmImage: 'VS2017-Win2016'

variables:
  solution: '**/*.sln'
  buildPlatform: 'Any CPU'
  buildConfiguration: 'Release'

name: $(SourceBranchName)_$(Date:yyyyMMdd)$(Rev:.r)

steps:
- task: NuGetToolInstaller@0

- task: NuGetCommand@2
  inputs:
    restoreSolution: '$(solution)'

- task: VSBuild@1
  inputs:
    solution: '$(solution)'
    msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactStagingDirectory)"'
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'

- task: CopyFiles@2
  inputs:
    targetFolder: '$(Build.ArtifactStagingDirectory)'    

- task: PublishBuildArtifacts@1
  condition: succeeded() #and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/master'))

- task: VSTest@2
  inputs:
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'

第二步,我从通过YAML文件生成的工件创建一个版本。

Azure deployment pipeline

Azure deployment pipeline

azure asp.net-web-api deployment azure-devops continuous-deployment
2个回答
0
投票

请在您的包或文件夹选项中添加以下行

$(System.DefaultWorkingDirectory)\*.*

它将确保在部署时选择所有文件。

另请参阅以下方法将webjob部署到azure:

  1. 修改Visual Studio Build任务以使用FileSystem部署webjob(MSBuild参数:/p:DeployOnBuild=true /p:WebPublishMethod=FileSystem /p:publishUrl="$(build.artifactstagingdirectory)\\WebJob" /p:DeployDefaultTarget=WebPublish)
  2. 添加删除文件任务以释放定义以删除bin文件夹(源文件夹:$(System.DefaultWorkingDirectory)/ WebJobVnext / drop / WebJob);内容:斌)
  3. 修改Azure App Service Deploy任务( 取消选中“使用Web Deploy发布”选项。 包或文件夹:$(System.DefaultWorkingDirectory)/ [artifact name] / drop / WebJob)

希望能帮助到你。


0
投票

部署任务有两个主要问题。

  1. 正如Mohit所说,您需要指定要部署的Web项目的zip文件,而不仅仅是它所在的目录。
  2. 您需要取消选中“从App_Data文件夹中排除文件”。这将阻止webjobs与网站一起部署 2.1如果还没有,在Visual Studio中,您需要右键单击您的Web项目添加>现有项目作为Azure Webjob。为每个webjob项目执行此操作,以便将webjobs打包到网站
© www.soinside.com 2019 - 2024. All rights reserved.