2017-09-25 1 views
1

Visual Studio Team Services, 특히 패키지 플러그인에서 SBT 기반 프로젝트를 사용하려고합니다.SBT Visual Studio Team Services (웹) 패키지 게시 플러그인 Repo

패키지 플러그인에는 Maven과 함께 작동시키는 방법에 대한 명시적인 지침이 있지만 SBT에 대한 지침을 채택하는 방법을 결정할 수 없었습니다. Maven HTTP 인터페이스.

구체적인 지침 내가이있다 :

<server> 
    <id>projectspace-visualstudio.com-java</id> 
    <configuration> 
     <httpHeaders> 
      <property> 
       <name>Authorization</name> 
       <!--Treat this auth token like a password. Do not share it with anyone, including Microsoft support. The generated token expires on or before 12/24/2017--> 
       <value>Basic dXNlci5uYW1lOjQ5ZmphMm1leUowZVhBZ09pSktWMVFpTENKaGJHY2lPaUpTVXpJMU5pSXNJbmcxZENJNkltOVBkbU42TlUxZk4zQXRTR3BKUzJ4R1dIbzVNM1ZmVmpCYWJ5SjkuZXlKdVlXMWxhV1FpT2lKak5qZGhORFZoWmkwME5UZ3lMVFpsTlRFdFltUXhNeTB6WTJRMk1HVTJPRGhpTmpjaUxDSnpZM0FpT2lKMmMyOHVaSEp2Y0Y5M2NtbDBaU0IyYzI4dWNHRmphMkZuYVc1blgzZHlhWFJsSWl3aVlYVnBJam9pWTJZM1l6ZGxaRGt0TXpVeE55MDBZalU1TFRrMk4yRXRaalZoWW1RNE16UTNaV1UySWl3aWMybGtJam9pWVdZek1XRXpOVEF0TXpBNVl5MDBNalF3TFdKbU1XRXRZelV4TURJek5HWXhPV0ppSWl3aWFYTnpJam9pWVhCd0xuWnpjM0J6TG5acGMzVmhiSE4wZFdScGJ5NWpiMjBpTENKaGRXUWlPaUpoY0hBdWRuTnpjSE11ZG1semRXRnNjMzFaR2x2TG1OdmJYeDJjMjg2WWpFME5tUTBZalF0TVRSaU55MDBOVE5qTFdJNU5qa3RZVEpoTXpsaFpEZGtNVGc0SWl3aWJtSm1Jam94TlRBMk16M016UTVMQ0psZUhBaU9qRTFNVFF4TkRNek5UQjkuQkJLY25Wa1dZbHYwTFJrZkVIQnpEY3loaFJodTFwTmhFNk51WTB5UEFDTDY4MktiRGVTRXNTUWFZSkJOcG82Y3Bnal9lZThBbkhqc1otUG1PYWY0aGtsVE1Dd3hwbDhuTXdSRzVYeGJWMTFFS1lTOFFhMTdvWFFGY1JIMl9JbG84MlJMMS1PWlAxXzExcEZ0TU1ST0tTVW85X0ttTGM3RzF2YWlJcXc5YkFrejEyemRGeUNobVJEWmFDdWFBV1NQaUU1VVRPaV9aMi1oS291UVBWd0E4N29oelpZMjU0X25fN0o3UFdnczUweXVOaXZRc3Q5Y1U5MGJPMWNZWHUyMmtLMEVyeC05ZlptMUlwWGRoQ1hkZm1aTDlxUWFSbnp5dW9QaGVFelJoZWd6bExNTjFSaVk1U0FwOENqR1FnR3NmWEZsNlNMTnNYYnhUOUd0YjVGRUJ3</value> 
      </property> 
     </httpHeaders> 
    </configuration> 
</server> 

참고 <servers> 태그 안에 사용자 Settings.XML의 자격 증명을 추가 자격 증명은 의도적가 조금에서 스크램블 무엇 명백한 이유로 실제로 배정되었습니다. 강제되는 인증 헤더의 내용은 표준 Auth-Basic Base64 사용자 이름 : 암호 조합입니다.

그들은 더,

<repositories> 태그와 내가 해당 사용자 이름과 암호를 깨는 시도했습니다

<repository> 
    <id>projectspace-visualstudio.com-java</id> 

    <url>https://projectspace.pkgs.visualstudio.com/_packaging/java/maven/v1</url> 
    <releases> 
     <enabled>true</enabled> 
    </releases> 
    <snapshots> 
     <enabled>true</enabled> 
    </snapshots> 
</repository> 

<distributionManagement> 태그 모두 내부 프로젝트의 pom.xml이 추가 지시 자격 증명 항목에 할당하고 "https://projectspace.pkgs.visualstudio.com/_packaging/java/maven/v1"에 게시하려고 시도하지만 필연적으로 실패합니다.

VSTS 패키지 시스템은 렐름과 함께 표준 HTTP Auth 챌린지를 제공하지 않으며 렐름 SBT가 없거나 아이비가 없어도 포기하지 않고 포기하려고합니다. 한편 Maven은 첫 번째 시도에서 자격 증명을 보냅니다.

