停止触发的Web作业的最佳方法是什么

时间:2017-10-31 04:20:59

标签: azure azure-devops

我得到了团队的要求,目前他们通过设置时间表以特定的时间间隔运行触发的作业。他们有设置时间表,因此按照预定的时间,这些触发的作业将会运行但是在部署时我们必须确保触发的作业不应该运行,因为它不会接受部署jar到azure.So我想运行webjobs连续作业停止,以及触发的作业不应该运行。它应该检查在部署时运行的触发作业是否正在运行我们即使你停止连续工作也不能部署jar。请帮助我。如何完成上述任务?我是否需要添加任何脚本来检查已触发的作业是否运行,如果它运行如何部署jar的话。

其他要求就像,目前我们传递的参数如

-webjobs @(@ {&#34; name&#34; =&#34; abc&#34 ;;&#34; typeName&#34; =&#39; continuous&#39;},@ {&# 34;姓名&#34; =&#34; def&#34 ;;&#34; ty peName&#34; =&#39;连续&#39;}) - 网站kgh -rg ghi .... < / p>

但团队希望这些参数将在一个单独的文件中传递。因此,当他们添加新的Web作业时,他们可以添加一个文件本身。如果我将参数脚本放在一个单独的文件中并传递给webjobs脚本。

任何webjobs的后期部署我应该验证webjobs是否正确启动。所以我需要在脚本中实现这三个要求。请与我分享完全符合上述要求的脚本。

1 个答案:

答案 0 :(得分:1)

您可以通过Process kudu API获取当前Web应用程序的进程,然后检查是否存在与WebJob(进程名称)相关的进程,如果是,则终止该进程。

例如:

        <div class="col-md-3 col-lg-3 col-sm-12 col-xs-12">
        <h3 id="h3" runat="server" style="font-size: 26px; color: 
         #F67777;">
        </h3>
        <asp:Label ID="lblSalePrice" runat="server" Style="font-size: 
        18px"></asp:Label><br />
        <asp:Label ID="lblMrp" runat="server" Style="font-size: 18px; 
        text-decoration: line-through;"></asp:Label>
        <asp:Label ID="lblDiscount" runat="server" Style="font-size: 
        18px; color:green; margin-left:5px"></asp:Label><br />
        <asp:Label ID="Quantity" runat="server" Text="Quantity : " 
        Style="font-size: 18px; color:green;" ></asp:Label>


        //Want to use image // 
        <asp:Label:ID="lblQuantity" runat="server" Style="font-size: 18px; 
        color:green; margin-left:5px"></asp:Label><br /> 
        **<a id="prev">Decrease Quantity</a><br />
        <a id="next">Increase Quantity</a><br />**


        <label class="hvr-skew-backward">
         <asp:Button ID="btnSubmit" class=" hvr-skew-backward"  
         runat="server" 
         Text="Place Order" Style="color: white; border:none; " 
         onclick="btnSubmit_Click" />             
         </label>
         <label class="hvr-skew-backward">
         <asp:Button ID="BtnCart" class=" hvr-skew-backward"  
         runat="server" 
         Text="Add to Cart" Style="color: white; border:none; " />
         </label>
        </div>

参数:param( [string]$webJobName, [string]$userName, [string]$password, [string]$webAppName ) $kuduApiAuthorisationToken="Basic {0}" -f [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $userName, $password))) $kuduApiUrl="https://$webAppName.scm.azurewebsites.net/api/processes/" $processes=Invoke-RestMethod -Uri $kuduApiUrl -Headers @{"Authorization"=$kuduApiAuthorisationToken;"If-Match"="*"} -Method GET foreach($p in $processes){ if($p.name -eq $webJobName){ $killAPI="https://$webAppName.scm.azurewebsites.net/api/processes/$($p.id)" Invoke-RestMethod -Uri $killAPI -Headers @{"Authorization"=$kuduApiAuthorisationToken;"If-Match"="*"} -Method DELETE } }

注意:如果用户名中有-webJobName "XX" -userName "XX" -password "XX" -webAppName "XX",例如$,您可以指定用户名,例如-userName&#34;`$ test&#34;

您可以手动或以编程方式从发布配置文件中获取用户名和密码:(在您的主题中回答:Could any one help me how to stop and start azure webjobs through vsts

关于将参数放在文件中:

parameter.json

$test

代码:

[
  {
    "filepath": "data.csv",
    "Cols": "Col1,Col2,Col3"
  },
  {
    "filepath": "data2.csv",
    "Cols": "Col1,Col6,Col7,Col8"
  }
]

更新

Parameter.json:

[object[]]$fileObj=Get-Content "parameter.json"|ConvertFrom-Json
foreach($fo in $fileObj){

}

脚本:

{
    "userName": "user1",
    "password": "password1",
    "webAppName": "webapp1",
    "resourceGroup": "resourceGroup1",
    "webJobs": [   
      {
        "name": "abc",
        "typeName": "continuous"
      },
      {
        "name": "def",
        "typeName": "continuou‌"
      }
    ]
  }