2013-09-05 4 views
7

Sto utilizzando git flow con teamcity come mio server CI. Mi piacerebbe estrarre artefatti dall'ultima build di successo su un particolare ramo.L'API REST di Teamcity ottiene l'ultima build di successo su un ramo

posso usare questo URL per ottenere l'ultima generazione su un ramo: http://$teamcity$/httpAuth/app/rest/buildTypes/name:$BuildTypeName$/builds/branch:name:$branchName$

ma non riesce se il nome del ramo contiene / (ad esempio, i nomi di flusso git rami feature/% e release/%).

Ho provato la codifica url /. Ad esempio, se $branchName$> == 'release/branchName' io uso /builds/branch:name:release%2F$branchName$).

  • opere - /builds/branch:name:develop
  • fallisce - /builds/branch:name:release%2F$branchName$.

Non si verifica un errore API, ma il risultato API è vuoto.

risposta

3

A quanto pare questo è un bug in TeamCity al 8.0.3

Sembra che è in lavorazione.

+1

Ancora un problema a partire da 9.0.1. –

5

È possibile aggirare il problema inserendo il localizzatore di build in una stringa di query anziché come parte dell'elemento di percorso dell'URL, ad esempio, anziché /builds/branch:name:release%2F1.0.1 o simili, è possibile eseguire /builds?locator=branch:name:release%2F1.0.1. Il formato dei dati che ritornano non sembra essere lo stesso, ma include l'ID di build interno, quindi puoi sempre fare una seconda richiesta per quella build esatta usando quell'ID, ad es. /builds/id:3332.

Un altro punto, che non ho provato personalmente, viene trovato il this comment da JetBrains' issue tracker:

Ho approfondito questo un po 'e ha scoperto che le versioni di Tomcat 6.0.10 e più recenti di default don' t accettare più barre e barre rovesciate in elementi del percorso. Questo comportamento può essere modificato cambiando due proprietà server Tomcat (che si trova sulla http://tomcat.apache.org/security-6.html#Fixed_in_Apache_Tomcat_6.0.10):

-Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true 
-Dorg.apache.catalina.connector.CoyoteAdapter.ALLOW_BACKSLASH=true 

Non so se questa è considerata una pratica di sicurezza male.