質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Jenkins

Jenkinsとは、Apache TomcatなどのServletで動作しているサーバーベースシステムです。Jenkinsはオープンソースであり、LInux,Mac OS X,Windows,Solaris,FreeBSDとOpenBSDのためのパッケージがあります。

Q&A

解決済

3回答

4146閲覧

Jenkinsで試行錯誤しながらジョブ設定するのを効率化したい

vc3000

総合スコア196

Jenkins

Jenkinsとは、Apache TomcatなどのServletで動作しているサーバーベースシステムです。Jenkinsはオープンソースであり、LInux,Mac OS X,Windows,Solaris,FreeBSDとOpenBSDのためのパッケージがあります。

0グッド

1クリップ

投稿2016/09/10 05:37

Jenkins 2.21を使っています。
Webの管理画面からジョブを作成し、テキストエリアにシェルコマンドを入力して試行錯誤しながらジョブを設定しているのですが、このサイクルを効率化したいです。

現在はこのようにやっています。

  1. テキストエリアにシェルコマンドを入力
  2. ジョブの保存
  3. ビルド実行をクリック
  4. ビルド履歴をクリック
  5. コンソール出力をクリック

もっといい方法はないでしょうか?

https://gist.github.com/sue445/d8ee1b5e2094724286fa
こちらの方法でJenkinsのスクリプトコンソールからコマンド実行することもできたのですが、

system("ls")

のように単純なコマンドはできても

system("cd XXX && ls")

はできず、

system("bash -c 'cd XXX && ls'")

でもエラーになってしまいました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

基本は、従来手sshでログインして作業でやっていたものを自動化したり結果のログを記録できるようにするためにjenkinsを使う...という感じかなと思っています。

Jenkins上のWebUIで、対話的にシェルを動かして動作確認できる、というのが理想、ということでしょうか。

Webのフォームに貼り付けてためしながらはやっぱり非効率ですし、起動までに時間もかかるので、先にsshでログイン、jenkinsの実行ユーザでやりたい作業をひととおり組んでから、jobに落とし込むのがいいと思います。

...と思ったのですが、こんな感じならできるかもしれません。いちおう自分の環境では動きました。
(ただし、Jenkinsのマスタノード上での実行になります)

// ここにshell scriptを書きます script = """ cd / && ls -lh uname -a cat /etc/passwd """ // このへんは関数化でもいいかと思います println new ProcessBuilder('bash','-c',script).redirectErrorStream(true).start().text

参考:http://jenkins-ci.361315.n4.nabble.com/shell-commands-scripts-in-Script-Console-td2717925.html

投稿2016/09/17 10:10

編集2016/09/17 10:12
suama

総合スコア1997

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ビルドの設定は、「シェルの実行」を選択しているという前提です。前提が違っていたら失礼しました...

テキストエリアにシェルコマンド

とありますが、1つのテキストエリアに1行しか書けない、ということはないはずなので、

cd XXX ls echo ...... ``` という具合に行を分けて、ある程度まとめて記載で大丈夫だと思います。 panda_bkさんの書かれているとおり、実行させたいシェルスクリプトをJenkinsのフォームに書き込む前に動作確認してから貼り付けるといいのではないかと思います。 (ある程度のまとまりなら、スクリプトにして手元で試して、うごきそうならテキストエリアに貼り付け)

投稿2016/09/16 23:57

編集2016/09/17 00:19
suama

総合スコア1997

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

vc3000

2016/09/17 09:00

行はまとめて書いています。 うーんやっぱり皆さんログインして実行したものを貼り付けてるんですかね。 JenkinsのWeb UIでコマンドを入力して即座に実行、結果を表示するみたいな方法があるだろう思って質問したのですが…
suama

2016/09/17 10:11 編集

ありがとうございます。ちょっと試したサンプルを載せてみました。もう一回解答欄に記載させていただきましたので、よかったらお試しくださいますか?
guest

0

動かしたいのは単なるbashでしょうか?
であれば適当なlinux端末で動作確認してからjenkinsに持って行くのは不味いでしょうか?

投稿2016/09/16 10:00

panda_bk

総合スコア99

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

vc3000

2016/09/17 08:56

suかsudoでJenkinsのユーザーとして実行する。 カレントディレクトリと$PATHも合わせておくということですよね。 他になにか考慮しておくリソースはありますでしょうか?
vc3000

2016/09/17 09:01

書き忘れていました。動かしたいのはただのbashです。
panda_bk

2016/09/17 10:11 編集

そうですね。 Jenkinsのユーザーとして実行出来ればよりリアルなテストが出来ると思います。 個人的には、CIツールであるJenkinsをシェルスクリプトの開発環境として使うのは無理があると思っているので、別ファイル(xxx.sh等)にしてしまって、vimやemacs(やその他の開発者が好きなツール)が使える環境で開発する様にしています。(Jenkinsユーザーとは別のユーザー権限で開発しています。)そして、Jenkinsからは作成したスクリプトファイルを呼び出すだけのシンプルなPipelineを書く様にしています。 もっと言うと、シェルスクリプトは複雑になって来ると得てして秘伝のタレと化しますので、最近は可能な限りPythonスクリプト等に置き換えて、変更管理が出来る様にPipelineもPythonスクリプトもGit管理下に置く様にしています。 ご参考まで。 一行で収まる様な簡単なbashなのであれば、シンプルに手元のPC端末で開発して問題なければJenkinsに貼り付けるのは如何でしょう?(まぁJenkinsサーバーにログインして開発するのと比べ、さほど利便性は変わらないと思いますが。) macならそのままbashが動きますし、windowsならcygwinやGit bashがあります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問