2017-02-14 7 views
0

verwende Ich führe parametrisierten Build in Jenkins, um Nein zu zählen. von Zeilen in der Datei, die 1 Dateiparameter hat. Sein Speicherort ist pqr. Der Name der Skriptdatei lautet linecount.sh und wird auf dem Remote-Server gespeichert. Als ich versuchte, es mit dem Befehl sh linecount.sh Dateiname auszuführen, funktioniert es perfekt von Jenkins. Aber wie ich Dateinamen aus dem Argument entfernen und führen gleiche Skript wie parametrisiert Build es unten Fehler zeigt auf der Konsole:Wie man Dateiparameter in jenkins

Started by user Prasoon Gupta 
[EnvInject] - Loading node environment variables. 
Building in workspace users/Prasoon/sample_programs 
Copying file to pqr 
[sample_programs] $ /bin/sh -xe /tmp/hudson3529902665956638862.sh 
+ sh linecount.sh 
PRASOON4 
linecount.sh: line 15: parameterBuild.txt: No such file or directory 
Build step 'Execute shell' marked build as failure 
Finished: FAILURE 

Ich lade Datei (parameterBuild.txt) von meinem lokalen Rechner. Warum gibt es diesen Fehler?

Mein Zweifel ist in Shell-Skript Ich verwendete Argument als $1. Wie kann ich dies beziehen, wenn ich Datei als Parameter nehme.

+1

Vergewissern Sie sich, dass der Parameter-Datei eingefügt wird, wie Sie in den Arbeitsbereich erwarten, z.B. Führen Sie in Ihrem Shell-Befehl ein 'ls -l' aus. –

+0

Vielen Dank, aber ich möchte es direkt von meinem lokalen Rechner hochladen, will meine Arbeit benutzerfreundlicher machen. –

+0

Ja, versteh das. Aber um das Problem zu isolieren, was passiert, wenn Sie 'ls -l' als Teil Ihres Shell-Befehls in der Jobkonfiguration ausführen? Z.B. listet es 'ParameterBuild.txt' dort oder irgendwelche anderen Dateien auf? –

Antwort

9

Die hochgeladene Datei behält nicht den gleichen Namen wie auf Ihrem lokalen Computer. Es wird nach dem File location-Argument in den Dateiparametereinstellungen angegeben: enter image description here In diesem Beispiel werde ich eine Datei mit dem Namen file.txt in meinem Arbeitsbereich Stamm, unabhängig davon, wie ich es auf meinem Computer nennen. Also, wenn ich jetzt meinen Job bauen und die folgenden im Parameter-Dialog eingeben (beachten Sie, dass meine lokalen Dateinamen ist table.html):

enter image description here

Dann habe ich die folgenden im Protokoll bekommen (ich habe einen Build Schritt, die ls -l der Fall ist):

Building on master in workspace /var/lib/jenkins/workspace/fs 
Copying file to file.txt 
[fs] $ /bin/sh -xe /tmp/hudson845437350739055843.sh 
+ ls -l 
total 4 
-rw-r--r-- 1 jenkins jenkins 292 Feb 15 07:23 file.txt 
Finished: SUCCESS 

Beachten Sie, dass table.html jetzt file.txt genannt wird, zB was ich als File location eingegeben habe.

Also du bist Fall sollte der Befehl:

sh linecount.sh pqr 
+0

Oh mein Gott! Das ist die Logik .. Vielen Dank .. Wenn Sie das nicht sagen, werde ich nie ein Argument für sh linecount.sh geben. Was ich gedacht habe, ist, dass es Datei als Argument nehmen wird, die ich von meinem lokalen Rechner hochgeladen habe. Nochmals vielen Dank für das Clearing meines Konzeptes .. –

+1

Gut, dass dies gelöst wurde :) Fühlen Sie sich frei, die Antwort zu akzeptieren, so dass es anderen in der Zukunft helfen wird. –

+0

@JonS Danke für die Klarstellung. Zusätzlich zu einem Job A wollte ich Job B auf einem Remote Server auslösen. Job B ist parametrisiert und übernimmt die Datei als Eingabe. Ich verwende parametriertes Remote-Trigger-Plugin. Wenn ich die Datei in Load-Parameter aus dem externen Dateifeld von Job A übergebe, wird sie im Job B nicht richtig gelesen. Irgendwelche Vorschläge ?? – Santhosh

Verwandte Themen