AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Teamcity, Umgebungsvariablen

Ein Thema von sahimba · begonnen am 11. Feb 2013 · letzter Beitrag vom 12. Feb 2013
Antwort Antwort
sahimba

Registriert seit: 14. Nov 2011
Ort: Berlin, Hauptstadt der DDR
137 Beiträge
 
Delphi 10 Seattle Professional
 
#1

Teamcity, Umgebungsvariablen

  Alt 11. Feb 2013, 16:50
Hallo!

Ich möchte, während eines Builds, in einem Source file die Revisionsnummer einbinden. Mit Tortoise SVN ginge das mittels "keyword substitution" und $WCREV$ recht einfach (so mache ich das daheim). Hier verwenden wir TeamCity. Also habe ich dem MSBuild Skript folgendes hinzugefügt:

<Exec Command="PowerShell -file ReplaceBuildVcsNumber.ps1" WorkingDirectory="x:\TheFolder" ContinueOnError="false"/>

Das Powerscript selber:

$content = [System.Io.File]::ReadAllText('TheFileToChange')
$revnr = [System.Environment]::GetEnvironmentVariable("BUILD_VCS_NUMBER")
$content = $content.Replace('$build.vcs.number$', $revnr)
[System.Io.File]::WriteAllText('TheFileToChange', $content)

Leider funktioniert das nicht, die Umgebungvariable ist leer.

Also habe ich das Ganze geändert:

<Exec Command="PowerShell -file ReplaceBuildVcsNumber.ps1 -rev %build.vcs.number%" WorkingDirectory="x:\TheFolder" ContinueOnError="false"/>

param([string]$revnr = "rev")
$content = [System.Io.File]::ReadAllText('TheFileToChange')
$content = $content.Replace('$build.svn.number$', $revnr)
[System.Io.File]::WriteAllText('TheFileToChange', $content)

Funktioniert auch nicht.

Letzter Versuch:
<Exec Command="PowerShell -file ReplaceBuildVcsNumber.ps1 -rev %BUILD_VCS_NUMBER%" WorkingDirectory="x:\TheFolder" ContinueOnError="false"/>

Und auch das... funktioniert nicht.

Hat jemand den entscheidenden Hinweis?

Danke und Grüße!


PS: Crosspost http://devnet.jetbrains.com/thread/441776

[EDIT="Phoenix"]Titel korrigiert. Da hat ein c gefehlt [/EDIT]

Geändert von Phoenix (11. Feb 2013 um 18:43 Uhr) Grund: cross post added
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.639 Beiträge
 
#2

AW: Teamity, Umgebungsvariablen

  Alt 11. Feb 2013, 18:25
Hi,

gehts hier um ein neueres Delphi- oder ein Visual Studio Projekt? Hintergrund der Frage: Neuere Delphi-Versionen basieren genauso wie Visual Studio auf MSBuild.

Wenn Du MSBuild als Buildsystem unten drunter hast würde ich nur im absoluten Notfall auf Powershell als integralen Bestandteil meines Build-Prozesses zurückgreifen. In MSBuild selber lässt sich fast alles viel sauberer abbilden. Das schöne ist, das das dann nämlich auch auf jeder Entwicklungsmaschine beim Bauen passiert und sich ein CI-Build somit nicht von einem lokalen Build unterscheidet.

Ein abweichender Build-Prozess auf einem Buildserver kann zu echt massiv schwer nachzuvollziehenden Fehlern führen. So ne tagelange Bugsuche weil sich das lokal nie reproduzieren lässt ist da noch das kleinsten Problemchen...

Was das Ersetzen der SVN-Revisionsnummer angeht, haben wir dazu ein passendes MSBuild-Toolset das nicht nur die SVN-Revision nimmt, sondern z.B. noch zusätzliche Informationen in die .exe schreiben kann wie z.B. ob es in der working copy nicht eingecheckte Changes gibt. Ich hab das ganze gerade nicht zur Hand, also wenn es bis morgen warten kann...
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#3

AW: Teamity, Umgebungsvariablen

  Alt 11. Feb 2013, 18:31
Enviroment Variablen gibt es auf System- und Userebene.
Wenn du die Variablen in der Systemsteuerung -> System setzt solltest du dich abmelden und neu anmelden, weil laufende Prozesse die Änderung nicht mitkriegen.
Setzt man z.B. eine Variable in einer Batchdatei, dann bleibt dies in den Elternprozessen wirkungslos.
Läuft TeamCity als Service? Wenn ja unter welchem Useraccount?
Ein Service ist wieder ein eigener Prozess.
Änderungen an Enviroment Variablen in einem anderen Prozess wirken sich nicht auf den laufenden Service aus.
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.639 Beiträge
 
#4

AW: Teamity, Umgebungsvariablen

  Alt 11. Feb 2013, 18:36
Der TeamCity Build Agent sollte die Variable eigentlich selber setzen bevor der eigentliche Build gestartet wird...

