私はJenkinsを使用して、一連のインポートジョブをトリガーおよび管理しています。インポートスクリプトをGithubに配置します。Jenkinsがジョブをビルドするときに、(a)そのバージョン管理されたスクリプトをGithubからプルし、(b)スクリプトを実行します。
私が実行している問題は、ジョブ内で実行するスクリプトの名前を参照する方法がわからないことです。ソースコードがワークスペースディレクトリにプルされていることを前提としています。その仮定は正しいですか? (ドキュメントさえあれば!)
これまでに行ったことは次のとおりです。
ただし、ファイルが見つからないというエラーメッセージが表示されます。ワークフローは「ソースのローカルコピーを...(Job)/ workspace /ディレクトリにプルし、ワークスペースディレクトリのコンテキストでバッチコマンドを実行する」と想定しているため、これは奇妙です。
これが完全なコンソール出力です:
ワークスペースC:\ Program Files(x86)\ Jenkins\jobs\Testing Github Integration\workspace [workspace]のユーザー匿名ビルドによって開始されました$ cmd/c C:\ Windows\TEMP\hudson1966342425043540895.batを呼び出します
C:\ Program Files(x86)\ Jenkins\jobs\Testing Github Integration\workspace> python roottest.py python:ca n't open file 'roottest.py':[Errno 2] No such file or directory
C:\ Program Files(x86)\ Jenkins\jobs\Testing Github Integration\workspace> exit 2ビルドステップ 'Windowsバッチコマンドの実行'ビルドに失敗とマーク終了:FAILURE
明らかに、コンソールに印刷ステートメントの結果が表示されることを期待していました。
何をめちゃくちゃにしましたか?そして、なぜ私のスクリプトは既にそこにないのですか?
私のビルド(Linuxホスト上)の場合、私は次のように(Jenkinsのビルドステップとして)新しくチェックアウトしたワークスペースからビルドスクリプトを実行します。
シェルコマンドを実行:
sh -x $WORKSPACE/build/myproject.build
もちろん、Windowsでも同様に機能すると思いますが、/ではなく\を使用し、スクリプトの実行にshではなくpythonを使用しています。
ビルドでは2行を記述できます。
chmod 777 ./my_script.sh
./my_script.sh
スクリプトをGitに保存できます。 test.sh:
#!/bin/bash
_test_func(){
echo 'test'
}
次に、「シェルの実行」入力で、そのスクリプトのインポートを配置し、「_ test_func」を呼び出します。
source test.sh
_test_func
結果:
+ source test.sh
+ _test_func
test