Visual Studio Team Services中的多个作业部署

时间:2017-12-07 12:30:20

标签: azure-devops azure-web-sites azure-webjobs azure-pipelines azure-webjobssdk

我有一个包含多个项目的VS解决方案,每个项目都是一个独立的WebJob,我在单个AppServices中托管。我正在尝试将其自动化为持续部署。在解决方案中仅部署作业的最佳策略是什么?有没有办法找出作为合并到CI的一部分而改变的项目?我们正在使用git,这个解决方案位于一个存储库中。我们正在使用azure-webjobsdk进行项目。

2 个答案:

答案 0 :(得分:1)

您可以按照以下步骤部署唯一更改的webjob:

假设您的文件结构如下:

Git root
   |___WebJob1
          |___WebJob1.sln
          |___webJob1
                 |___WebJob1.csproj
          |___WebJob2
                 |___WebJob2.csproj
          |___ …
          |___WebJobn
                 |___WebJobn.csproj

<强> 1。添加变量(例如buildporj,默认值为none),以记录更改的webJob项目包。

<强> 2。为WebJob1/WebJob1.sln添加NuGet还原任务。

第3。使用MSBuild参数添加Visual Studio构建任务

/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:SkipInvalidConfigurations=true /p:PackageLocation="$(Build.BinariesDirectory)\\"

enter image description here

<强> 4。添加PowerShell任务以检测更改的WebJob项目,并通过脚本将包从$(Build.BinariesDirectory)复制到$(Build.ArtifactStagingDirectory),如下所示:

$files=$(git diff HEAD HEAD~ --name-only)
echo "changed files: $files"
for ($i=0;$i -lt $files.Length; $i++)
{
  $file=$files[$i] -split '/'
  $files[$i]=$file[1]
}
$uni=$files | Get-Unique

$uni=@($uni | Where-Object {$_ -notmatch ".sln"})
echo "You changed the project (if more than one projects were changed, only deploy the first one): $uni"
$proj=$uni[0]+".zip"
Write-Host "##vso[task.setvariable variable=buildproj;]$proj"
Copy-Item $(Build.BinariesDirectory)\$proj $(Build.ArtifactStagingDirectory)
  1. 添加Azure App Service部署任务,方法是将包或文件夹选项指定为$(Build.ArtifactStagingDirectory)\**\$(buildproj)
  2. enter image description here

答案 1 :(得分:0)

您可以在单个解决方案中拥有不同的WebJobs项目(WebJob1.csproj,WebJob2.csproj),并且可以使用单个构建和发布管道进行部署。您需要做的只是:-

在构建解决方案步骤中定义:-

  1. Visual Studio Build(解决方案:***。sln,MSBuild参数:     / p:DeployOnBuild = true / p:WebPublishMethod =包装     / p:SkipInvalidConfigurations = true     / p:PackageLocation =“ $(build.artifactstagingdirectory)\”)

  2. 发布构建工件(发布路径:$(build.artifactstagingdirectory);工件名称:drop;工件类型:Server)

为此构建定义创建发布定义并添加任务

  1. Azure App Service部署
  2. 选择您的Azure订阅和应用程序服务名称;
  3. 选择您的包裹或文件夹: $(System.DefaultWorkingDirectory)** \ WebJob1.zip

您可以类似地为WebJob2.zip创建另一个Azure App Service Deploy任务,并通过单个生成和发布管道部署所需的任意多个Webjob。