2017-07-24 3 views
1

Mit Team-Stadt 2017.01.01 (Build 46654) Ich versuche, Artefakte zum Download von Powershell unter Windows mit REST 10.Download-Artefakte REST von Team-Stadt mit

Ich bin mit diesem: https://confluence.jetbrains.com/display/TCD10/REST+API#RESTAPI-BuildArtifacts

aber Ich kann es immer noch nicht zur Arbeit bringen. Als Beispiel versuche ich das info.txt Artefakt herunterladen, die ich zugreifen kann mein Browser von der unter URL:

http://mytc/repository/download/MyBuildConfiguration/294859:id/output/logs/info.txt 

Basierend auf: https://confluence.jetbrains.com/display/TCD10/REST+API#RESTAPI-BuildArtifacts

Ich tue das folgende von Powershell:

$TeamCityUser = 'tcuser' 
$TeamCityPassword = 'tcpass' 
$securePassword = ConvertTo-SecureString $TeamCityPassword -AsPlainText -Force 
$creds = New-Object System.Management.Automation.PSCredential($TeamCityUser, $securePassword) 

$response = Invoke-WebRequest http://mytc/httpAuth/app/rest/builds/294859:id/artifacts/output/logs/info.txt -Credential $creds 

Aber ich bekomme die Fehlermeldung:

Invoke-WebRequest : The remote server returned an error: (400) Bad Request. 

Basierend auf folgenden Vorschlag habe ich jetzt versucht:

$response = Invoke-WebRequest http://mytc/httpAuth/app/rest/builds/id:294859/artifacts/output/logs/info.txt -Credential $creds 

Aber noch erhalten:

Invoke-WebRequest : The remote server returned an error: (404) Not Found. 

Irgendwelche Ideen?

+0

Haben Sie [this] (https://stackoverflow.com/questions/14242139/how-do-i-download-a-protected-file-using-powershell) gesehen? – grundic

Antwort

1

Sie rekursiv die Artefakte eines bestimmten Build navigieren können:

http://mytc/httpAuth/app/rest/builds/id:294859/artifacts/ Und verwenden Sie den Knoten: children der Antwort.

Antwort könnte sein:

<files count="1"> 
    <file name="output" modificationTime="20170724T160034+0200" href="/httpAuth/app/rest/builds/id:294859/artifacts/metadata/output"> 
     <children href="/httpAuth/app/rest/builds/id:294859/artifacts/children/output"/> 
    </file> 
</files> 

Dann machen die gleiche Anfrage an: children.href, Sie ein weiteres Kind haben kann. (dh: Protokolle) Wenn Sie den gewünschten Blatteintrag anstelle des untergeordneten Knotens erreichen, verfügen Sie über einen Inhaltsknoten mit dem href, den Sie aufrufen möchten.

<files count="1"> 
    <file name="info.txt" size="75435" modificationTime="20170724T160034+0200" href="/httpAuth/app/rest/builds/id:3906258/artifacts/metadata/output/logs/info.txt"> 
     <content href="/httpAuth/app/rest/builds/id:3906258/artifacts/content/output/logs/info.txt"/> 
    </file> 
</files> 

Die rekursive Verwendung der Antworten stellt sicher, dass der Pfad des Artefakts korrekt ist und der Fall. Und stellt sicher, dass das Artefakt noch verfügbar ist.

0
+0

Versucht das auch, der gleiche Fehler, siehe aktualisierten Beitrag. – u123

+0

ich verwendet, um die folgende URL https: // Teamcity/HTTPAuth/app/Rest/Builds/ID: 6590/Artefakte/content/jar/arm.jar wo jar/arm.jar ist das Artefakt Weg Sie sollte auch '/ content /' zu url hinzufügen – oryades