我正在尝试使用Azure Devops进行CI / CD。我在推入时创建了要构建的适当的Git触发器,并在生成新构建时创建了一个新发行版。
在发布选项卡中,我试图使用“部署Azure应用程序服务”模板来部署具有多个webjob的WebAPI项目。所有日志似乎都表明一切正常,但是最后在Azure中检查应用程序服务时却一无所有!
我尝试了许多不同的配置,甚至还有更多的模板。根据日志,它们看起来都不错,但是实际上没有部署任何东西!
如果我尝试从VS2017进行构建/部署,效果会很好!
问题
。
我的构建YAML文件与默认文件相当接近,仅由于另一个SO帖子建议添加了CopyFiles @ 2:
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文件生成的工件创建发行版。
答案 0 :(得分:0)
请在软件包或文件夹选项中添加以下行
$(System.DefaultWorkingDirectory)\*.*
它将确保在部署时选择所有文件。
还请参考以下将webjob部署到Azure的方法:
修改Visual Studio Build任务以使用FileSystem部署Webjob(MSBuild参数:/p:DeployOnBuild=true /p:WebPublishMethod=FileSystem /p:publishUrl="$(build.artifactstagingdirectory)\\WebJob" /p:DeployDefaultTarget=WebPublish)
添加“删除文件”任务以释放定义以删除bin文件夹(源文件夹: $(System.DefaultWorkingDirectory)/ WebJobVnext / drop / WebJob);内容:bin)
修改Azure App Service部署任务(
希望有帮助。
答案 1 :(得分:0)
您的部署任务有两个主要问题。
正如Mohit所说,您需要指定要部署的Web项目的zip文件,而不仅仅是其所在的目录。
您需要取消选中“从App_Data文件夹中排除文件”。这将阻止webjobs与网站一起部署
2.1如果没有,则需要在Visual Studio中右键单击Web项目“添加”>“现有项目为Azure Webjob”。对每个webjob项目都执行此操作,以便它将webjobs与网站打包在一起