2016-08-11 2 views
1

클라이언트 용 자식 저장소의 설정을 자동화하는 중입니다. 여기에는 TFS 2015에서 빌드 템플릿 정의를 설정하는 작업이 포함됩니다.이 템플릿의 구성을 다른 많은 빌드/배포 관련 파일과 함께 별도의 리포지토리에 저장하도록 선택했습니다 (수백 개의 repos가 있으며 모두 기본적으로 유사한 빌드를 공유합니다).).TFS 2015 Team Services의 비밀 변수 설정 REST API를 통해 빌드

I합니다 (VSTS/VSO 빌드 시스템과 매우 유사) 새로운에-프렘 TFS 2015 빌드 시스템을 사용하고 모든 종류의 것들에 대한 API를 조회하고 있습니다. Build definitionsBuild Definition Templates은 제가 지금 당장 작업하고있는 부분입니다. 제 특정 문제가있는 곳입니다. (저장된 빌드 정의 또는 빌드 정의 템플릿 중 하나에 대한) 조회 할 때

Secured Variable in TFS UI

이 이, TFS가 바르게을 반환

:

빌드 변수의 수는 I 개인 유지하고 싶은 API 키를 포함 "보안"으로 설정된 모든 변수에 대한 빈 문자열 - 응답 JSON에는 "비밀"인 변수에 대한 참조가 없습니다.

전화 열린 우리당 (문서에 정의)

GET 은 https : // {예를 내가 빌드 정의 (빌드 정의 템플릿에 대한 동일)를 검색 할 때 다음 JSON의 발췌 반환의 }/DefaultCollection/{프로젝트}/_ API를/빌드/정의/{definitionId}? API 버전 = {버전} [& 개정 = {INT}]

발췌

"variables": { 
    "system.debug": { 
     "value": "false", 
     "allowOverride": true 
    }, 
    "system.prefergit": { 
     "value": "true" 
    }, 
    "MySecureVariable": { 
     "value": "" 
    } 
} 

"isSecret"또는 이와 유사한 속성이있을 것으로 예상되지만 문서 나 예제를 찾을 수 없습니다. 도큐멘트는 이 아니고이 지원되는지 언급하지 못해 손실을 입었습니다.

변수를 값으로 설정하면 (예 : 빌드 정의 템플릿을 사용하여 새 빌드 정의를 작성하는 경우) UI에서 '보안'옵션이 사용 중지되고 키가 표시됩니다. 누군가가 UI에 들어가서 변수를 수동으로 비밀로 표시 할 수 있다고 주장 할 수 있지만, 그것은 건망증에 도움이되는 추가 단계입니다.

이 비밀 변수는 암호 안전에 저장되어 있으며, 런타임에 스크립트를 실행하는 사람에게 암호를 입력하라는 메시지가 표시됩니다 (또는 아직 안전하지 않은 것으로부터 읽기를 자동화합니다). 그것은 요점 옆에있다.

누구든지 API를 통해 보안 변수를 직접 설정할 수있는 방법에 대해 조언 할 수 있습니까?

답변

1

TFS UI에서 변수를 설정하는 동안 디버깅/HTTP 트래픽 모니터링을 수행하여 알아 냈습니다. 근본적으로, 나의 추측은 정확했다!

빌드 정의 템플릿 또는 빌드 정의를 설정하는 방법에 관계없이 TFS는 REST API를 통해 변수가 비공개임을 결코보고하지 않습니다. 그러나 템플릿을 다른 곳에 저장하거나 "빌드 정의 가져 오기"또는 "빌드 정의 템플릿 가져 오기"REST API 호출에서 반환 된 JSON 객체를 조작하는 경우 직접 설정을 설정할 수 있습니다.당신이 사용하는 경우 그 변수가 비밀로 표시됩니다 것을 의미하지 않는다

"variables": { 
    "system.debug": { 
     "value": "false", 
     "allowOverride": true 
    }, 
    "system.prefergit": { 
     "value": "true" 
    }, 
    "MySecureVariable": { 
     "value": "", 
     "isSecret": "true" 
    } 
} 

저장하기 REST API를 통해 빌드 정의 템플릿에서이 설정을 그 TFS UI를 통해 템플릿 :

내 예를 들어 위가된다. 그러나 스크립트를 통해 빌드 정의 작성을 자동화하고 특성을 설정하면 결과 빌드 정의는 변수를 비공개로 표시합니다.

얼마나 대단한가요?