2016-10-11 4 views
0

Ich automatisiere einen Build-Prozess mit Jenkins und Ant Build-Schritten. Ich habe die Build-Operation und Post-Build-Source-Control-Tagging funktioniert gut.Kann ich eine Ant-Dateigruppe als Eingabe verwenden, um eine andere Dateigruppe zu erstellen?

Nachdem einige QT-Projekte erstellt wurden, möchte ich in der Lage sein, die nützlichen Artefakte aus dem Build zu erhalten.

als Vehikel für die Diskussion/Überlegung, sagen wir ich den folgenden Satz von Dateien in einem Build-Verzeichnis haben:

MyApp.exe 
MyApp.pdb 
MyApp_Tests.exe 
MyApp_Tests.pdb 
SomeLib.lib 
SomeLib.pdb 
3rdParty.lib 
3rdParty.pdb 
Utils.dll 
Utils.pdb 

(In Wirklichkeit gibt es viele weitere exe, lib DLL und ihre zugehörigen PDB-Dateien und die Dateien, die von der Build-Änderung erzeugen häufig wie das Projekt weiterentwickelt.)

ich mag die „lieferbar“ Dateien (nicht-Test-exe und dLL) und ihre pDB-Dateien sammeln ohne den Test exe, lib-Dateien und deren PDB-Dateien.

Ich glaube, ich fileset der lieferbaren Dateien bekommen können in einer Kopie Aufgabe zu verwenden:

<copy todir="${artifactDestination}" failonerror="true"> 
    <fileset dir="./build"> 
     <include name="*.exe" /> 
     <include name="*.dll" /> 
     <exclude name="*_Tests*" /> 
    </fileset> 
</copy> 

Was ich kämpfen mit, wie eine fileset der PDB-Dateien zu erhalten, die auf die exe beziehen und DLL-Dateien, dh alle pdb-Dateien außer MyApp_Tests.pdb, SomeLib.pdb und 3rdParty.pdb.

Was ich tun möchte, ist die erste Dateigruppe von EXE-und DLL-Dateien verwenden und erstellen Sie eine zweite Dateigruppe von dem, der diese Dateinamen mit der Erweiterung .pdb anstelle von DLL oder EXE hat.

Ich habe auf Selektoren und solche gelesen, aber habe es nicht geschafft, eine Lösung zu finden, um mein gewünschtes Ergebnis zu erreichen.

Irgendwelche Vorschläge?

Antwort

2

Sie sollten in der Lage sein zu erreichen, was Sie mit zwei folgenden copy Aufgaben erreichen wollen. Der erste ist der, den Sie bereits herausgefunden haben. Um die .pdb Dateien zu kopieren, die mit den Dateien übereinstimmen, die Sie im ersten Schritt kopiert haben, können Sie einen present Selektor verwenden.

<copy todir="${artifactDestination}" failonerror="true"> 
    <fileset dir="build"> 
    <or> 
     <present targetdir="${artifactDestination}"> 
     <globmapper from="*.pdb" to="*.exe"/> 
     </present> 
     <present targetdir="${artifactDestination}"> 
     <globmapper from="*.pdb" to="*.dll"/> 
     </present> 
    </or> 
    </fileset> 
</copy> 
+0

Ich hatte versucht, 'globmapper' innerhalb einer zweiten Kopie zu verwenden, hatte aber nur das Kopieren der ersten Datei an das Ziel mit der anderen Dateierweiterung erreicht. Sieht so aus, als hätte ich (fast) die richtigen Linien mitgedacht, aber Ihr Vorschlag ist genau das, was ich brauchte. Danke @StefanBodewig –

Verwandte Themen