Вам следует использовать следующий API: Обновление определения api:
PUT https://vsrm.dev.azure.com/{org name}/{project name}/_apis/release/definitions?api-version=5.1
Что касается тела запроса на этапе добавления / удаления этапа, на самом деле были внесены изменения только в параметр environments
:
![введите здесь описание изображения](https://i.stack.imgur.com/sYANc.png)
Одно определение стадии соответствует одному блоку кода серого.
Adding stage
: Добавьте шаблон JSON-кода блок определения этапа (the grey one display in my left screenshots
). Эта структура кода фиксированная.
Removing stage
: Удалить полное определение соответствующего этапа.
Вот один полный пример определения этапа:
{
"id": -1,
"name": "Stage 3",
"rank": 3,
"variables": {},
"variableGroups": [],
"preDeployApprovals": {
"approvals": [
{
"rank": 1,
"isAutomated": true,
"isNotificationOn": false,
"id": 7
}
],
"approvalOptions": {
"requiredApproverCount": null,
"releaseCreatorCanBeApprover": false,
"autoTriggeredAndPreviousEnvironmentApprovedCanBeSkipped": false,
"enforceIdentityRevalidation": false,
"timeoutInMinutes": 0,
"executionOrder": "beforeGates"
}
},
"deployStep": {
"id": 8
},
"postDeployApprovals": {
"approvals": [
{
"rank": 1,
"isAutomated": true,
"isNotificationOn": false,
"id": 9
}
],
"approvalOptions": {
"requiredApproverCount": null,
"releaseCreatorCanBeApprover": false,
"autoTriggeredAndPreviousEnvironmentApprovedCanBeSkipped": false,
"enforceIdentityRevalidation": false,
"timeoutInMinutes": 0,
"executionOrder": "afterSuccessfulGates"
}
},
"deployPhases": [
{
"deploymentInput": {
"parallelExecution": {
"parallelExecutionType": "none"
},
"agentSpecification": {
"identifier": "vs2017-win2016"
},
"skipArtifactsDownload": false,
"artifactsDownloadInput": {
"downloadInputs": []
},
"queueId": 247,
"demands": [],
"enableAccessToken": false,
"timeoutInMinutes": 0,
"jobCancelTimeoutInMinutes": 1,
"condition": "succeeded()",
"overrideInputs": {}
},
"rank": 1,
"phaseType": "agentBasedDeployment",
"name": "Agent job",
"refName": null,
"workflowTasks": []
}
],
"environmentOptions": {
"emailNotificationType": "OnlyOnFailure",
"emailRecipients": "release.environment.owner;release.creator",
"skipArtifactsDownload": false,
"timeoutInMinutes": 0,
"enableAccessToken": false,
"publishDeploymentStatus": true,
"badgeEnabled": false,
"autoLinkWorkItems": false,
"pullRequestDeploymentEnabled": false
},
"demands": [],
"conditions": [],
"executionPolicy": {
"concurrencyCount": 1,
"queueDepthCount": 0
},
"schedules": [],
"owner": {
"displayName": "{user name}",
"id": "{user id}",
"isContainer": false,
"uniqueName": "{creator account}",
"url": "https://dev.azure.com/{org name}/"
},
"retentionPolicy": {
"daysToKeep": 30,
"releasesToKeep": 3,
"retainBuild": true
},
"processParameters": {},
"properties": {
"BoardsEnvironmentType": {
"$type": "System.String",
"$value": "unmapped"
},
"LinkBoardsWorkItems": {
"$type": "System.String",
"$value": "False"
}
},
"preDeploymentGates": {
"id": 0,
"gatesOptions": null,
"gates": []
},
"postDeploymentGates": {
"id": 0,
"gatesOptions": null,
"gates": []
},
"environmentTriggers": [],
"badgeUrl": "https://vsrm.dev.azure.com/{org}/_apis/{project name}/Release/badge/3c3xxx6414512/2/3"
},
Вот некоторые ключевые параметры, на которые следует обратить внимание: id
, owner
, rank
и conditions
.
id
: это идентификатор этапа, который вы указали для этапа, его значение должно быть меньше 1. Здесь приемлемо любое значение меньше 1.
owner
: обязательно. Или вы получите сообщение о том, что у сцены должен быть владелец.
rank
: Натуральные числа больше 1. Здесь я предлагаю вам увеличить его на основе других этапов.
conditions
: Это тот, от которого вы можете настроить, от какого этапа будет зависеть текущий новый. Вкратце, он используется для указания места выполнения стадии релиза.
При обновлении выпуска необходимо упаковать и установить все определение выпуска в качестве тела запроса. Получите исходный, добавьте в него новую настраиваемую часть определения сцены. Затем обновитесь до api.
Фактически, я предлагаю вам добавить этап с пользовательским интерфейсом для тестирования. Затем перейдите на вкладку История на странице определения выпуска. Затем выберите Compare difference
из трех точек.
![введите здесь описание изображения](https://i.stack.imgur.com/6vCHb.png)
Мы предоставили вам различие определений на панели (left panel is the original, the right is updated
), и вы четко поймете, на чем следует сосредоточиться, чтобы применить свою идею.
person
Merlin Liang - MSFT
schedule
20.02.2020