누구든지 TeamCity, FinalBuilder 및 Mercurial (KILN)과의 지속적인 통합을 관리합니까? [복제하다

StackOverflow https://stackoverflow.com/questions/2413504

문제

가능한 복제 :
Mercurial + mercurial reeues가있는 Windows의 지속적인 통합 스택?

그렇다면 빌드 프로세스는 어떻게 생겼습니까?

나는 TeamCity가 최종 구매자 스크립트를 운영하도록하는 데 어려움을 겪고 있습니다 (주로 3 도구 모두에 대한 경험/이해가 부족하기 때문에). 지금은 모든 소스 제어 체크 아웃 및 TeamCity를 관리하는 FinalBuilder가 기본적으로 최종 구매자 스크립트를 실행하고 Nunit 테스트 결과에서 읽습니다. 그러나 Mercurial 명령을 가마에 실행하는 동안 인증 오류로 인해 작동하지 않습니다.

도움이 되었습니까?

해결책

FinalBuilder 스크립트를 실행하는 컴퓨터에 Kiln 클라이언트를 설치 한 경우이 문제를 해결 해야하는 "Kilnauth"Mercurial Extension에 액세스 할 수 있습니다.

FinalBuilder 스크립트를 실행하는 사용자로서 빌드 머신에 로그온하고 사용하려는 Mercurial Repository에서 하나의 푸시 또는 풀 명령을 수동으로 실행하면 인증을 요청받습니다. 한 번 인증하면 Kiln Client Extensions는이 사용자에 대한이 인증을 기억합니다. 그리고 FinalBuilder 스크립트의 후속 실행은 잘 인증해야합니다.

이것이 당신에게 문제를 해결합니까? 컴퓨터에 사용자 이름이나 비밀번호를 저장하지 않기 때문에 최상의 솔루션입니다. http : // {username} : {password}@{kiln url} 형식을 사용하기 위해 수은의 경로를 변경하는 것과 같은 다른 가능성이 분명히 있습니다. 그러나 위의 기술만큼 좋거나 안전하지는 않습니다.

이게 말이 되요?

다른 팁

나는 Kiln에 대해 아무것도 모른다. 그러나 나는 방금 VSOFT에서 일하기 시작했고 다음 버전의 FinalBuilder를 위해 수은 행동을하고있다. 이 중 일부가 도움이되기를 바랍니다.

SSH 또는 SSL을 통해 아테신하고 있습니까? 명령 줄에서 저장소로 가져 오거나 밀 수 있습니까? 명령 줄에서 작업 할 수있는 거의 모든 것이 FinalBuilder와 함께 가능해야합니다.

SSH를 통해 Bitbucket에 인증하기 위해 다음을 수행했습니다.

  • Puttygen과 Pageant를 다운로드하십시오
  • Puttygen에서 새로운 SSH 키를 만듭니다
  • 대회에 개인 키를 추가하십시오
  • Bitbucket에 공개 키를 추가하십시오

거기에서 나는 성공적으로 할 수 있습니다

hg push ssh://hg@bitbucket.org/user/repo

NB, 나는 또한 Tortoisehg를 설치했으며 Mercurial은 SSH 클라이언트로서 TortoisePlink를 사용하고 있습니다.

SSL을 사용하는 경우 최종 빌더 동작에 사용자 이름/비밀번호 콤보를 저장할 수 있습니다. TextedIt 상자를 암호 필드로 바꾸려면 PasswordChar 재산 #0 에게 *. 그런 다음 ReadData 이벤트, 같은 것을 추가하십시오

Page.tbPassword.Text = DecryptString(Properties.PropertyAsString("Token"));

그리고 WriteData 이벤트, 추가

Properties.PropertyAsString("Token") = EncryptString(Page.tbPassword.Text);

추가 할 때 Token 당신의 행동에 재산을 틱하십시오 Property is Hidden from Action Inspector 그리고 Property is Read Only in Action Inspector 옵션.

저장소 문자열을 생성하려면 액션에서 이와 같은 일을하고 싶을 것입니다. GetCommandLine 이벤트:

var repo = Context.Properties.PropertyAsString("Repository");
var username = Context.Properties.PropertyAsString("Username");
var password = DecryptString(Context.Properties.PropertyAsString("Token"));
var repo = "ssh://" + username + ":" + password + "@" + repo;

CommandLine.AddArgument("push", repo, qtNone);

NB, 나는 그 코드를 테스트하지 않았지만, 그것은 당신에게 아이디어를 제공하기를 바랍니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top