Jenkins を Jira と統合する

この統合は、ファイアウォールの内側で実行されている Jenkins サーバーと、Jira Software Cloud または Jira Service Management Cloud のいずれかを接続するための、簡単かつ安全で信頼できる無料の方法を実現します。

これによって、チームは Jira のすべての課題の詳細ビューで可視性とコンテキストを活用して、最新のビルド ステータスや、その作業が環境に正常にデプロイされたかどうかを確認できるようになります。

また、この情報によって Jira クエリ言語 (JQL) で複数の課題全体を検索して現在のスプリントのどの課題が本番環境にデプロイされたか」などの質問に回答できるようになります。これらをボード上にクイック フィルターとして追加するさえもできます。

Jenkins を Jira Software Cloud に接続する前に、以下の点をご確認ください。

  • Jira Cloud サイトのサイト管理者であること。

  • Jenkins の管理者であり、プラグインをインストール、更新、および削除できること。

  • この統合に使用するパイプラインのソース コード/リポジトリ内で、Jenkinsfile を編集できます。

  • チームは課題キー (例: FUSE-123) をコミット メッセージ (デプロイ情報用) とブランチ名 (ビルド情報用) に含めます。チームがまだこれを行っていない場合は、開発作業における課題の参照方法についてご確認ください。 

Jenkins 用の Jira Cloud プラグインをインストールする

  1. Jenkins サーバーにログインして Plugin Manager に移動します。

  2. [Available (利用可能)] タブを選択して「Atlassian Jira Software Cloud」を検索します。

  3. プラグインをインストールします。

GitHub でホストされているオープンソース プラグイン。こちらで確認できます

「Jenkins for Jira」アプリを Jira にインストールする

「Jenkins for Jira」は、Jira Marketplace 経由でインストールできます。

  1. Jira サイトにログインして [アプリ] > [その他のアプリを探す] の順に移動します。

  2. 検索ボックスに「Jenkins for Jira」と入力します。

  3. 「Jenkins for Jira by Atlassian」アプリをクリックします (表示されない場合は「Top trending (上位の傾向)」フィルターを削除してみてください)。

  4. [アプリを取得] をクリックします。

Jira で Webhook を設定する

「Jenkins for Jira」アプリを Jira サイトにインストールしたら、Webhook を設定する必要があります。

  1. Jira で [アプリ] > [アプリを管理] の順に移動します。

  2. 左側のサイドバーの [アプリ] で「Jenkins for Jira」アプリへのリンクをクリックします。

  3. [Connect a Jenkins server (Jenkins サーバーを接続)] をクリックします。

  4. Jenkins プラグインをインストールするように、アプリがリマインダーを表示します。[次へ] をクリックします。

  5. Jenkins サーバーの名前を入力します。

  6. 後で使用するために Webhook の URL をコピーします。

  7. 後で使用するためにシークレットをコピーします。

Jenkins を Webhook に接続する

Webhook の URL とシークレットによって、Jenkins と Jira 間の接続を作成できます。

  1. Jenkins の [Jenkins の管理] > [システムの設定] 画面で、[Jira Software Cloud 統合] セクションまでスクロールします。

  2. [Add Jira Cloud Site (Jira Cloud サイトを追加)] > [Jira Cloud サイト] の順に選択します。サイト名、Webhook URL、シークレットの新しいフィールドが表示されます。

  3. 以下の詳細を入力してください。

    • サイト名: Jira Cloud サイトの URL。例: yourcompany.atlassian.net

    • Webhook URL: Jira の Jenkins アプリから以前コピーした Webhook の URL。

    • Secret (シークレット):

      • [追加] > [Jenkins] の順に選択します。

        • [Kind] では、[Secret text] を選択します。

        • [Secret (シークレット)] には、Jira の Jenkins アプリから以前コピーしたシークレットを貼り付けます。

        • [Description (説明)] には、シークレットを特定できるような説明を入力します。

      • これで、シークレットがドロップダウン メニューに表示されます。新規作成したシークレットを選択します。

  4. [Test connection] を選択して、Jira サイトで認証情報が有効であることを確認します。

  5. 保存をクリックします。

Jenkins 用の Jira Cloud プラグインを使用する

このプラグインは Jira にビルドとデプロイの各イベントを送信して、Jira 課題、デプロイ タイムライン、リリース機能に表示されるようにします。

Jenkins から Jira に情報を送信するには、チームに Jira 課題キー (例: FUSE-123) をコミット メッセージ (デプロイ情報用) とブランチ名 (ビルド情報用) に含める必要があります。Jenkins でパイプラインが実行されるたびに、プラグインはブランチ名とコミット メッセージで Jira 課題キーを検索します。課題キーが見つかると、ビルドとデプロイの各情報が Jira に送信されます。課題キーが見つからない場合、Jenkins プラグインは Jira に何も送信しません。

ビルドを自動送信する

Jenkinsfile に何も追加せずにビルド イベントを自動送信するには、[Manage の管理] > [システムの設定] の順に移動して、[ビルドを自動送信] チェックボックスをオンにします。

これを有効にすると、パイプラインの実行が開始されると「進行中」の、パイプラインが正常に終了すると「成功」の、エラーにより停止すると「失敗」の各ビルド イベントが、プラグインから Jira に送信されます。

ビルドに正規表現も指定した場合、プラグインは一致する名前を持つビルド ステップが完了した後にのみ Jira にビルド イベントを送信します。

正規表現 ^build$ は、次の Jenkinsfilebuild ステージに一致します。次に例を示します。

1 2 3 4 5 6 7 8 9 10 pipeline { agent any stages { stage('build') { steps { echo 'build done' } } } }

この Jenkinsfile 内のパイプラインが実行されるたびに、build ステージの開始時と終了時に、ビルド イベントをすべての設定済み Jira Cloud サイトに送信します。

