Как вызвать параметры Json в качестве аргументов через задачу Powershell в определении выпуска VSTS? - PullRequest
0 голосов
/ 01 июня 2018

У меня есть Json-файл с приведенным ниже сценарием и скрипт Powershell, вызывающий этот Json-файл с использованием приведенного ниже сценария. Но я хочу вызывать значения Json в качестве аргументов из задачи VSTS Powershell. Пожалуйста, помогите мне, как вызвать inturn.

Ниже дано webjob_list.json У меня есть имя пользователя, пароль, группа ресурсов, имя веб-приложения.Я хотел бы назвать эти 4 параметра в качестве аргументов через определение VSTS Release, используя задачу Powershell в разделе аргументов.Я не хочу помещать эти 4 значения в Json, вместо этого хочу вызывать их как аргументы из скрипта Powershell.

Json Script:

WebJob_list.json:



    {
          "Dev": 
          {

            "userName": "abc-dev\\$abcjobs-dev",
            "password": "SKGGfiuqHdvJ09eCmhDmE4mBnL8PSAZhnQMxzb",
            "webAppName": "abcjobs-dev",
            "resourceGroup": "abc-Dev"
"webJobs": [   
      {
        "name": "webjobname",
        "typeName": "continuous"
      },
      {
        "name": "webjobname",
        "typeName": "continuous"
      },
      {
        "name": "webjobname",
        "typeName": "continuous"
      },
      {
        "name": "webjobname",
        "typeName": "continuous"
      }
    ]

      }

webjobs Stop.ps1:

param(
[string]$currentEnv
)

[object]$paramObj=Get-Content "d:\a\r1\a\Jobs\WebJobs_scripts\WebJob_list.json" |ConvertFrom-Json
$userName =$paramObj.$currentEnv
$password =$paramObj.$currentEnv
$webAppName =$paramObj.$currentEnv
$resourceGroup=$paramObj.$currentEnv
[object[]]$webJobs=$paramObj.$currentEnv.webJobs
foreach($wj in $webjobs)
{
  if($wj.typeName -eq "continuous")
   {
    Invoke-AzureRmResourceAction -ResourceGroupName $resourceGroup -ResourceType Microsoft.Web/sites/ContinuousWebJobs -ResourceName "$webAppName/$($wj.name)" -Action stop -ApiVersion 2015-08-01 -Force
    Write-Host "continuous"
    Write-Host $wj.name
   }
}

Ответы [ 2 ]

0 голосов
/ 05 июня 2018

JSON файл:

  {
      "Dev": {
      "webJobs": [   
      {
        "name": "webjobname",
        "typeName": "continuous"
      },
      {
        "name": "webjobname",
        "typeName": "continuous"
      },
      {
        "name": "webjobname",
        "typeName": "continuous"
      },
      {
        "name": "webjobname",
        "typeName": "continuous"
      }
    ]

      }
}

Сценарий:

param(
[string]$currentEnv,
[string]$username
[string]$password,
[string]$webAppName,
[string]$resourceGroup
)

[object]$paramObj=Get-Content "d:\a\r1\a\Jobs\WebJobs_scripts\WebJob_list.json" |ConvertFrom-Json
[object[]]$webJobs=$paramObj.$currentEnv.webJobs
foreach($wj in $webjobs)
{
  if($wj.typeName -eq "continuous")
   {
    Invoke-AzureRmResourceAction -ResourceGroupName $resourceGroup -ResourceType Microsoft.Web/sites/ContinuousWebJobs -ResourceName "$webAppName/$($wj.name)" -Action stop -ApiVersion 2015-08-01 -Force
    Write-Host "continuous"
    Write-Host $wj.name
   }
}
0 голосов
/ 01 июня 2018

Ваш скрипт выглядит так, как будто он уже прочитал json, но для передачи переменных между ними между задачами вам нужно установить их в VSTS из самого скрипта

Write-Host "##vso[task.setvariable variable=username]$username"

Возможно также сохранить ваши переменные в VSTSс самого начала, который может быть хорошим вариантом?

VSTS> Релизы> Конвейер> Новый

Далее создайте среду разработки

Нажмите ссылку Переменные и создайте свои 4 переменные x,

Убедитесь, что они относятся к среде разработки.

Затем в вашей задаче PowerShell создайте блок параметров для приема переменных

param(username, password, webappname, resourcegroup)

Затем в поле Аргументы сценария для задачи PowerShell добавьте аргументы в виде:

-username $(username) -password $(password) -webappname $(webappname) -resourcegroup $(resourcegroup)
...