1

私のサーバーには、github から master ブランチを取得してビルドし、アーティファクトを tomcat にデプロイする bash スクリプトがあります。この sh を呼び出す github Web URL フックを作成することにしました。私のサーバーは Java を実行しているため、groovy を使用しています。でテストスクリプトを書きましtest.sh/home/madhead/scripts

echo "SHELL"
touch /home/madhead/test_`date +%d_%m_%Y_%H_%M_%S` # To see if script is actually called

環境変数はin にSCRIPTS設定されています。私のgroovletには/home/madhead/scripts/home/madhead/.bashrc

println "GROOVY"
println '$SCRIPTS/test.sh'.execute().text
println `whoami'.execute().text` //Prints madhead
println `env'.execute().text` //Prints all environment variables for madhead, SHELL is /bin/bash and SCRIPTS is /home/madhead/scripts in this output.

「GROOVY」はhtmlのprintendですが、groovletを呼び出すと「SHELL」もテストファイルも作成されません。したがって、スクリプトは呼び出されません。私は試した

println '/home/madhead/scripts/test.sh'.execute().text

groovlet では効果がありません。groovy/java から bash スクリプトを呼び出すにはどうすればよいですか? また、println 'echo test'.execute().textテストを html に出力しますが、println 'echo $SCRIPTS'.execute().text何も出力しません。なんで?

4

1 に答える 1

2

おそらく、必要な環境変数を取得するには、次のことを行う必要があります。

def env = System.getenv()
println env.SCRIPTS

私のボックスでは、この男が働いています:

groovy -e ' def env = System.getenv(); println env.JAVA_HOME '
于 2012-08-14T19:02:20.873 に答える