SBT가 자격 증명을 상관없이 보내거나 이와 유사하게 필수 헤더를 첨부 할 수있는 방법이 있습니까? (아니면 문제를 완전히 잘못 진단 했습니까?)

고마워요.

+0

: 다른 사람의 참고로

, 이것은 내가 함께 결국 해결책은? –

+0

@ starain-MSFT 감사합니다. 처음부터 다시 조사를 시도하고 대답을 찾도록 유도했습니다. – SattaiLanfear

답변

1

나는 내 질문에 더 많은 정보를 추가하려고 시도하면서 해결책을 발견했다고 생각합니다.

의도적으로 CURL로 업로드를 실패하는 시도시

, 나는 자세한 출력에서 ​​발견 :

< WWW-Authenticate: Bearer authorization_uri=https://login.windows.net/67dd666e-d00e-4f5f-9f71-76760f050c78 
< WWW-Authenticate: Basic realm="https://pkgsprodscussu2.app.pkgs.visualstudio.com/" 
< WWW-Authenticate: TFS-Federated 

https://pkgsprodscussu2.app.pkgs.visualstudio.com/ 내 영역을 변경하면 SBT 갑자기 게시 할 수 있었다.

만세 불행히도 영역 값이 안정하다는 보장이없는 것 같지만 적어도 현재는 효과가 있습니다. 에 대한 자격 증명의 자격 증명이 파일을 지정하는 방법

publishTo in ThisBuild := Some("vsts" at "https://projectspace.pkgs.visualstudio.com/_packaging/java/maven/v1/") 

credentials in ThisBuild += { 
    import java.nio.charset.StandardCharsets 
    import java.util.Base64 

    val decodedArray: Array[Byte] = Base64.getDecoder.decode(
    """dXNlci5uYW1lOjQ5ZmphMm1leUowZVhBZ09pSktWMVFpTENKaGJHY2lPaUpTVXpJMU5pSXNJbmcxZENJNkltOVBkbU42TlUxZk4zQXRTR3BKUzJ4R1dIbzVNM1ZmVmpCYWJ5SjkuZXlKdVlXMWxhV1FpT2lKak5qZGhORFZoWmkwME5UZ3lMVFpsTlRFdFltUXhNeTB6WTJRMk1HVTJPRGhpTmpjaUxDSnpZM0FpT2lKMmMyOHVaSEp2Y0Y5M2NtbDBaU0IyYzI4dWNHRmphMkZuYVc1blgzZHlhWFJsSWl3aVlYVnBJam9pWTJZM1l6ZGxaRGt0TXpVeE55MDBZalU1TFRrMk4yRXRaalZoWW1RNE16UTNaV1UySWl3aWMybGtJam9pWVdZek1XRXpOVEF0TXpBNVl5MDBNalF3TFdKbU1XRXRZelV4TURJek5HWXhPV0ppSWl3aWFYTnpJam9pWVhCd0xuWnpjM0J6TG5acGMzVmhiSE4wZFdScGJ5NWpiMjBpTENKaGRXUWlPaUpoY0hBdWRuTnpjSE11ZG1semRXRnNjMzFaR2x2TG1OdmJYeDJjMjg2WWpFME5tUTBZalF0TVRSaU55MDBOVE5qTFdJNU5qa3RZVEpoTXpsaFpEZGtNVGc0SWl3aWJtSm1Jam94TlRBMk16M016UTVMQ0psZUhBaU9qRTFNVFF4TkRNek5UQjkuQkJLY25Wa1dZbHYwTFJrZkVIQnpEY3loaFJodTFwTmhFNk51WTB5UEFDTDY4MktiRGVTRXNTUWFZSkJOcG82Y3Bnal9lZThBbkhqc1otUG1PYWY0aGtsVE1Dd3hwbDhuTXdSRzVYeGJWMTFFS1lTOFFhMTdvWFFGY1JIMl9JbG84MlJMMS1PWlAxXzExcEZ0TU1ST0tTVW85X0ttTGM3RzF2YWlJcXc5YkFrejEyemRGeUNobVJEWmFDdWFBV1NQaUU1VVRPaV9aMi1oS291UVBWd0E4N29oelpZMjU0X25fN0o3UFdnczUweXVOaXZRc3Q5Y1U5MGJPMWNZWHUyMmtLMEVyeC05ZlptMUlwWGRoQ1hkZm1aTDlxUWFSbnp5dW9QaGVFelJoZWd6bExNTjFSaVk1U0FwOENqR1FnR3NmWEZsNlNMTnNYYnhUOUd0YjVGRUJ3""" 
) 

    val decodedString = new String(decodedArray, StandardCharsets.UTF_8) 

    print("decoded: ") 
    println(decodedString) 

    val Array(userName, passwd) = decodedString.split(":", 2) 

    Credentials(
    realm = "https://pkgsprodscussu2.app.pkgs.visualstudio.com/", 
    host = "projectspace.pkgs.visualstudio.com", 
    userName = userName, 
    passwd = passwd 
) 
} 
+0

@ starain-MSFT는 알림을 보내 주셔서 감사합니다. 처음 게시 할 때 알려주지 않았습니다. – SattaiLanfear

관련 문제