JenkinsにGitから取得したスクリプトを実行させるにはどうすればよいですか?


12

私はJenkinsを使用して、一連のインポートジョブをトリガーおよび管理しています。インポートスクリプトをGithubに配置し、Jenkinsがジョブをビルドするときに、(a)そのバージョン管理されたスクリプトをGithubからプルし、(b)スクリプトを実行する必要があります。

私が実行している問題は、ジョブ内で実行するスクリプトの名前を参照する方法がわからないことです。ソースコードがワークスペースディレクトリにプルされていることを前提としています。その仮定は正しいですか?(ドキュメントがあった場合のみ!)

これまでに行ったことは次のとおりです。

  1. WindowsサーバーにJenkins(明らかに)をインストールしました(いいえ、それについて選択の余地はありませんでした)
  2. 私のgithubアカウントにリポジトリを作成し、それにコードを入れました
    • https://github.com/mcholl/SARS-Import/で公開されています
    • roottest.pyとomniture-video \ test.pyの2つのスクリプトがあることがわかります。そこにあるコードはAppleの特許下にあります。
    • 私はroottest.pyを実行したいという考えです
  3. Githubプラグインをインストールしました
  4. 次のようにジョブを作成しました。
  5. ジョブを手動で実行する

ただし、ファイルが見つからないというエラーメッセージが表示されます。ワークフローは「ソースのローカルコピーを...(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

明らかに、コンソールに印刷ステートメントの結果が表示されることを期待していました。

何をめちゃくちゃにしましたか?そして、なぜ私のスクリプトは既にそこにないのですか?


C:\ Windows \ TEMP \ hudson1966342425043540895.batのコードを見てみましょう。gitpullを使用していますか?

Jenkinsは自動的に作成してから削除します。すべての内容はコンソール出力で確認できますが、これは上記で参照した「python roottest.py」コマンドです
Affable Geek

roottest.pyがパスに含まれていません。ワークスペースディレクトリにファイルが表示されますか、それとも自動的に削除されますか?git pullを実行すると、複製されたリポジトリのローカルコピーにいる必要があると思います。それにより、新しい変更がローカルリポジトリにプルされます。実際のコマンドが実行されているのがわからないとき、あなたを助けるのは難しいです。

githubプラグインwiki.jenkins-ci.org/display/JENKINS/Git+Plugin#GitPlugin-の以下の手順を実行しましたか?GIT_HOME環境変数などを設定しましたか?

ああ!窓を憎むもう一つの理由。ありがとうございました-問題だと思います
Affable Geek

回答:


5

(Linuxホストでの)ビルドでは、次のような(Jenkinsのビルドステップとして)を行い、新しくチェックアウトしたワークスペースからビルドスクリプトを実行します。

シェルコマンドを実行します。

 sh -x $WORKSPACE/build/myproject.build

もちろん、Windowsでは同じように機能すると思いますが、/ではなく\を使用し、スクリプトの実行にshではなくpythonを使用しています。


2

ビルドでは2行を記述できます。

chmod 777 ./my_script.sh
./my_script.sh

1
世界の書き込み許可は最善のアイデアではないかもしれません!なぜ755(所有者の書き込み、誰もが読み取り/実行します。
kmarsh

777は確かに最良のアイデアではありませんが、この答えが実際に役立ちました。
Robin Dijkhof 2017

0

test.shなどのスクリプトをGitに保存できます。

#!/bin/bash
_test_func(){ 
 echo 'test'
}

次に、「シェルの実行」入力で、そのスクリプトのインポートを配置し、「_ test_func」を呼び出します。

source test.sh
_test_func

結果:

 + source test.sh
 + _test_func
 test
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.