4 Stimmen

Warum funktioniert der Auslöser für mein CruiseControl.net-Projekt nicht?

Ich habe ein Projekt in CruiseControl.net, für das ich versuche, einen Zeitplan zu erstellen, damit es an den meisten Tagen zu einer bestimmten Zeit läuft.

Das Problem ist, dass es nicht funktioniert. Die geplante Zeit wird im CCnet-Dashboard anscheinend nicht aktualisiert, bis ich den Projektauslöser entferne. Dann funktioniert es aber es wird kein Projekt erstellt, also ist es nutzlos.

In meinem CCnet.config :

  <project>
    <name>MyProject-nightly</name>

      <triggers>  
        <multiTrigger operator="And"> 
            <triggers> 
                <projectTrigger project="MyProject" /> 
                <scheduleTrigger time="11:23" buildCondition="ForceBuild">
                    <weekDays>
                        <weekDay>Monday</weekDay>
                        <weekDay>Tuesday</weekDay>
                        <weekDay>Wednesday</weekDay>
                        <weekDay>Thursday</weekDay>
                        <weekDay>Friday</weekDay>
                        <weekDay>Saturday</weekDay>
                    </weekDays>
                </scheduleTrigger>
            </triggers> 
        </multiTrigger>
    </triggers>

  </project>

Wenn ich diese Zeile entferne:

<projectTrigger project="MyProject" />

el next build time im Dashboard wird korrekt aktualisiert und zu der angegebenen Zeit ausgeführt, aber es passiert offensichtlich nichts.

Was ist daran falsch? Ich verwende CruiseControl.net Version: 1.5.7256.1

3voto

Benjamin Baumann Punkte 3965

Ich glaube, Sie missverstehen den ProjectTrigger auch, ProjectTrigger soll die Erstellung starten, wenn ein anderes Projekt die Erstellung beendet hat (in Ihrem Fall würde es die Erstellung von MyProject-nightly starten, wenn MyProject die Erstellung beendet hat, was meiner Meinung nach nicht das ist, was Sie wollen).

Welches Verhalten wünschen Sie genau?

Wenn Sie möchten, dass Ihr Projekt aus der Versionskontrolle heraus modifiziert und nächtlich gebaut wird, müssen Sie dies wie folgt konfigurieren:

<triggers> 
    <intervalTrigger name="Polling From source control" seconds="60" BuildCondition="IfModificationExists"/>
    <scheduleTrigger time="23:30" buildCondition="ForceBuild" name="Nighly Build">
        <weekDay>Monday</weekDay>
        <weekDay>Tuesday</weekDay>
        <weekDay>Wednesday</weekDay>
        <weekDay>Thursday</weekDay>
        <weekDay>Friday</weekDay>
        <weekDay>Saturday</weekDay>
    </scheduleTrigger>
</triggers> 

was streng genommen einem Multitrigger mit einem ODER-Operator entspricht.

2voto

Brock Woolf Punkte 45353

Ich habe einen anderen Weg gefunden, dies zu erreichen, indem ich einfach kein separates Projekt erstellt habe, sondern alles in ein einziges Projekt packte:

<triggers> 
    <multiTrigger operator="And"> 
        <triggers>
        <intervalTrigger name="Continuous Integration" seconds="5" buildCondition="IfModificationExists" initialSeconds="30" />
            <scheduleTrigger time="20:00" buildCondition="ForceBuild">
                <weekDays>
                    <weekDay>Saturday</weekDay>
                </weekDays>
            </scheduleTrigger>
        </triggers> 
    </multiTrigger>
</triggers>

Dies ermöglicht sowohl einen geplanten Build des Codes am Samstagabend um 20:00 Uhr als auch einen Build, wenn sich der Quellcode ändert.

Hoffentlich kann dies jemandem helfen, der das Gleiche erreichen möchte.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X