2012-08-30 6 views
17

Ho una build CI che estrae i rami di feature da Github e li costruisce/li impacchetta in una cartella locale, utilizzando una convenzione di denominazione delle cartelle basata sul progetto, ramo e numero di build.Come posso sostituire il nome del ramo <default> in TeamCity 7.1 utilizzando il supporto per le ramificazioni Git?

Per i rami denominati (feature1, feature2) funziona perfettamente.

Il problema è che quando faccio un commit al maestro, TeamCity espone teamcity.build.branch come <default> - il che significa che quando il passaggio di generazione espande

E:\Packages\MyProject\%teamcity.build.branch%\

è finire con E:\Packages\MyProject\<default> - che sta quindi bloccando il passo di costruzione perché non è un percorso di Windows valido.

ho può vedere il nome branch master nel parametro di build completamente qualificato:

teamcity.build.branch       <default> 
teamcity.build.checkoutDir     C:\TeamCity\BuildAgents\agent-mulder\work\2151838a7933464d 
teamcity.build.default.checkoutDir   2151838a7933464d 
teamcity.build.id        16347 
teamcity.build.vcs.branch.github_myproject refs/heads/master 

ma idealmente ho bisogno di ottenere maestro come teamcity.build.branch per l'utilizzo nei miei passi di compilazione .

Posso trasformare il parametro in fase di esecuzione? Ignora il comportamento? Ho persino provato a impostare il nome del ramo VCS su DO_NOT_USE nella speranza che "master" non corrisponda più al valore predefinito, ma non sembra funzionare.

+1

Ho aggiunto un ticket al loro progetto YouTrack per TeamCity, purtroppo viene visualizzato come una domanda, non un problema di usabilità, ma se possiamo ottenere più persone che commentano può aiutare: http://youtrack.jetbrains.com/issue/ TW-23699 – markus101

+0

perché non aggiungere un condizionale allo script di build che mappa '' "' a '" master "'? –

risposta

3

Non ideale, ma sono stato in grado di aggirarlo creando un nuovo ramo in git denominato "teamcity" e impostandolo come il ramo predefinito in TeamCity, sembra richiedere che il ramo esista effettivamente, poiché ha funzionato quando Ho creato il ramo, ma non l'ho fatto quando hai appena inserito un nome falso.

Speriamo che in realtà risolvono questo, perché questo è decisamente un hack.

2

Abbiamo incontrato questo problema diverse volte durante la creazione di pipeline. È il più visibile quando si tenta di creare automaticamente feature e rilasciare filiali utilizzando il flusso di lavoro Gitflow. Quello che siamo stati in grado di fare è stato utilizzare teamcity.build.vcs.branch.github_myproject e un'espressione regolare in sed per disinfettare la stringa ogni volta che desideriamo utilizzarla. Si tratta principalmente di artefatti con filigrane a scopo di debug.

Il problema più grande, almeno per noi, è che la versione di TeamCity 7.1.1 non attiva automaticamente le build di dipendenza per tutto ciò che non è la build predefinita nella root VCS. Ovviamente questo è un enorme punto dolente dato che ora dovremo fare clic manualmente nello strumento. Non abbiamo ancora trovato un modo pulito per aggirare questo diverso da git in git che usano l'API HTTP per chiamare la fase di compilazione corretta.

4

In teamcity 7 è semplicemente% vcsroot.branch% che restituisce lo sviluppo.

Nel mio caso ho

%MajorVersion%.%MinorVersion%.%PatchVersion%-%vcsroot.branch% 

Quali sono tutti impostati parametri di costruzione. Il formato numero è% BuildFormatSemVer%, che è la roba sopra e.{0}

%BuildFormatSemVer%.{0} 

che restituisce

#1.0.0-develop.4 
+0

Aveva lo stesso problema. Sembra funzionare fino ad ora, qualsiasi scenario in cui non funziona come avrebbe fatto% teamcity.build.branch%? Le diramazioni di – angularsen

+0

(supponendo che le si costruisca come qualsiasi altra cosa) causerebbero problemi dovuti al/ –

+0

L'uso di pararchi nella guida delle specifiche delle diramazioni? Almeno% teamcity.build.branch% utilizza solo quella parte del nome. Ad esempio: +: refs/heads/hotfix/(\ *) +: refs/heads/release/(\ *) – angularsen

1

Non so se questo è stato precedentemente risposto, o è più rilevante.

In TeamCity 10.0.2 creare un parametro personalizzato come% Git.Reference%. Se hai bisogno di un pull (o push) da TC a git, impostalo su "ref/head/Dev" o "ref/Head/yourbranch". Utilizzare questo nel riferimento 'VCS root'.

Problemi correlati