33 Stimmen

Gemeinsame Nutzung von Build-Artefakten zwischen Jobs in Hudson

Ich versuche, unseren Build-Prozess in Hudson einzurichten.

Job 1 wird ein superschneller (hoffentlich) Continuous-Integration-Build-Job sein, der häufig erstellt wird.

Job 2 ist für die Durchführung einer umfassenden Testsuite in regelmäßigen Abständen oder manuell ausgelöst verantwortlich.

Aufgabe 3 ist für die Ausführung von Analysetools in der gesamten Codebasis zuständig (ähnlich wie Aufgabe 2).

Ich habe versucht, die Funktion "Erweiterte Projektoptionen > Benutzerdefinierten Arbeitsbereich verwenden" zu verwenden, damit der in Job 1 kompilierte Code in Job 2 und 3 verwendet werden kann. Es scheint jedoch, dass alle Build-Artefakte innerhalb des Arbeitsbereichs von Job 1 bleiben. Mache ich das richtig? Gibt es eine bessere Möglichkeit, dies zu tun? Ich schätze, ich bin auf der Suche nach etwas ähnlichem wie eine Build-Pipeline-Setup ..., so dass Dinge geteilt werden können und die entsprechenden Aufträge in Phasen ausgeführt werden können.

(Ich habe auch die Verwendung von "Batch-Aufgaben" in Erwägung gezogen... aber es scheint, dass diese nicht geplant werden können, sondern nur manuell ausgelöst werden können...)

Alle Vorschläge sind willkommen. Danke!

0 Stimmen

Dasselbe Problem hier, es ist wirklich dumm, dass für eine nachgelagerte FindBugs-Run ich entweder Quellen und JARs zwischen Projekten kopieren müsste, oder (da der Build SCM-getriggert ist) haben eine separate Checkout für die Quellen.

15voto

aku Punkte 195

Versuchen Sie es doch einmal mit dem Plugin Copy Artifact:

http://wiki.hudson-ci.org/display/HUDSON/Copy+Artefakt+Plugin

Ihr kontinuierlicher Job kann die notwendigen Artefakte erstellen, und Ihre beiden anderen Jobs können sie zur Analyse heranziehen.

7voto

seanf Punkte 6236

Hudson hat ein Plugin für genau dieses Problem: http://wiki.hudson-ci.org/display/HUDSON/Clone+Arbeitsbereich+SCM+Plugin (Link derzeit defekt)

Die entsprechende Jenkins-Seite finden Sie hier: https://wiki.jenkins-ci.org/display/JENKINS/Clone+Arbeitsbereich+SCM+Plugin

2voto

aberrant80 Punkte 12269

Ja, die Wiki-Seite war nicht sehr hilfreich, da sie versucht, das Ganze sehr elegant erscheinen zu lassen. Die Wahrheit ist, dass Hudson Job-Ketten noch nicht sehr elegant unterstützt, wenn man Dinge von einem Job an einen anderen übergeben muss.

Ich verwende auch die Methode "zip-up-and-copy-workspace", um Arbeitsbereiche von einem Auftrag auf einen anderen zu übertragen. Ich habe einen Quick-Build, einen vollständigen Analyse-Build und dann Distributions-Builds. Dazwischen verwende ich Ant, um Zeitstempel und "Build-Stamps" zu erzeugen, um zu markieren, welche Jobnummer die Nummer eines anderen Jobs erstellt hat. Die Fingerprinting-Funktion hilft dabei, die Dateien zu verfolgen, aber da ich die Workspace-Zips nicht archiviere, ist das Fingerprinting für die Benutzer nutzlos, da sie die Workspace-Zips nicht sehen können.

0 Stimmen

Vermutlich bezieht sich "diese Wiki-Seite" auf die Antwort von Michael Donohue (wenn man die Daten betrachtet).

1voto

Michael Donohue Punkte 11704

Haben Sie sich das Hudson-Wiki angesehen? Genauer gesagt: Aufteilung eines großen Auftrags in kleinere Aufträge

0 Stimmen

Das habe ich gelesen, aber aus den Wiki-Kommentaren geht hervor, dass viele Leute Probleme damit haben. Hat das bei Ihnen funktioniert?

0voto

sehugg Punkte 3575

Ich hatte das gleiche Problem, und ich habe mich für separate Projekte für die lang laufenden Aufgaben entschieden. Der erste Schritt in diesen Projekten bestand darin, alle Dateien aus dem Arbeitsbereich von Job 1 (d. h. dem letzten Build) in die Arbeitsbereiche von Job 2/3/etc zu kopieren. Dies funktionierte in der Regel, es sei denn, Job 1 baute zum Zeitpunkt des Starts von Job 2/3 gerade, da er dann einen unvollständigen Arbeitsbereich erhielt. Man könnte dies umgehen, indem man das "Ende des Builds" in Job 1 mit einer Sentinel-Datei erkennt oder das Hudson Locks Plugin verwendet (ich habe es nicht ausprobiert).

Sie haben keine haben einen benutzerdefinierten Arbeitsbereich zu verwenden, wenn Sie Annahmen über die Platzierung der anderen Jobs relativ zu %WORKSPACE% treffen.

0 Stimmen

Ich hatte gehofft, das zu vermeiden, aber es klingt wie es der Weg zu gehen :) für das "Ende der Build" Erkennung, haben Sie eine der unten betrachtet? 1) Build Trigger "Build after other projects are built" 2) Post-build Actions "Build other projects" oder würden Sie Probleme bekommen, wenn job1 mehr als einmal aufgerufen wird... es würde jobs 2/3 beeinflussen?

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