デプロイを自動送信する

Jenkinsfile に何も追加せずにデプロイ イベントを自動送信するには、[Jenkins の管理] > [システムの設定] の順に移動して [デプロイを自動送信する] チェックボックスをオンにします。

これを有効にすると、指定した正規表現と一致する名前のビルド ステップの実行が開始されると「進行中」の、ビルド ステップが終了すると「成功」または「失敗」の各ビルド イベントが、プラグインからJira に送信されます。

これを機能させるには、Jenkinsfile 内のデプロイ ステップの名前に環境名が含まれている必要があります。正規表現にはフラグメント ((?<envName>.*)) を含めて環境名と一致させ、プラグインがビルド ステップ名から環境名を抽出できるようにします。

Jenkinsfile の例を以下に示します。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 pipeline { agent any stages { stage('deployments') { parallel { stage('deploy to stg') { steps { echo 'stg deployment done' } } stage('deploy to prod') { steps { echo 'prod deployment done' } } } } } }

 [デプロイを自動送信する] チェックボックスがオンで正規表現が ^deploy to (?<envName>.*)$ に設定されている場合は、上記の Jenkinsfile を実行すると、stgprod の各環境の「進行中」デプロイ イベントがすべての設定済み Jira Cloud サイトに送信されます。その後、ビルド ステップが完了するとそれぞれの「成功」デプロイ イベントが送信されます。

ビルドを明示的に送信する

ビルド イベントを送信するタイミングをより細かく制御する場合は、jiraSendBuildInfo ビルド ステップを使用できます。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 pipeline { agent any stages { stage('Build') { steps { echo 'Building...' } post { always { // previous to version 2.0.0 you must provide parameters to this command (see below)! jiraSendBuildInfo() } } } } }

これによって、Build ステージが正常に完了すると「成功」、エラーが発生すると「失敗」ビルド イベントが、すべての設定済み Jira Cloud サイトに送信されます。Jenkins プラグインはブランチ名から Jira 課題キーを自動抽出します。

また、Jira サイトの URL を指定して、ビルド イベントを (すべての設定済み Jira サイトではなく) この Jira サイトにのみ送信するようにプラグインに指示できます。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 pipeline { agent any stages { stage('Build') { steps { echo 'Building...' } post { always { jiraSendBuildInfo site: 'example.atlassian.net', branch: 'TEST-123-awesome-feature' } } } } }

デプロイを明示的に送信する

デプロイ イベントを送信するタイミングをより細かく制御する場合は、jiraSendDeploymentInfo ビルド ステップを使用できます。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 pipeline { agent any stages { stage('Deploy - Staging') { when { branch 'master' } steps { echo 'Deploying to Staging from master...' } post { always { jiraSendDeploymentInfo environmentId: 'us-stg-1', environmentName: 'us-stg-1', environmentType: 'staging' } } } stage('Deploy - Production') { when { branch 'master' } steps { echo 'Deploying to Production from master...' } post { always { jiraSendDeploymentInfo environmentId: 'us-prod-1', environmentName: 'us-prod-1', environmentType: 'production' } } } }

これによって、Deploy - StagingDeploy - Productionの各ステージの終了時に、すべての設定済み Jira サイトに「成功」または「失敗」の各デプロイ イベントが送信されます。

パラメーター environmentIdenvironmentNameenvironmentType を指定する必要がありますenvironmentType は、unmappeddevelopmenttestingstagingproduction のいずれかである必要があります。

デプロイ イベントを、すべての設定済み Jira サイトではなく単一の Jira サイトに送信するように、パラメーター siteを指定できます。

複数の Jira サイトが Jenkins サーバーに接続されている場合は、enableGating:true を指定した jiraSendDeploymentInfosite パラメーターに必要です。デプロイ ゲートの詳細についてはこちらをご参照ください。

また、branch パラメーターによってブランチを指定して、デプロイを接続する Jira 課題キーを抽出するブランチを定義できます。

完全な Jenkinsfile の例

以下の Jenkinsfile のように、ビルドとデプロイを組み合わせられます。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 pipeline { agent any stages { stage('Build') { steps { echo 'Building...' } post { always { jiraSendBuildInfo site: 'example.atlassian.net' } } } stage('Deploy - Staging') { when { branch 'master' } steps { echo 'Deploying to Staging from master...' } post { always { jiraSendDeploymentInfo environmentId: 'us-stg-1', environmentName: 'us-stg-1', environmentType: 'staging' } } } stage('Deploy - Production') { when { branch 'master' } steps { echo 'Deploying to Production from master...' } post { always { jiraSendDeploymentInfo environmentId: 'us-prod-1', environmentName: 'us-prod-1', environmentType: 'production' } } } } }

Jira で開発情報を表示する

Bitbucket や GitHub などの接続されたソース コード管理ツールでプル リクエストをコミットまたはマージするたびに、そのリポジトリに指定した Jenkins パイプラインが実行されます。チームが課題キーをプル リクエスト、コミット メッセージ、ブランチ名に含めていれば、Jira 課題の開発パネルが更新されて関連するビルドとデプロイの情報が表示されます。課題の開発情報を表示する方法に関する詳細についてご確認ください。

Jira で開発情報を表示する

デプロイ機能を Jira プロジェクトで有効にしている場合、デプロイ ページではすべての Jenkins デプロイをタイムラインに表示します。環境、担当者、課題タイプなどでデプロイをフィルタリングまたは検索して表示できます。また、チームがリリースとバージョンによって作業を整理している場合は、リリース機能にもデプロイ情報が表示されます。

Jenkins を Jira Service Management Cloud プロジェクトに接続する方法をご確認ください。

詳細

その他のヘルプ