SBT发布到Visual Studio团队服务(Web)软件包插件回购

问题描述:

我试图在Visual Studio团队服务中使用SBT提供动力的项目,特别是软件包插件。SBT发布到Visual Studio团队服务(Web)软件包插件回购

软件包插件有如何让它与Maven一起工作的明确说明,但我还没有能够确定一种方法来适应SBT的指令,因为它们似乎依赖于配置驱动的黑客攻击Maven HTTP接口。

具体说明我已经是:

到用户的settings.xml添加<servers>标签内凭据

<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> 

注:证书有刻意一点从炒什么实际上分配的原因很明显。强制auth头部的内容是一个标准的Auth-Basic Base64用户名:密码组合。

他们进一步指示

这对你的项目pom.xml中添加两个<repositories>标签和标签<distributionManagement>

我试图打破了用户名和密码了里面,将它们分配给凭证条目并尝试发布到“https://projectspace.pkgs.visualstudio.com/_packaging/java/maven/v1”,但它不可避免地失败。

就我所知,VSTS软件包系统并没有给Realm带来标准的HTTP Auth挑战,没有Realm SBT(或者它是否常春藤?)从不尝试发送凭证,放弃。与此同时,Maven只是在第一次尝试时发送证书。

有没有办法让SBT无论发送凭证,还是类似地附加一个强制性头? (或者我完全误解了这个问题?)

谢谢。

+0

如何指定凭证凭证文件? –

+0

@ starain-MSFT谢谢,您激励我再次尝试从头开始调查,并让我找到答案。 – SattaiLanfear

我想我试图在我的问题中添加更多信息时偶然发现了解决方案。

在试图故意失败,卷曲上传,我在详细输出发现:

< 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突然能够发布。

Hooray。不幸的是,似乎不能保证领域价值是稳定的,但至少现在起作用。

对于其他人的参考,这是我结束了解决方案:

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