web-dev-qa-db-ja.com

Jenkinsfileでシェルスクリプトを実行するにはどうすればよいですか?

urltest.shという名前のシェルスクリプトファイルを/var/lib/jenkinsに保持し、jenkinsビルドからファイルを実行しています。

ビルドを実行すると、失敗します。

The Environment Variables are - 
HOME -          /var/lib/jenkins ;
JENKINS_HOME -  /var/lib/jenkins

コンソール出力は次のとおりです。

Started by user anonymous
Building in workspace /var/lib/jenkins/workspace/AutoScript
[AutoScript] $ /bin/sh -xe /tmp/hudson2777728063740604479.sh
+ sh urltest.sh
sh: 0: Can't open urltest.sh
Build step 'Execute Shell' marked build as failure
Finished: FAILURE

シェルスクリプトファイルを実行するためにどこに保管する必要があるのか​​がわかりません。

24
Kworks

エラーメッセージが表示された場合は、

ワークスペース/ var/lib/jenkins/workspace/AutoScriptでの構築

あなたのコメントに従って、urltest.shを入れました

/ var/lib/jenkins

したがって、ジェンキンスはファイルを見つけることができません。ビルドステップでこれを行うと、動作します

cd             # which will point to /var/lib/jenkins
./urltest.sh   # it will run your script

それでも失敗する場合は、jenkinユーザーにファイルのアクセス許可がない可能性があるため、ファイルをchownしますが、上記の手順を実行すると実行できると思います。

19
Avinash Agrawal

この質問のビューの数に基づいて、多くの人がシェルスクリプトを実行するジョブをセットアップする方法を確認するためにこれを訪問しているようです。

Jenkinsでシェルスクリプトを実行する手順は次のとおりです。

  • JenkinsのメインページでNew Itemを選択します。
  • 「my Shell script job」などのアイテム名を入力し、Freestyle projectを選択します。 OKを押します。
  • 構成ページのBuildブロックで、Add build stepドロップダウンをクリックし、Executeを選択しますシェル
  • テキストエリアでは、スクリプトを貼り付けるか、既存のスクリプトの実行方法を指定できます。だからあなたはどちらかと言うことができます:

    #!/bin/bash
    
    echo "hello, today is $(date)" > /tmp/jenkins_test
    

    あるいは単に

    /path/to/your/script.sh
    
  • Saveをクリックします。

これで、新しく作成されたジョブが他のジョブと一緒にJenkinsのメインページに表示されます。開いてBuild nowを選択し、動作するかどうかを確認します。ビルドが完了したら、ビルド履歴からその特定のビルドを選択し、Console outputを読んで、すべてが期待どおりに行われたかどうかを確認します。

詳細については、GitHubのドキュメント Jenkins Shellスクリプトジョブの作成 を参照してください。

36
fedorqui

Managed Script Plugin があり、ユーザースクリプトを簡単に管理できます。また、実行するユーザースクリプトを選択できるビルドステップアクションも追加します。

6
Mihai Rotaru

以前の回答は正しいですが、これを行うもう1つの方法といくつかのヒントを次に示します。

オプション#1Jenkinsジョブに移動し、「ビルドステップの追加」を検索し、そこにスクリプトをコピーして貼り付けます

オプション#2Jenkinsに移動して、同じ「ビルドステップの追加」を再度実行しますが、今回はスクリプトの完全修飾パスを例に示します。 /usr/somewhere/helloWorld.sh

enter image description hereenter image description here

/ tipsの注意事項:

  • 環境変数。ジョブが同時に実行されている場合、同時実行の問題を心配する必要があります。 1つのジョブが環境変数の値を設定し、次のジョブがその値を使用するか、それに基づいて何らかの誤ったアクションを実行する場合があります。
  • すべてのパスが完全に修飾されていることを確認してください
  • / var/logまたはどこかにログを記録することを検討してください。そうすれば、サーバーにもアクセスできるようになります(オプション)
  • スペースの問題とパーミッションに関すること、スペースの不足とパーミッションの問題はLinux環境では非常に一般的です
  • 警告を発し、スクリプトが失敗したときにスクリプト/ジョブがジェンキンジョブに失敗することを確認する
4
grepit