So aktualisieren Sie eine TeamCity build-parameter die Verwendung von REST+cURL
Habe ich eine Konfigurations-parameter namens "Test" in einem meiner build-Konfigurationen in TeamCity. Nach einem Blick auf die TeamCity REST-API-doc hier ich bekommen konnte Informationen über diese parameter mit den folgenden cURL-Kommandozeilen-Befehle unter Windows:
(1) curl -X GET -H "Authorization: Basic (...)" http://teamcity:8080/httpAuth/app/rest/buildTypes/id:bt7/parameters
(2) curl -X GET -H "Authorization: Basic (...)" http://teamcity:8080/httpAuth/app/rest/buildTypes/id:bt7/parameters/testing
Antwort:
(1) <?xml version="1.0" encoding="UTF-8" standalone="yes"?><property name="testing" value="11"/></properties>
(2) 11
Aber dann, wenn ich versuche zu aktualisieren, die diese "Prüfung" build-parameter mit den folgenden Befehl ein, erhalte ich eine Fehlermeldung:
curl -X PUT -d "1" -H "Authorization: Basic (...)" http://teamcity:8080/httpAuth/app/rest/buildTypes/id:bt7/parameters/testing
Antwort:
Error has occurred during request processing (Unsupported Media Type).
Error: javax.ws.rs.WebApplicationException
Not supported request. Please check URL, HTTP method and transfered data are correct.
Ich bereits erfolgreich mit einem ähnlichen Befehl zum aktualisieren der buildNumberCounter Einstellung der gleichen build-Konfiguration:
curl -X PUT -d "1" -H "Authorization: Basic (...)" http://teamcity:8080/httpAuth/app/rest/buildTypes/id:bt7/settings/buildNumberCounter
Deswegen dachte ich, ich kann das gleiche tun mit einem build-parameter in ähnlicher Weise. Was vermisse ich hier?
UPDATE:
Habe ich es geschafft ein update der "Test" build-parameter mit dem Wert "1" mit Fiddler. Die Anfrage, die ich komponiert hatte folgenden Inhalt:
- Anfrage:
PUT
- URL:
http://teamcity:8080/httpAuth/app/rest/buildTypes/id:bt7/parameters/testing
- - Request-Header:
Authorization: Basic (...)
- - Request-body:
1
Also das problem mit der cURL-Befehl oben wird wohl irgendwo um die -d "1" option. Aber wo?
UPDATE 2:
Ich bin mir nicht sicher, ob das einen Unterschied macht, aber ich benutze diese cURL bauen auf Windows 7.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Statt der Fixierung des fehlerhaften cURL Befehl, als eine Abhilfe, die wir jetzt benutzen, Node.js zu verfassen und senden Sie die REST-Anforderung zum TeamCity.
Das Skript, die zugeführt werden muss, um node.exe ist wie folgt:
Obwohl der workaround funktioniert perfekt, ich würde immer noch gerne wissen, was falsch mit den oben genannten cURL-Befehl?
Für Parameter, die nicht-XML-wie die, die Sie sind, Fragen, nur hinzufügen:
--Header "Content-Type: text/plain"
Für Parameter, XML -, dann werden Sie wechseln wollen, dass:
--Header "Content-Type: application/xml"
Ich hatte eine harte Zeit, herauszufinden this out auch, aber ich fand die Antwort. Anstelle der Verwendung von -d und -H auf der Vorderseite. Verwenden Sie --Daten --und-header am Ende wie unten gezeigt . Ich fand diese in der TeamCity docs begraben in einem "click to expand" Beispiel.
Setzen build-Nummer Zähler:
Setzen build-Nummer format:
Ich denke, die
REST API
erwartenXML
als Eingabe, fügen Sieund XML als Eingabe. Wenn Sie eine
XML
Dateifile.xml
:Build configuration parameters: GET/DELETE/PUT http://teamcity:8111/httpAuth/app/rest/buildTypes/<buildTypeLocator>/parameters/<parameter_name> (accepts/produces text/plain)
Und auch siehe mein update oben, schaffte ich es, aktualisieren Sie die parameter mit Fiddler ohne manuelle Einstellung für den content-type XML.