[Jenkins] Auf Input-Abfragen reagieren (Ant-Build)

nintendoluk

Commander
Registriert
Mai 2014
Beiträge
2.129
Hi zusammen,

ich hab vor kurzem angefangen mich mit Jenkins auseinander zu setzen. Hierzu habe ich einen Ant-Build gebastelt und diesen in Jenkins eingefügt (Hatte auch schon ein paar erfolgreiche Builds). Nun habe ich meiner build.XML eine <Input />-Abfrage gegeben und wollte anschließend den Build durch Jenkins durchlaufen lassen.
Der Vorgng findet jedoch kein Ende. Ich habe mir die Konsolen Ausgabe angesehen und sie sieht in etwa so aus:

Code:
create:
[touch] Creating C:\Jenkins_Arbeitsverzeichnisse\my.first.ant\HelloAnt.txt
[move] Moving 1 file to C:\Jenkins_Arbeitsverzeichnisse\my.first.ant\Untendrunten
[input] Fortfahren? (ja, nein)
[input] Fortfahren? (ja, nein)
[input] Fortfahren? (ja, nein)
[input] Fortfahren? (ja, nein)
[input] Fortfahren? (ja, nein)
(...Hier habe ich mehrere Tausend Zeilen ausgelassen...)
[input] Fortfahren? (ja, nein)
[input] Fortfahren? (ja, nein)
[input] Fortfahren? (ja, nein)
[input] Fortfahren? (ja, nein)

Das mit den mehreren Tausend Zeilen ist übrigens nicht übertrieben, anscheinend ist die Ausgabe etwa 1 GB groß.

Nun würde ich gerne wissen ob einer von euch eine Möglichkeit kennt, Jenkins zu sagen, er soll immer mit 'Ja' antworten, oder etwas ähnliches was mir weiterhelfen könnte.

Schonmal Danke,

Gruß
Lukas

EDIT:
Ich habe jetzt nach eigener Recherche folgende Lösung gefunden:

Ich hatte bereits die Ant-Contrib Tasks installiert. Dank diesen konnte ich folgende IF-Anweisung einbauen:
Code:
		<if>
			<equals arg1="${do.ask}" arg2="true" />
			<then>
				<echo message="Fahre Fort..." />

			</then>
			<else>
				<input 
				    message="Fortfahren?"
				    validargs="ja,nein"
				    addproperty="do.ant"
				  />
				<condition property="do.abort">
					<equals arg1="nein" arg2="${do.ant}"/>
				</condition>
				<fail if="do.abort">Dann halt nicht...</fail>
			</else>
		</if>

Jetzt erscheint die "Fortfahren?" frage nur, wenn do.ask nicht true ist oder gar nicht existiert. Jetzt kann man den Wert von do.ask entweder mit der CMD über den Startparameter -D übergeben, oder in Jenkins kann man direkt Properties angeben, welche der Build.XML übergeben werden sollen.
Dadurch wird die Abfrage unter Jenkins nun übersprungen, führt man das Programm aber normal aus erscheint sie doch. :-)

Mich würde es trotzdem noch interessieren, ob einer von euch eine bessere Lösung hat.
 
Zuletzt bearbeitet: (Eigene Lösung gefunden)
Wenn du in Jenkins die Abfrage nicht brauchst würde ich ein neues ant target einbauen, das ohne Abfragen laufen kann. Sollte doch ausreichen. Für Parameter-Abfragen laufen bei uns Parameterized Builds in Jenkins.
 
Dann muss ich aber alles doppelt scripten :-/
Das heißt, wenn ich weiterprogrammiere, muss ich immer alles verdoppeln, da passieren leicht Fehler
Ich denke da ist meine Lösung noch die bessere...

Am besten wäre wirklich ein Jenkins Plugin (o.ä.), das durchgehend immer Ja sagt!

Aber danke für die Idee!
 
Zuletzt bearbeitet:
Hmm... ist das nicht genau das was ich oben gemacht habe? (Siehe Startbeitrag, Edit-Erweiterung)
Ich musste halt noch zusätzlich die Ant-Contrib Tasks verwenden, da der <Input>-Block leider keine IF-Parmeter annimmt.

Ich benutze Ant, weil das in der Firma in der ich arbeite noch Standard ist. Mir wäre eine modernere Sprache auch lieber, aber Ant ist doch eigentlich ganz witzig ^^
 
Huch, hab ich wohl gekonnt ignoriert, den Edit-Teil. :rolleyes:

Ich habe leider auch noch etwas legacy code übrig, der damit gebaut wird. Schmeiß ich aber gerade raus und ersetze es durch gradle. Ich wünsche dir, dass du das auch irgendwannlos wirst (und dass es nicht durch maven ersetzt wird). ;)
 
Tumbleweed schrieb:
Ich wünsche dir, dass du das auch irgendwannlos wirst (und dass es nicht durch maven ersetzt wird). ;)

Ich soll mich jetzt auch in Maven einarbeiten weil es bald wegen Arquillian hergenommen wird X-P

Kannst du mir da vielleicht ein par Tutorials empfehlen?

Oder vielleicht kennst du auch gute Tutorials für JUnit / DBUnit, Arquillian oder EJB?

Danke
 
Zuletzt bearbeitet:
Leider nicht, ich bin einen völlig anderen Stack gewöhnt (Spring-Anhänger). JUnit ist auch keine große Kunst, da wirst du nicht viel Erklärung brauchen. Du musst halt nur verstehen, was es mit dem Bean-Container auf sich hat und wie die Arquilian-Tests damit zusammenhängen. Meine Beans fliegen im Spring-Container herum. ;)

Hab mal das Tutorial auf der Arquillian-Seite überflogen und das macht schon einen guten Eindruck für deine Bedürfnisse. Oft ist bei sowas die Doku auf der Herstellerseite das Beste, was du finden kannst. Ist bei Spring auch so.
 
Zurück
Oben