AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Subversion Revision in die Compilierung aufnehmen
Thema durchsuchen
Ansicht
Themen-Optionen

Subversion Revision in die Compilierung aufnehmen

Ein Thema von David Martens · begonnen am 31. Mai 2012 · letzter Beitrag vom 1. Jun 2012
Antwort Antwort
David Martens

Registriert seit: 29. Sep 2003
205 Beiträge
 
Delphi XE Enterprise
 
#1

Subversion Revision in die Compilierung aufnehmen

  Alt 31. Mai 2012, 18:37
Delphi-Version: XE
Folgende Situation:

Wir benutzen Jenkins als NightlyBuild Server um per Commandline unser Projekte täglich (kurz vor Release stündlich) zu erstellen.

Von einem anderen Entwickler wurde auf ein recht krude Art die rc-Datei jedesmal neu erstellt. Mit "svn info" Revision lesen, rc-Datei einlesen und 'VALUE "FileVersion"', 'FILEVERSION' und 'PRODUCTVERSION' auf x.x.x.SVNREVISION gesetzt. Das ganze natürlich mit grausigem AnsiPos und StringReplace.

Ich bin gerade dabei den ganzen Buildprozess von einer Batchdatei auf Python umzustellen. Am liebsten wäre mir eine Möglichkeit der dcc32.exe eine Version als Flag zu übergeben, aber das wird nicht gehen.

Für die IDE ist das alles nicht notwendig, da die Entwickler keine Exen bereitstellen sondern alles über Jenkins läuft.

Was mir jetzt vorschwebt ist eine vernünftige Komponente oder so mit der ich die rc-Datei aktualisieren kann. So das ich folgendes aufrufe: 'changeVersion.exe SVNREVISION Project.rc'

Die ResourceUtils hab ich mir schon angesehen und auch die PJResFile. Leider alle nur für *.res.

Wenn es nicht anders geht nehme ich auch die, aber damit hatte ich bisher keinen Erfolg.
  Mit Zitat antworten Zitat
bernhard_LA

Registriert seit: 8. Jun 2009
Ort: Bayern
1.136 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Subversion Revision in die Compilierung aufnehmen

  Alt 31. Mai 2012, 20:30
ist bei XE der FinalBuilder mit dabei ? der kennt auch SVN actions und kann den delphi compiler steuern ... (http://www.finalbuilder.com/)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#3

AW: Subversion Revision in die Compilierung aufnehmen

  Alt 31. Mai 2012, 20:52
Ja, bei XE ist eine abgespeckte Emba-Version des FinalBuilders bei,
aber für einen automatischen Build auf 'nem Server ist der nicht vorgesehn.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.580 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Subversion Revision in die Compilierung aufnehmen

  Alt 31. Mai 2012, 21:10
Die ResourceUtils hab ich mir schon angesehen und auch die PJResFile. Leider alle nur für *.res.

Wenn es nicht anders geht nehme ich auch die, aber damit hatte ich bisher keinen Erfolg.
Da gibt es TPEResourceModule, mit dem man auch die .exe aktualisieren kann. Das ist aber gar nicht notwendig.
Ein fertiges Open Source Tool, das das damit macht, findest du hier:
http://www.jasontpenny.com/blog/2009...in-res-or-exe/

Wir machen das aber anders:
Ich schreibe die Version einfach im PreBuild-Event mit diesen Units in die .res Datei hinein. Dann kompiliert Delphi die gleich mit ein und ich brauche keine eigene .rc Datei. Heißt man kann die anderen Versionsinfos auch in Delphi normal editieren. (Und wenn man die Version nur an der letzten Stelle ergänzt, geht das sogar mit der restlichen Version.)
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

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

AW: Subversion Revision in die Compilierung aufnehmen

  Alt 1. Jun 2012, 07:48
Das ist aber alles ziemlich umständlich :-/

1.) Wieso Batch-files oder noch schlimmer Scripte in anderen Sprachen zum bauen?
Delphi verwendet intern MSBuild, und es gibt keinen Grund um diese sehr umfangreiche und mächtige Build-Plattform noch irgendwas drumrum zu bauen. Was man mit MSBuild nicht hinbekommt, bekommt man auch nicht anderen Scripten hin.

