2016-06-30 6 views
4

Ich versuche, das Build-Nummer-Format in Teamcity mit Powershell (ein bisschen wie in diesem Octopus Deploy blog post) zu setzen.Wie lege ich die Build-Nummer in Teamcity fest?

Ich weiß jedoch nicht, ob sich die Art und Weise, wie Teamcity die Servicemeldungen bearbeitet, seitdem geändert hat oder ob ich das falsch mache, weil es nicht funktioniert.

Ich habe folgende Powershell-Skript als ersten Schritt in meinem Build-config:

$buildCounter = "%build.counter%" 
$buildConfig = "%system.buildconfig%" 
$version = "%system.majorMinorVersion%" 

$branch = "%vcsroot.branch%" 

if ($branch.Contains("/")) 
{ 
    $branch = $branch.substring($branch.lastIndexOf("/")).trim("/") 
} 

$buildNumber = "${version}.${buildCounter}-${branch}" 

Write-Host "##teamcity[buildNumber '$buildNumber']" 

(Ich habe auch versucht $branch = "%teamcity.build.branch%" auf Linie 5)

Also, wenn ich diese versuchen, die if-Anweisung läuft nicht, denn obwohl es im Beispiel von Octopus Deploy so aussieht, als würde $ branch auf den tatsächlichen Wert von %vcsroot.branch% gesetzt werden, ist dies nicht der Fall und das Ergebnis, dass es in Teamcity geschrieben wird, ist wörtlich ##teamcity[buildNumber '$buildNumber']. Allerdings scheint dies zu funktionieren, aber die Build-Nummer kann / darin nicht enthalten, so dass mein Build fehlschlägt, weil die Verzweigung auf refs/head/master statt master festgelegt ist.

Wohin gehe ich falsch?

+0

Ich benutze PowerShell wie if ("% teamcity.build.branch%". StartsWith ("...")) und Sie haben auch die richtige Syntax zum Schreiben der Build-Nummer. Wenn Sie nach der if-Anweisung den $ -Zweig schreiben, was wird ausgegeben? –

Antwort

3

Es scheint, die letzte Zeile des Skripts sein sollte:

Write-Host "##teamcity[buildNumber '${buildNumber}']" 

Ein Hinweis: für das Skript zu arbeiten, wenn sollte als Inline-Skript in Teamcity Build-Schritt angegeben werden (die Teamcity macht% -Referenzen zu Arbeit).

BTW, können Sie Teamcity Ansicht kurze Zweignamen machen, indem Sie +: refs/heads/* branch specification in der VCS Wurzel

1

Wenn Sie mit Powershell die Build-Nummer ist als Umgebungsvariable auf Ihre Agenten verfügbar , in Powershell als:

$env:BUILD_NUMBER 

Dies ist die Nummer, die Sie durch die Build-Konfigurationen UI konfigurieren können.