Какова задача вызвать определение сборки после определения выпуска в разных ветках в VSTS

У меня есть одно требование в VSTS. В настоящее время в рамках процесса CI/CD у меня есть задание определения сборки и задание определения выпуска. Определение выпуска будет вызываться после успешного завершения определения сборки одновременно с определением выпуска, которое развернет код. на сервер мне нужно вызвать тестовое задание, которое настроено в отдельном определении сборки (которое находится в другой ветке). Поэтому мне нужно имя задачи в VSTS, как вызвать все определение тестовой сборки после успешного завершения определения выпуска. Пожалуйста, помогите мне чтобы найти, как выполнить эту задачу. Могу ли я сделать это с помощью сценария или задачи Power Shell? Если я могу сделать через сценарий, пожалуйста, поделитесь со мной этим сценарием.

С уважением, Правин


person PRAVEEN    schedule 07.11.2017    source источник


Ответы (1)


Существует два способа вызвать определение сборки в определении выпуска: задача PowerShell или задача расширения (например, Queue New Build).

Вариант 1: используйте задачу PowerShell для построения очереди с помощью REST API.

предварительные требования:

  1. Получить идентификатор определения сборки

    В определении сборки, которое вы хотите вызвать, получите идентификатор определения сборки: Изменить определение сборки -> Вкладка «Переменные» -> Значение для system.definitionId — это идентификатор, который необходимо использовать. Например, идентификатор определения сборки — 32: введите здесь описание изображения

  2. добавить токен личного доступа (PAT)

    В своей учетной записи VSTS -> щелкните свой профиль -> Безопасность -> вкладка «Личные токены доступа» -> «Добавить» -> скопируйте новый созданный токен для последующего использования.

    введите здесь описание изображения введите здесь описание изображения

Теперь добавьте задачу Powershell, как показано ниже:

$body = '
{
  "definition": {
    "id": <build definition ID>
  }
}
'
$bodyJson=$body | ConvertFrom-Json
Write-Output $bodyJson
$bodyString=$bodyJson | ConvertTo-Json -Depth 100
Write-Output $bodyString
$user="name"
$token="<personal access token>"
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $user,$token)))

$Uri = "https://<account>.visualstudio.com/DefaultCollection/<project>/_apis/build/builds?api-version=2.0"
$buildresponse = Invoke-RestMethod -Method Post -UseDefaultCredentials -ContentType application/json -Uri $Uri -Body $bodyString -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}
write-host $buildresponse

Примечание. В скрипте вам нужно заменить <build definition ID> в качестве значения, которое вы найдете, заменить <personal access token> в качестве реального добавленного вами PAT, заменить <project> в качестве реального имени проекта и заменить <account> в качестве имени вашего реального Учетная запись ВТС.

Вариант 2: использовать задачу расширения на торговой площадке

Например, вы можете использовать use Поставить в очередь задачу новой сборки, Триггер Задача сборки, задача сборки очереди и т. д. чтобы указать имя определения сборки и json для постановки сборки в очередь.

  • Для задачи Trigger Build вам просто нужно указать имя сборки и использовать PAT для аутентификации (d1 — это имя определения сборки, которое я должен поставить в очередь, вы можете заменить его своим собственным именем определения сборки).

введите здесь описание изображения

  • Для задачи Построить очередь(и) вы можете указать JSON, как показано ниже (поставить сборку в очередь для главной ветки):

     { "sourceBranch": "master", "parameters": { "system.debug": true } } 
    

введите здесь описание изображения

person Marina Liu    schedule 08.11.2017
comment
Мой URL-адрес VSTS: telematicsapps.visualstudio.com/_projects.When я пытался использовать URL-адрес ( telematicsapps.visualstudio.com/DefaultCollection/Git2/_apis/), которым вы поделились, я получаю сообщение об ошибке, как показано ниже, с заменой имени моей учетной записи на: telematicsapps - person PRAVEEN; 08.11.2017
comment
{$id:1,innerException:null,message:TF200016: Следующий проект не существует: Git2. Убедитесь, что имя проекта указано правильно и что проект существует на указанном Team Foundation Server.,typeName:Microsoft.TeamFoundation.Core.WebApi.ProjectDoesNotExistWithNameException, Microsoft.TeamFoundation.Core.WebApi, Version=14.0.0.0, Culture= нейтральный, PublicKeyToken = b03f5f7f11d50a3a, typeKey: ProjectDoesNotExistWithNameException, errorCode: 0, eventId: 3000} - person PRAVEEN; 08.11.2017
comment
Git2 — это название моего командного проекта, вы должны заменить его на имя своего командного проекта. И я обновил его в своем ответе, вы можете заменить <project> именем своего собственного командного проекта. - person Marina Liu; 08.11.2017
comment
Я только что установил плагин Queue new task, он запрашивает имя сборки и параметры сборки (JSON). Я дал имя сборки, а как насчет Json? Требуется ли это? Я просто хочу проверить, срабатывает ли мое определение сборки или нет после определения выпуска. Поэтому я добавил одно задание определения выпуска для тестирования, в котором я добавил новую задачу сборки очереди и предоставил только имя определения сборки в этой задаче. Но не бросает любая ошибка и даже не запуск определения сборки. Какие изменения требуются? - person PRAVEEN; 08.11.2017
comment
Да, вы можете найти пример json, поскольку в запросе образца показано visualstudio.com/en-us/docs/integrate/api/build/. Кстати: вы не поставили в очередь задачу сборки PowerShell успешно? - person Marina Liu; 08.11.2017
comment
Я только что перешел по ссылке, которой вы поделились. Пожалуйста, скажите мне, какой сценарий Json мне нужно включить в мою очередь новой задачи сборки в VSTS. Как я уже сказал, я новичок в этом. Поэтому спрашивайте. Пожалуйста, помогите мне, какой файл json и что контент, который мне нужно включить? Приходите в poewrshell, мне нужно добавить свой токен доступа, к которому у меня нет доступа. Мне нужно уточнить у моего менеджера. Поэтому, пожалуйста, помогите мне с задачей плагина очереди. Почему нам нужно упомянуть параметры сборки (Json) и что польза от этого?Пожалуйста, дайте мне пояснить. - person PRAVEEN; 08.11.2017
comment
В задаче Json в очереди новой задачи сборки я запускаю эту команду: Тем не менее она не запускает сборку def. projectname.visualstudio.com/abc/_apis/build/ Content-Type: application/json {определение: {id: 10}, sourceBranch: refs/heads/master, параметры: {\system.debug\:\true\,\BuildConfiguration\:\debug\,\BuildPlatform\ :\x64\} }. - person PRAVEEN; 08.11.2017
comment
Любой орган может помочь здесь, пожалуйста? - person PRAVEEN; 10.11.2017
comment
Сейчас мне нужно заняться другими делами, и я обновлю json laster, спасибо. - person Marina Liu; 10.11.2017
comment
Я перечисляю настройки для двух задач, чтобы поставить новую сборку в очередь, вы можете попробовать. - person Marina Liu; 10.11.2017
comment
Большое спасибо. Это действительно потрясающе. Теперь я могу запустить определение сборки после определения выпуска. Очень ценю вашу помощь в ваше занятое время. Я приму ваш ответ сейчас. - person PRAVEEN; 10.11.2017