2.) http://thekindofme.wordpress.com/200...-build-target/
Das ganze baut auf den MSBuild Community Tasks auf, die es auf Codeplex gibt.
Diese Tasks sind Erweiterungen für MSBuild und in dem Beispiel hier wird gezeigt, wie man die SVN Revision in eine MSBuild-Variable (heisst dort Property) ausliest und mittels des FileUpdate-Tasks in eine beliebige Datei schreibt (hier mit einer Replace-Regex).

Das ganze wird vor dem eigentlichen Build durchgeführt (hier passiert ein bisschen magic durch den Namen des targets).
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.580 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Subversion Revision in die Compilierung aufnehmen

  Alt 1. Jun 2012, 08:52
Und warum sollte man die Build-Events, die ja immerhin auch in dem MSBuild-XML drin stehen, nicht benutzen?

Zu dem Beispiel:
Klar könnte man die Revision auf dem Weg in eine .rc Datei schreiben, die man dann kompilieren kann. Das wäre aber dann von hinten durch die Brust ins Auge, weil man dann die Versionsinformationen nicht mehr in Delphi verwalten kann.

Deshalb sehe ich keinen Vorteil darin herumzutricksen, statt direkt per Programm die Versionsinformationen zu aktualisieren (ohne sie komplett selbst zu erstellen) und ansonsten alles standardmäßig zu behandeln...
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

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

AW: Subversion Revision in die Compilierung aufnehmen

  Alt 1. Jun 2012, 10:55
Selbst das aufrufen eines externen Tools würde ich mit einem Execute-Task in einem eigenen Target machen. Hier kann man wenigstens noch saubere Fehlerbehandlung machen. Die Pre- und Post-Build Events sind zu Fehleranfällig, zu unflexibel und werden gerne für Dinge mißbraucht, die als eigenes Target viel einfacher zu realisieren (und auszuwerten!) sind.

Zudem kann man die Reihenfolge im Target beeinlussen. Pre- und Postbuild Steps passieren an zwei definierten Positionen ganz am Anfang und ganz am Ende, und lassen sich nicht ändern.

Ein Target kann man mittels beforeTargets / afterTargets genau dort in den Build-Prozess integrieren wo es Sinn macht: Zum Beispiel nur dann, wenn die ersten paar Targets schon durchgelaufen sind. Wenn MSbuild dann z.B. feststellt dass keine Files seit dem letzten Build geändert wurden, würden bestimmte Steps übersprungen und z.B. direkt zum Linken übergegangen (spart einiges an Zeit). Wenn ein Pre-Build Event nun aber das File immer ganz am Anfang anfasst, wird auch immer komplett neu gebaut.

Das heisst durch den falschen Gebrauch dieser Pre- und Post-Build events sorgt man ohne es zu wissen gerne für einen ordentlichen Zeitverlust und sorgt dafür, dass bestimmte andere Features in MSBuild nicht mehr funktionieren.

Generell sind Pre- und Post-Build Events also eher in der Kategorie 'potentiell Böse. Sollte man nur Nutzen wenn man *genau* weiss, was man damit tut' einzustufen.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.580 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Subversion Revision in die Compilierung aufnehmen

  Alt 1. Jun 2012, 13:41
Ich habe bisher an der MSBuild-Projektdatei nicht viel manuell gemacht. Bisher nutze ich nur die Features, die Delphi da auch anbietet.

Es funktioniert ja schon teilweise nicht mehr, wenn ich ein XE2 Projekt wieder mit XE öffne (XE stürzt ab). Da habe ich schon Bedenken was passiert, wenn ich da auch noch manuell drin bastele.

Werden solche zusätzlichen Targets denn auch korrekt abgearbeitet, wenn ich ein Projekt aus Delphi heraus starte?
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

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

AW: Subversion Revision in die Compilierung aufnehmen

  Alt 1. Jun 2012, 13:46
Auch die IDE triggert nur MSBuild im Hintergrund an, von daher sollte das passen.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  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 04:34 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