PowerShellでJenkinsジョブの状態を監視する方法
1. はじめに
JenkinsはCI/CDパイプラインの自動化に広く使われるツールですが、ジョブの実行状態を定期的にチェックする必要があります。
本記事では、PowerShellを使ってJenkinsジョブの状態を監視し、成功・失敗を自動的に通知するスクリプトを作成します。
2. 必要な準備
PowerShellでJenkinsのAPIを利用するには、JenkinsのREST APIを有効にし、APIトークンを取得する必要があります。
2.1. APIトークンの取得
2.2. REST APIのエンドポイント
ジョブの最新ビルドの状態を取得するには、以下のURLを使用します。
http://JENKINS_URL/job/JOB_NAME/lastBuild/api/json
認証が必要な場合は、-Credential
オプションを使うか、Invoke-WebRequest
でBasic認証を利用します。
3. PowerShellスクリプト
以下のPowerShellスクリプトを使うことで、Jenkinsジョブの状態を定期的に監視できます。
# Jenkinsの設定 $JenkinsUrl = "http://your-jenkins-url" $JobName = "your-job-name" $User = "your-username" $ApiToken = "your-api-token" # APIのURL $ApiUrl = "$JenkinsUrl/job/$JobName/lastBuild/api/json" # Basic認証の準備 $AuthHeader = @{ Authorization = "Basic " + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes("$User`:$ApiToken")) } # ジョブの状態を取得する関数 function Get-JenkinsJobStatus { try { # APIリクエスト $response = Invoke-RestMethod -Uri $ApiUrl -Headers $AuthHeader -Method Get # ビルドの結果を取得 $status = $response.result if ($status -eq $null) { Write-Output "ジョブは現在実行中です..." } elseif ($status -eq "SUCCESS") { Write-Output "ジョブは成功しました ✅" } elseif ($status -eq "FAILURE") { Write-Output "ジョブは失敗しました ❌" } else { Write-Output "ジョブの状態: $status" } } catch { Write-Output "エラーが発生しました: $_" } } # 監視ループ(10秒ごとにチェック) while ($true) { Get-JenkinsJobStatus Start-Sleep -Seconds 10 }
4. スクリプトの実行
- PowerShellを開き、スクリプトを
watch_jenkins.ps1
として保存 - 以下のコマンドで実行
powershell -ExecutionPolicy Bypass -File watch_jenkins.ps1
5. まとめ
本記事では、PowerShellを使ってJenkinsジョブの状態を定期的に監視する方法を解説しました。このスクリプトをタスクスケジューラやWindowsサービスとして実行することで、自動監視が可能になります。
次に学ぶべきトピック
- ジョブの結果をSlackやメールで通知する
- PowerShellを使ったJenkinsジョブのトリガー (
Build Now
実行) - Webhookを活用したリアルタイム通知の設定
このスクリプトを活用して、Jenkinsの監視を効率化しましょう!