1

Я разрабатываю конвейер Release для наших внутренних приложений LOB с использованием управления выпуском TFS 2015 Update2. Существуют различные задачи, такие как «Копирование файлов Windows Machine» и «Запуск PowerShell на целевых компьютерах», для которых в качестве входных параметров необходимо ввести учетные данные администратора. Эти учетные данные администратора имеют административный доступ к целевым узлам. Для этого я использую учетные записи служб Windows. У нас есть организационная политика безопасности, чтобы вращать пароли каждый год.Ведение пароля для управления выпуском TFS

Имея это в виду, громоздко обновлять сотни определений выпуска TFS для нового пароля каждый год.

У вас есть идея справиться с этим?

Благодарим за помощь и предложения.

ответ

1

Вы можете программно обновлять определения выпуска с помощью REST API, который хорошо документирован и довольно прост.

Ex (обратите внимание, что это для обновления 3, а затем, согласно документации, то API в TFS 2015.2 может немного отличаться):

PUT https://fabfiber.vsrm.visualstudio.com/DefaultCollection/ff213d65-d61d-447c-b39d-d16f21b18364/_apis/release/definitions/28?api-version=3.0-preview.1 

Content-Type: application/json

{ "id": 28, "name": "Fabrikam.CD", "createdOn": "2016-04-11T11:04:05.197Z", "createdBy": { "id": "52a5bc8d-4730-400a-95c7-7276d4ae5953", "displayName": "Chuck Reinhart", "uniqueName": "[email protected]utlook.com", "url": "https://fabfiber.vssps.visualstudio.com/_apis/Identities/52a5bc8d-4730-400a-95c7-7276d4ae5953", "imageUrl": "https://fabfiber.visualstudio.com/DefaultCollection/_api/_common/identityImage?id=52a5bc8d-4730-400a-95c7-7276d4ae5953" }, "environments": [ { "name": "Dev", "rank": 1, "deployStep": { "tasks": [] }, "owner": { "id": "52a5bc8d-4730-400a-95c7-7276d4ae5953", "displayName": "Chuck Reinhart", "uniqueName": "[email protected]", "url": "https://fabfiber.vssps.visualstudio.com/_apis/Identities/52a5bc8d-4730-400a-95c7-7276d4ae5953", "imageUrl": "https://fabfiber.visualstudio.com/DefaultCollection/_api/_common/identityImage?id=52a5bc8d-4730-400a-95c7-7276d4ae5953" }, "queueId": 2, "demands": [], "conditions": [], "variables": {}, "runOptions": {}, "environmentOptions": { "emailNotificationType": "Always", "skipArtifactsDownload": false, "timeoutInMinutes": 0 }, "executionPolicy": { "concurrencyCount": 0, "queueDepthCount": 0 }, "preDeployApprovals": { "approvals": [ { "rank": 1, "isAutomated": true, "isNotificationOn": false } ], "approvalOptions": null }, "postDeployApprovals": { "approvals": [ { "rank": 1, "isAutomated": true, "isNotificationOn": false } ], "approvalOptions": null } } ], "artifacts": [ { "alias": "FabrikamCI", "type": "Build", "definitionReference": { "project": { "name": "Fabrikam", "id": "ff213d65-d61d-447c-b39d-d16f21b18364" }, "definition": { "name": "Fabrikam.CI", "id": "1" } }, "isPrimary": false } ], "variables": {}, "triggers": [], "revision": 1, "releaseNameFormat": "", "retentionPolicy": { "daysToKeep": 60 } }

+0

жаль затащили в другие вещи. Переменная проведение PWD возвращается как – Sam

+0

переменная проведение PWD возвращается как "переменных": { "AppPoolIdentityName": { "значение": "SVC-счет" }, "AppPoolIdentityPassword": { "значение" : null, "isSecret": true } Теперь у меня есть 2 переменных, которые являются секретными. Однако с моим вызовом REST Api Update мне нужно обновить один из них. Как это выглядит? Должен ли я включать все в мой вызов Update или только мои изменения, как в Patch. – Sam