2013-08-22 1 views
2

Team City 빌드 단계에서 Powershell 스크립트를 실행하려고합니다.사전 인증 Powershell WebClient 요청 팀 팀 8.0 REST API

스크립트는 WebClient를 사용하여 Team City의 REST API에 연결합니다. 현재 Team City에 로그인하고 PowerShell 빌드 단계에서 사용자 이름과 암호를 인수로 하드 코드해야합니다. 누군가가 당신 만 REST API의 읽기 액세스를 필요가있는 경우 암호

+0

당신이 당신의 PowerShell 스크립트에 자격 증명을 제공하고자 할 때 다음을 하드 코딩하지 않으면? – Mitul

+0

Team City에 로그인하기 위해 제공 한 자격 증명을 사용하려고합니다.이 스크립트 중 하나를 실행할 수있는 유일한 방법은 Team City 웹 UI를 통해 서버에 액세스하기 위해 사용자 이름과 암호를 제공 한 후입니다. – ShaneC

답변

1

답변 주셔서 감사합니다. 그러나 빌드 매개 변수로 사용자 이름과 암호를 제공해 드렸습니다.

TeamCity에 내장 된 암호 보호 기능으로 우리를 도왔습니다.

이렇게하면 powershell 스크립트를 실행하기 위해 하나의 계정을 사용하지만 웹 UI에 로그인 할 때 사용한 자격 증명에서 누가 빌드를 시작했는지 확인할 수 있습니다.

우리는 추적 가능한 책임을 유지하고 사용자 이름과 암호의 지속적인 입력을 중단했습니다.

상세 정보 : confluence.jetbrains.com/display/TCD7/Typed+Parameters

4

을 하드 코딩하지 않고 나는 현재 내 PowerShell 스크립트에서 도시 Team 팀 인증을 사용하고있는 자격 증명을 전달하는 방법을 알고 있다면

궁금 해요 (즉, POST/PUT/DELETE는 GET 만하고 싶지는 않습니다.) 그런 다음 teamcity 생성 된 사용자 이름과 암호를 사용하십시오.

이 사용자 이름/암호 쌍은 각 빌드마다 생성되며 빌드 실행 중에 만 유효합니다.

  • 가 $의 ENV 읽기 : 이것은 당신의 PowerShell 스크립트에 액세스 할 수 있습니다 어떻게 만들이 위해/유효를 생성하는 빌드 특성 파일의 전체 경로를 보유하고 TEAMCITY_BUILD_PROPERTIES_FILE 환경 변수를

  • 이 파일은 간단한 key = value java prop 파일입니다. teamcity.auth.userId 및 teamcity.auth.password 등록 정보의 값을 구문 분석해야합니다. 또는 더 나은 방법은 스크립트 초기화 단계에서 모든 소품을 항상 구문 분석하고 powershell 스크립트의 해시 테이블에 넣는 것입니다.

REST API에 대한 쓰기 액세스가 필요한 경우이 uid/pwd 쌍을 사용할 수 없습니다. 이를 위해 저는 osx의 키 체인과 windows의 keepass db를 사용하고 있습니다. Keepass에는 powershell에서 액세스 할 수있는 멋진 .net API가 있습니다. 새로운 keepass db를 만들고, 암호가 아닌 키로 잠금 해제 가능하게 만들고, 빌드 에이전트를 실행하는 사용자가이 키와 다른 키에 액세스 할 수 있는지 확인한 다음 keepass api를 사용하여 db의 잠금을 해제하고 teamcity admin을 읽습니다. 계정 및 암호는 나머지 API에서 POST/PUT/DELETE를 수행 할 수 있습니다.

+1

대신 스크립트 내에서 프로퍼티 파일을 파싱 할 때'$ username'과'$ password'를 powershell 스크립트 params로 선언하고 Build Step 설정 페이지에서 'Script arguments'텍스트 박스에 다음과 같이 전달할 수 있습니다 :'% system.teamcity .auth.userId % system.teamcity.auth.password %'. 서버 URL을'% teamcity.serverUrl %'로 전달할 수도 있습니다. –

+0

그게 바로 내가 뭘하고 있었는지, 질문을 게시 할 때, 나는 Team City에 익숙하지 않았고 그것은 REST API이다.TC를 실행하는 대부분의 스크립트는 이제 자동 인증에 대해 동일한 방법을 사용합니다. 일부 빌드에서는 사용자가 자신의 계정 이름과 비밀번호를 제공해야합니다 (여기에 설명 된 것처럼) : http://blog.jetbrains.com/teamcity/2013/05/typed-parameters-and-continuous-deployment / – ShaneC

관련 문제