2016-08-31 73 views
0

我在jenkins工作中添加了Execute Shell構建步驟。如何在jenkins的數據庫shell上運行數據庫腳本?

我需要啓動Oracle NoSQL shell並運行一些DDL。

我寫了shell腳本。

#Run Client 
java -jar /root/software/kv-3.2.5/lib/kvcli.jar -host localhost -port 5000 

#Run scripts 
plan remove-table -name PersonnelUni1To1FK -wait 
plan remove-table -name HabitatUni1To1FK -wait 

當我excecute從我端子短一樣,它的正常工作。在第一個命令數據庫shell啓動後運行,剩餘的腳本運行在該shell上。

但Jenkins的構建失敗。

詹金斯工作控制檯輸出:

+ Java的罐子/root/software/kv-3.2.5/lib/kvcli.jar -host本地主機-port 5000

KV-> +計劃中刪除表-name PersonnelUni1To1FK -WAIT /tmp/hudson2708562803834708095.sh:線17:計劃:命令未找到

生成步驟「執行殼」標記構建爲失敗

它試圖在我的ubuntu shell而不是數據庫shell上執行這一切。

回答

0

​​是由shell執行的命令,對吧?錯誤信息只是說它沒有找到命令,所以問題可能是PATH變量的設置。如果您在shell腳本中指定了​​的絕對路徑,會發生什麼情況?或者,確保Jenkins上的PATH變量是正確的。

+0

'plan remove-table -name PersonnelUni1To1FK -wait'命令在Oracle NoSQL外殼上運行而不是我的外殼程序 –

+0

如果我從我的ubuntu終端(外殼程序)中啓動'plan remove-table -name PersonnelUni1To1FK -wait', - 「找不到命令」 –

+0

但是你正在從shell腳本運行'plan'!當然,shell不會找到該命令。您需要將其饋送到Oracle shell。例如,如果Oracle shell從STDIN讀取命令,則需要將命令重定向到Oracle shell的STDIN。 – user1934428

0

作爲一種變通方法,

我把我所有的腳本

plan remove-table -name PersonnelUni1To1FK -wait 
plan remove-table -name HabitatUni1To1FK -wait 

and many more... 

在文件/home/dev/ons/oracle-kv-db.script

詹金斯工作

修改shell命令

java -jar /root/software/kv-3.2.5/lib/kvcli.jar -host localhost -port 5000 < /home/dev/ons/oracle-kv-db.script

現在它不需要顯式地使用數據庫shell。

相關問題