CruiseControl.Net Build Publisher – Veröffentlichen Sie nur kompilierte Dateien
-
09-06-2019 - |
Frage
Beim Einrichten von CruiseControl habe ich den Publisher-Aufgaben einen Buildpublisher-Block hinzugefügt:
<buildpublisher>
<sourceDir>C:\MyBuild\</sourceDir>
<publishDir>C:\MyBuildPublished\</publishDir>
<alwaysPublish>false</alwaysPublish>
</buildpublisher>
Das funktioniert, aber es kopiert den gesamten Dateiinhalt des Builds. Ich möchte nur die DLLs und ASPX-Seiten kopieren, ich brauche den Quellcode nicht, um ihn zu veröffentlichen.
Kennt jemand eine Möglichkeit, dies zu filtern, oder muss ich stattdessen eine Aufgabe einrichten, um ein RoboCopy-Skript auszuführen?
Lösung
Ich habe dazu eine Aufgabe eingerichtet.Mir ist keine Möglichkeit bekannt, CruiseControl so spezifisch zu gestalten.Normalerweise verkette ich einfach eine Batchdatei, um die Kopie in die CC.net-Aufgabe zu übernehmen.
Andere Tipps
Bei einem Webprojekt bin ich mir nicht sicher, aber für unsere Winforms-App können Sie die TargetOutputs wie folgt aus der MSBuild-Aufgabe abrufen:
<MSBuild Projects="@(VSProjects)"
Properties="Configuration=$(Configuration)">
<Output TaskParameter="TargetOutputs" ItemName="BuildTargetOutputs"/>
</MSBuild>
und dann eine Kopie machen:
<Copy SourceFiles="@(BuildTargetOutputs)"
DestinationFolder="bin"
SkipUnchangedFiles="true" />
Ich bin mir nicht sicher, was die TargetOutputs für ein Webprojekt sind, aber für WinForms und Klassenbibliotheken ist es die DLL oder EXE.
Der Standard-Build-Publisher in CC.NET bietet hierfür keine Möglichkeit.Sie haben mehrere Möglichkeiten:
- Erstellen Sie Ihren eigenen Build-Publisher mit der gewünschten Funktionalität
- Erstellen Sie eine benutzerdefinierte NAnt/MSBuild-Aufgabe
- Verwenden Sie eine Skripttechnologie (RoboCopy, Batchdatei usw.), um eine Skriptdatei zu erstellen und eine „Ausführbare“ Aufgabe für CC.NET oder eine „exec“-Aufgabe für NAnt/MSBuild auszuführen
Hierzu kann auch eine CC.Net Powershell-Aufgabe verwendet werden.