ラベル Jenkins の投稿を表示しています。 すべての投稿を表示
ラベル Jenkins の投稿を表示しています。 すべての投稿を表示

2013年9月8日日曜日

JenkinsでWindowsバッチを使う例


途中でエラーが起きたら中断
On Error Gotoなんて便利なものは無いのでエラーが起きそうな行に毎回書く必要がある。
copy a.txt b.txt || exit 1

外部バッチファイルを呼び出す
途中でエラーが起きたら中断
call somebatch.bat || exit 1

Puttyに含まれるplinkを使って外部Unix/Linuxサーバーでコマンドを実行する。事前に公開鍵をサーバー上の~/.sshにいておく。
setlocal
set USER=ssh_username
set SERVER=target_server
set MESSAGE=Success!
rem Jenkinsはユーザーのファイルを読めないので誰でも読める場所に秘密鍵を置く
set RSA_FILE=C:\Windows\SysWOW64\config\systemprofile/.ssh/id_rsa.ppk
set SERVER_COMMAND=echo %MESSAGE%

rem 接続に必要な情報は全て明記。 Jenkinsはセッションファイルを読み込めない。
rem 途中でエラーが起きたら中断
set COMMAND=plink -batch -ssh -agent -i %RSA_FILE% %USER%@%SERVER% %SERVER_COMMAND% || exit 1

rem 出力結果を%RESULTS%に入れる
for /f "delims=" %%i in ('%COMMAND%') do @set RESULTS=%%i

echo %RESULTS%

rem Jenkinsで失敗と判断する為に正常終了の出力でない場合にエラーコードを設定
if not %RESULTS%==Success! exit 1

2013年9月7日土曜日

Windowsタスクスケジューラの代わりにJenkinsを使う

Windowsで定期的に実行させる場合、タスクスケジューラを使わずにJenkinsを使う様にしました。
 Jenkinsは本来はシステム開発を自動化するツールですが、定期的にバッチを実行する高性能タスクスケジューラとして使えます。

タスクスケジューラと比べて良い点は以下です。
  1. どのジョブが失敗したか明確。
  2. 実行履歴を見てどの回が失敗したか明確。
  3. 失敗するとメール通知が出来る。
  4. 出力ログを取ってくれる上に古いログを自動的に消去も出来る。
  5. 前回の実行が終わっていなければ終わるまで待ってから実行される。(多重起動防止)
  6. ジョブ毎にパスワードを設定する必要がない。 パスワード変更時に変え忘れにくい。
 実際に設定してみましょう。
 新規ジョブを作る時はフリースタイルを選択します。

「説明」ではHTMLを書く事が出来ます。
「古いビルドの破棄」 を設定すると古いログを自動的に削除してくれます。

「ビルド手順の追加」でWindowsバッチコマンドの実行を追加します。

「定期的に実行」 で周期や時間を設定します。
表記方法はcrontabとほぼ同じです。

バッチコマンドを記入します。
Jenkinsでコマンドを入力する時の詳細は次回にでも紹介します。

ビルド後の処理の追加で「E-mail通知」を設定すると失敗の度にメール通知されます。

当然、通知先アドレスを設定します。

ジョブの一覧で失敗していると赤く表示されて分かりやすい。

履歴の一覧はこんな感じで見れます。
#5が失敗したのが一目で分かります。
 

 実行ログはコンソール出力にこんな感じで表示されます。

本来の使い方はJenkinsではじめる継続的インテグレーションなどを参考にして下さい。
 定期実行する方法に主に参考にしたのは邪道Jenkinsとおひとりさまからはじめよう。おひとりさまでもはじめよう。です。