Probier aber mal anstelle von BUILD_VCS_NUMBER den Wert aus BUILD_VCS_NUMBER_DEIN_VCS_ROOT_NAME wie hier beschrieben: http://confluence.jetbrains.com/disp...ned+Properties
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
sahimba

Registriert seit: 14. Nov 2011
Ort: Berlin, Hauptstadt der DDR
137 Beiträge
 
Delphi 10 Seattle Professional
 
#5

AW: Teamcity, Umgebungsvariablen

  Alt 12. Feb 2013, 10:07
Hallo und Danke für Eure Antworten.

Es geht um eine "neuere" Delphi-Version (2010), somit MSBuild. Den Einwand bzgl. der Nachteile eines auf dem Buildserver abweichenden Buildprozesses kann ich sehr gut nachvollziehen, kleinere Probleme gab es aufgrund dessen bereits, im Moment kann ich das aber leider nicht ändern - das Projekt ist über die Jahre gewachsen und manche Neustrukturierung steht an.

Ich werde dem Hinweis zu "BUILD_VCS_NUMBER_DEIN_VCS_ROOT_NAME" nochmal nachgehen, mir ist aber (noch) nicht wirklich klar, was der "simplified VCS root name" sein soll wenn bspw. das zu bauende Projekt unter "https://abc.de/svn/DasProjekt/branches/abc" eingecheckt ist: "DasProjekt_branches_abc"? Ich versuche mein "Glück"

Grüße.
  Mit Zitat antworten Zitat
sahimba

Registriert seit: 14. Nov 2011
Ort: Berlin, Hauptstadt der DDR
137 Beiträge
 
Delphi 10 Seattle Professional
 
#6

AW: Teamity, Umgebungsvariablen

  Alt 12. Feb 2013, 10:09
Was das Ersetzen der SVN-Revisionsnummer angeht, haben wir dazu ein passendes MSBuild-Toolset das nicht nur die SVN-Revision nimmt, sondern z.B. noch zusätzliche Informationen in die .exe schreiben kann wie z.B. ob es in der working copy nicht eingecheckte Changes gibt. Ich hab das ganze gerade nicht zur Hand, also wenn es bis morgen warten kann...
Das wäre sicher interessant

Grüße.
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.639 Beiträge
 
#7

AW: Teamcity, Umgebungsvariablen

  Alt 12. Feb 2013, 11:35
Ich werde dem Hinweis zu "BUILD_VCS_NUMBER_DEIN_VCS_ROOT_NAME" nochmal nachgehen, mir ist aber (noch) nicht wirklich klar, was der "simplified VCS root name" sein soll wenn bspw. das zu bauende Projekt unter "https://abc.de/svn/DasProjekt/branches/abc" eingecheckt ist: "DasProjekt_branches_abc"? Ich versuche mein "Glück"
Da gehts um den VCS-Root-Namen im TeamCity.

Also wenn Du in Deinem TeamCity-Projekt rechts oben auf "Edit Configuration Settings" gehst, und dann rechts auf Punkt 2 -> "Version Control Settings", dann siehst Du ja oben die Tabelle mit einem oder schlimmstenfalls mehreren VCS-Roots

Der Name der dort in der Spalte "VCS Root" steht, das ist der VCS Root Name.
Und simplified ist er dann, wenn Du alle nicht alphanumerischen Zeichen durch underscores ersetzt.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
sahimba

Registriert seit: 14. Nov 2011
Ort: Berlin, Hauptstadt der DDR
137 Beiträge
 
Delphi 10 Seattle Professional
 
#8

AW: Teamcity, Umgebungsvariablen

  Alt 12. Feb 2013, 11:42
Hab noch einen syntaktischen Fehler gefunden:

<Exec Command="PowerShell -file ReplaceBuildVcsNumber.ps1 -rev %BUILD_VCS_NUMBER%" WorkingDirectory="x:\TheFolder" ContinueOnError="false"/>

statt -rev %BUILD_VCS_NUMBER%
nun -rev $(BUILD_VCS_NUMBER)

Im Log sehe ich dann jetzt wenigstens, dass das richtig ausgewertet wird. Die Umgebungsvariable ist also korrekt gesetzt.

Nur das Powershellskript, das lokal funktioniert, scheint da irgendwo zu macken. Ja, man hat es weiter oben schon prophezeit dass derartiges passieren wird
  Mit Zitat antworten Zitat
sahimba

Registriert seit: 14. Nov 2011
Ort: Berlin, Hauptstadt der DDR
137 Beiträge
 
Delphi 10 Seattle Professional
 
#9

AW: Teamcity, Umgebungsvariablen

  Alt 12. Feb 2013, 11:44
PS: Ich weiß jetzt wenigstens, warum ich <werbung mode="on">Finalbuilder<werbung mode="off"> so sehr mag...
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz