MS_JenkinsSetup - NetDevInfraWGinOSSConsortium/NetDevInfraWiki GitHub Wiki

Jenkins構築手順

概要

自動的に GitHub などから Git リポジトリを取得して
CI する Jenkins サーバを構築する場合の基本的な情報。

補足(本ページの位置付け): 本ページは
Windows 上に Jenkins を立てて .NET Framework を CI するという、
2018 年頃の構成を克明に記録した手順書である。
現在の推奨構成とは大きく異なるため、先に差分を示しておく

【本ページの構成(当時)】
   Windows Server
     └ Jenkins(Windows サービス)
         ├ Git プラグイン      → GitHub から clone
         ├ MSBuild プラグイン  → .sln をビルド
         ├ NUnit / OpenCover   → テストとカバレッジ
         ├ FxCop / StyleCop    → 静的解析
         └ Doxygen             → ドキュメント生成
   → 【すべて 1 台のマシンに手でインストールする】★

【現在の一般的な構成】★
   ・CI は【GitHub Actions / Azure Pipelines】
     → サーバの構築・保守が不要
     → [GitHub Actions](MS_GitHubActions)
   ・ジョブ定義は【リポジトリ内の YAML】
     → GUI で設定しない = 設定が Git で追える ★
   ・実行環境は【コンテナ】
     → 「Jenkins サーバに何が入っているか」に
       依存しない

【それでも Jenkins が選ばれる場面】
   ・【オンプレ / 閉域網】でしか動かせない
   ・特殊なハードウェア(実機テスト、ライセンス ドングル)
   ・既存の大量のジョブ資産
   → その場合も
     【Jenkinsfile(Pipeline as Code)】で書く ★
     (本ページの GUI 設定は
       Jenkins 2.x 以降では旧来の方式)

ダウンロードとインストール

前提環境

インストール開始前に以下の環境を準備する。

Windows OS

Jenkins の前提 Windows OS

.NET Framework

CI 対象の version

Java SDK (JDK)

Ant が原因で JRE では動作しない。

補足(Jenkins の Java 要件は変わった): 本ページ執筆時と
要求バージョンが大きく上がっている

【現在の要件】★
   ・Jenkins 2.4xx 以降  → 【Java 11 / 17 / 21】
   ・Java 8 は【サポート終了】
   → 古い Jenkins を上げる際は
     【Java の入れ替えが先】になる

【JDK の入手先も変わった】
   ・Oracle JDK は
     【ライセンス変更】(2019年)を経て
     現在は NFTC で無償利用可能だが条件がある
   ・実務では【OpenJDK 系ディストリビューション】が主流 ★
       - Eclipse Temurin(Adoptium)
       - Microsoft Build of OpenJDK
       - Amazon Corretto
       - Azul Zulu
   → いずれも無償で商用利用でき、LTS が提供される

Git クライアント

for Git プラグイン

  • Git - Downloads
    https://git-scm.com/downloads
    • 'git' コマンドが通常のパスで動作すること( in /usr/bin or /usr/sbin )
    • もし、その他の場合 ( /opt/local/bin/git か /usr/local/bin/git )
      /usr/bin に、シンボリックリンクを作成すること
      (例: sudo ln -s /opt/local/bin/git /usr/bin/git).

移行メモ(体裁): 移行元では「'git' コマンド**)**が通常のパスで」と
対応しない閉じ括弧が入っていたため削除した。
なお、この項の記述は Jenkins 公式ドキュメントの
Unix 系向けの説明を引いたものであり、
本ページの前提である Windows 環境には直接当てはまらない
(Windows では git.exe のパスを後述のプラグイン設定で指定する)。

Graphviz

StyleCop

・・・

移行メモ(誤字・未執筆): 移行元では「StyelCop」と
綴りが誤っていたため「StyleCop」に修正した(本ページ内 4 箇所)。
また本節の内容は「・・・」のみで未執筆である。

FxCop

補足(FxCop / StyleCop はアナライザーに置き換わった): 本ページで
静的解析の中心に据えられている 2 つは、現在は別物になっている

【FxCop の系譜】★
   FxCop(スタンドアロン)
     → 【非推奨】。CodePlex も閉鎖済み
   ↓
   FxCop アナライザー(NuGet)
     → 【2020年に非推奨】
   ↓
   【.NET アナライザー】(SDK に同梱)★
     → .NET 5 以降、SDK に組み込み済み
     → csproj で有効化するだけ
         <AnalysisMode>Recommended</AnalysisMode>
         <EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>
     → 【別途インストール不要】

【StyleCop の系譜】
   StyleCop(スタンドアロン)→ 開発終了
   ↓
   【StyleCop.Analyzers】(NuGet)★
     → Roslyn ベース。現在も保守されている
     → .editorconfig で規則を制御する

【何が良くなったか】★
   ・【エディタ上でリアルタイムに警告が出る】
     → CI で初めて気付く、が無くなる
   ・ビルドの一部として動く
     → 別ツールの実行手順が不要
   ・【.editorconfig でチームの規約を共有できる】
     → Git で管理・レビューできる ★
   ・警告をエラーに昇格させて強制できる
       <TreatWarningsAsErrors>true</TreatWarningsAsErrors>

【CodePlex について】
   ・Microsoft の OSS ホスティング サービス
   ・【2017年に閉鎖】(アーカイブのみ)★
   → 本ページの codeplex.com のリンクは
     いずれも到達しない

その他

以下はプラグインとしてではなくコマンドから実行する。

  • NUnit
    .NET のテスティング・フレームワーク
  • OpenCover
    .NET のカバレッジツール
  • ReportGenerator
    様々な .NET カバレッジツールが出力する XML 出力を可視化する。

Jenkinsのインストール

  • https://jenkins-ci.org/ にアクセスする。
  • Native packages [Windows] からダウンロードする。
  • [jenkins-バージョン番号.zip] から jenkins.msi を取り出す。
  • jenkins.msi をダブルクリックして、デフォルトの設定でインストールする。
  • ローカルの Web サーバ上で Jenkins のサイトが実行され、
  • ブラウザで [Jenkins Dashboard]([ダッシュボード [Jenkins]]) ページが表示される。

プラグインのインストール

一般的なプラグインは自動アップロードされる。
オフラインの場合は、手動アップロードする。

プラグインの追加手順

[Jenkins Dashboard]([ダッシュボード [Jenkins]]) ページ上にある

  • [Manage Jenkins]([Jenkins の管理]) をクリックする。

  • [Manage Plugins]([プラグインの管理]) をクリックする。

  • オンライン時、一般的なプラグインを追加する場合、

    • [Available]([利用可能]) タブを選択し、次のセクションでプラグインを選択する。
    • [Install without restart]([再起動せずにインストール]) ボタンをクリックし
      プラグインをインストール。
  • オフライン時やカスタム・プラグインの場合、

    • [Advanced...]([高度な設定...]) タブを選択し、プラグインをアップロードする。
    • [Available]([利用可能]) タブを選択し、次のセクションでプラグインを選択する。
    • [Install without restart]([再起動せずにインストール]) ボタンをクリックし
      プラグインをインストール。

追加するプラグイン

補足(プラグインの現況): 挙げられているプラグインのうち、
廃止・置き換えが進んだものがある。

【Violations プラグイン】★
   ・【廃止済み】(distribution から削除)
   ・後継は【Warnings Next Generation】★
     → 100 種類以上の解析ツールの出力を統合表示
     → FxCop / StyleCop / MSBuild の警告も扱える

【Email-ext と mailer】
   ・原文は Email-ext の説明に
     【mailer プラグインの URL】を載せている
     → 両者は別プラグインである ★
       - Mailer          … 基本的なメール通知
       - Email Extension … テンプレート、条件分岐、
                           添付が可能な拡張版

【OpenCover / ReportGenerator】
   ・OpenCover は【開発停止】(2019年頃)
     → 後継は【Coverlet】★
       (.NET Core 以降の標準的なカバレッジ ツール)
         dotnet test --collect:"XPlat Code Coverage"
   ・ReportGenerator は【現在も活発に保守中】★
     → GitHub(danielpalme/ReportGenerator)へ移動
     → Coverlet の出力(cobertura)も可視化できる

【NUnit】
   ・現在も現役だが、.NET の標準テンプレートは
     【xUnit】または MSTest が既定
   ・Jenkins 側は JUnit 形式を扱えるため、
     dotnet test --logger:junit で出力するのが簡単 ★

Jenkinsの設定

プラグインの設定

ここでは、

  • バイナリのパス
  • サーバーの URL

など、プラグインの基本的な設定をする。

詳しい動作は、

  • プロジェクト
  • ビルドステップ

などで設定する。

プラグインの基本的な設定は、

[Manage Jenkins]([Jenkins の管理]) セクションの、
[Configure System]([システムの設定]) ボタンをクリックしプラグインを設定。

移行メモ(誤字): 移行元の「セクッション」を「セクション」に修正した。

Git プラグイン

https://wiki.jenkins-ci.org/display/JENKINS/Git+Plugin

  • Git セクションで、
  • [Name]([名前]) フィールドを入力する。
  • [Path to executable] に "git.exe" のパスを設定する。

MSBuild プラグイン

https://wiki.jenkins-ci.org/display/JENKINS/MSBuild+Plugin

  • [MSBuild] セクションで、
  • [MsBuildInstallations…]([MSBuild 追加]) をクリックする。
  • [Name]([名前]) フィールドを入力する。
  • [Path to MSBuild]([MSBuild.exe ファイルパス]) に "MSBuild.exe" のパスを設定する。

FxCop プラグイン

https://wiki.jenkins-ci.org/display/JENKINS/FxCop+Runner+Plugin

  • [FxCop] セクションで、
  • [FxCopInstallations…] ボタンをクリックする。
  • [Name]([名前]) フィールドを入力する。
  • [Path to FxCopCmd.exe]([FxCopCmd.exe ファイルパス]) に
    "FxCopCmd.exe" のパスを設定する。

Graphviz プラグイン

  • [Dependency Graph Viewer Configuration] セクションで、
  • [Enable rendering with graphviz] チェック ボックスをオン。
  • [Dot Executable Path] に "Graphvizxx.xx\bin\dot.exe" のパスを設定する。

Email notification プラグイン

  • [E-mail Notification]([E-mail 通知]) セクションで、

  • [SMTP server]([SMTP サーバー]) に "smtp.gmail.com" など、
    SMTP サーバのアドレスを設定する。

  • [Advanced...]([高度な設定...]) ボタンをクリックし下記を設定する。

    • [Use SMTP Authentication]([SMTP 認証]) を選択
    • [User Name]([ユーザー名]) を入力
    • [Password]([パスワード]) を入力
    • [Use SSL]([SSL]) チェックボックスをオン
  • "smtp.gmail.com" を指定した場合、
    Google の設定でメールの送信の許可が必要になる。

補足(Gmail の「安全性の低いアプリ」は廃止された): この手順は
現在は使えないので、代替を明記しておく。

【廃止の経緯】★
   2022年5月  個人アカウントで
              「安全性の低いアプリのアクセス」を無効化
   2024年9月  Google Workspace でも
              【LSA / 平文パスワードによる SMTP を全廃】★
   → 本ページの手順(パスワード直入力)は
     【もう通らない】

【現在の選択肢】★
 ① 【アプリ パスワード】
     → 2 段階認証を有効にしたうえで
       16 桁の専用パスワードを発行する
     → 現在も SMTP で使える(個人アカウント)
     → ただし Workspace では管理者が
       許可していないと使えない
 ② 【OAuth 2.0(XOAUTH2)】
     → 本来の推奨。Jenkins 側の対応が必要
 ③ 【メール以外の通知に変える】★★
     → Slack / Teams の Webhook
     → 実務ではこちらが主流になった
       (メールは埋もれる、通知が遅い)

【一般化できる教訓】★
   「サービスのパスワードを CI に直接持たせる」構成は
   【どのサービスでも塞がれる方向】にある
     → トークン / OIDC / Webhook へ移行する
     → 認証情報は Credentials プラグインや
       シークレット ストアに置き、
       設定に直書きしない

その他

以下はプラグインとしてではなくコマンドから実行する。

  • NUnit
  • OpenCover
  • ReportGenerator

その他の設定手順

ユーザの作成と管理

Jenkins CI サイトは、アクセス権とセキュリティのレベルを指定して
ユーザの作成と管理ができる。

  • セキュリティの設定

    • [Manage Jenkins]([Jenkins の管理]) ページで
      [Configure Global Security]([グローバルセキュリティの設定]) ボタンをクリックし
      ユーザのアクセスレベルと権限を設定する。
      • [Enable security]([セキュリティを有効化]) チェックボックスをオン、以下は設定例。
      • [TCP port for JNLP slave agents]([JNLP スレーブ用 TCP ポート番号]) セクションで
        [Random] オプションボタンを選択
      • [Security Realm]([ユーザー情報]) セクションで
        [Jenkins' own user database]([Jenkins のユーザーデータベース])
        オプションボタンを選択
      • [Allow users to sign up]([ユーザーにサインアップを許可]) をオフにしておく。
      • [Authorization]([権限管理]) セクションの
        [logged in users can do anything]([ログイン済みユーザーに許可])
        オプションボタンを選択
      • [Apply]([適用]) と [Save]([保存]) ボタンをクリック
  • ユーザの作成

    • 次に表示されるサインアップ画面でユーザ名、パスワード、メールアドレス、説明を
      入力し、サインアップ(ログイン)する。

    • [Manage Jenkins]([Jenkins の管理]) ページで
      [Manage Credentials]([認証情報の管理]) ボタンをクリックし
      ユーザ作成することもできる。

    • [Manage Credentials]([認証情報の管理]) ページで
      [Add Credentials]([認証情報の追加]) ボタンをクリックし
      [Username with password]([ユーザー名とパスワード]) を選択する。

    • [Username with password]([ユーザー名とパスワード]) セクションに下記を設定する。

      • [Scope]([スコープ]) を選択
        ● グローバル : サインアップしたユーザはグローバルが設定されている。
        ● システム : ・・・
      • [Username]([ユーザー名]) を入力
      • [Password]([パスワード]) を入力
      • [Description]([説明]) を入力
      • [Save]([保存]) ボタンをクリック
  • ユーザの管理

    • [Manage Jenkins]([Jenkins の管理]) ページで
      [Manage Users]([ユーザーの管理]) ボタンをクリックし
      ユーザの作成・削除・修正をする。

    • [Users] ページ

      • ユーザの設定
      • ユーザの削除

補足(Jenkins のセキュリティで最も重要なこと): 本節の設定は
最低限であり、実際にはもっと強い制約が要る

【Jenkins は「任意コード実行装置」である】★★
   ・ジョブは【シェル/バッチを実行する】
   ・つまりジョブを作れる = サーバ上で何でもできる
   → 「ログイン済みユーザーに許可」は
     【全員が管理者相当】ということ ★
     → 本ページの設定例は
       小規模・信頼された環境の前提

【実務での設定】★
   ・【Matrix-based security】または
     【Role-based Authorization Strategy】プラグイン
     → ジョブ単位で read / build / configure を分ける
   ・匿名ユーザーの権限は【全部外す】
   ・【Script Console】(/script)は
     管理者以外に絶対に触らせない
     → Groovy で何でも実行できる

【インターネットに晒さない】★★
   ・Jenkins は歴史的に
     【深刻な RCE 脆弱性が繰り返し報告】されている
     (2024年の CVE-2024-23897 など)
   → VPN / 社内網に限定する
   → 公開が必要なら
     前段にリバース プロキシと認証を置く

【認証情報の扱い】
   ・【Credentials プラグイン】に集約する(原文どおり)
   ・ジョブの設定やログに
     【平文で出さない】(マスク機能を使う)
   ・可能なら【シークレット ストア】
     (HashiCorp Vault / Azure Key Vault)と連携する ★
【用語の変化】
   ・「slave(スレーブ)」は
     【agent(エージェント)】に用語変更された(2016年〜)★
   → 現在の UI では「ノード」「エージェント」と表示される

プロジェクトの作成と設定

プロジェクトの作成

  • [Jenkins Dashboard]([ダッシュボード [Jenkins]]) ページで
    [New Item]([新規ジョブ作成]) ボタンをクリックし新しいプロジェクトを作成する。

  • [New Item]([新規ジョブ作成]) ページで下記を設定する。

    • [Item name]([ジョブ名]) フィールドを入力
    • [Freestyle project]([フリースタイル・プロジェクトのビルド]) オプションボタンを選択
    • [OK] ボタンをクリック

プロジェクトのプラグイン設定

プロジェクトのプラグインの設定方法について説明する。

  • 設定は、[Jenkins project] の [Configuration] ページから行う。

  • 設定が完了したら、[Apply]([適用]) と [Save]([保存]) ボタンをクリックし
    すべての設定を保存する。

Git プラグインの設定

https://wiki.jenkins-ci.org/display/JENKINS/Git+Plugin

Git プラグインの設定方法について説明する。

  • [Source Code Management]([ソースコード管理]) の [Git] セクションで
    Git プラグインを設定する。

  • [Git] セクションで以下を設定する。

    • Repository の設定

      • [Repository URL] に https://github.com/組織名/リポジトリ名/ を入力する。
      • [Credentials] の [Add]([追加]) ボタンをクリックしユーザの資格情報を追加する。
      • Git のブランチ名や参照などの詳細なオプションを設定するには、
        [Advanced...]([高度な設定...]) ボタンをクリック
      • [Add Repository] ボタンをクリックし、更にリポジトリを追加
      • [Delete Repository] ボタンをクリックしリポジトリを削除
    • Branch の設定

      • [Branch Specifier (blank for 'any')] にリポジトリに存在するブランチ名を入力
      • [Add Branch] ボタンをクリックしリポジトリにブランチを追加
      • [Delete Branch] ボタンをクリックしリポジトリのブランチを削除
  • この設定により、以下のパスにリポジトリが clone & checkout される。

C:\Program Files (x86)\Jenkins\workspace\

移行メモ(誤記): 移行元では「[Delete Branch] ボタンをクリックし
リポジトリにブランチを削除」となっていたが、
追加([Add Branch])と対になる操作であるため「リポジトリのブランチを削除」と
読み替えた。
また clone 先パスの記述に閉じ引用符がなかったため整形した。

プロジェクトのビルド設定

プロジェクトのビルドの設定方法について説明する。

ビルド・トリガの設定

ビルド・トリガの設定方法について説明する。

  • [Build Triggers]([ビルド・トリガ]) セクションで
    定期的に実行するためのビルド・トリガを設定する。

  • 設定例 :

    • [Build Periodically]([定期的に実行]) を選択

    • Schedule に「0 0 * * 0」を入力する

補足(定期ビルドは CI ではない): 設定例が
週 1 回の定期実行になっている点は、目的に照らすと弱い。

【CI の定義に照らすと】★
   継続的インテグレーション =
     「変更のたびに統合して検証する」
   → 週 1 回では
     【壊れてから最大 1 週間気付かない】
     → 原因の特定が難しくなる
     → [CI](MS_CI) の効果が出ない

【本来のトリガ】★
   ・【SCM ポーリング】(H/5 * * * *)
     → 5 分ごとに変更を確認
     → 手軽だが無駄が多い
   ・【Webhook】★(推奨)
     → GitHub の push で Jenkins を起動する
     → 即時。無駄がない
     → GitHub 側で Jenkins に到達できる必要がある
       (閉域網では逆にポーリングを選ぶ)
   ・定期実行が向くもの
     → 【夜間の重いテスト】(E2E、負荷)
     → 依存パッケージの脆弱性スキャン ★

【H の記法】
   ・「0 0 * * 0」ではなく【「H H(0-3) * * 0」】のように
     H(hash)を使うと、
     ジョブごとに実行時刻が分散される ★
     → 全ジョブが 0 時ちょうどに殺到するのを防ぐ

ビルド・ステップの設定

ビルド・ステップの設定方法について説明する。

  • [Build]([ビルド]) セクションの [Add build step]([ビルド手順の追加]) ボタンを
    クリックし、以下のビルド・ステップを追加可能。

    • [Build a Visual Studio project or solution using MSBuild]([MSBuild の実行])
    • [Execute Windows batch command]([Windows バッチコマンドの実行])
    • [Execute Shell]([シェルの実行])
    • [FxCop exec.]([FxCop 実行])
    • [Generate documentation using Doxygen]([Doxygen でドキュメントを生成する])
    • [Invoke Ant]([Ant の呼び出し])
    • [Invoke top-level Maven target]([Maven の呼び出し])
    • [Set build status to "pending" on GitHub commit]
    • , etc.

移行メモ(誤字): 移行元の「Generaet documentation」(2 箇所)を
Generate documentation」に、
「Invoke top-level Marven target」を「Maven」に修正した。

バッチ・コマンド、バッチ・ファイルを設定する場合

ビルド・ステップにおける [Windows batch command]([Windows バッチコマンドの実行]) の
設定方法について説明する。

  • [Build]([ビルド]) セクションの [Add build step]([ビルド手順の追加]) し
    [Execute Windows batch command]([Windows バッチコマンドの実行]) を選択する。

  • [Execute Windows batch command]([Windows バッチコマンドの実行]) セクションで
    以下を設定する。

    • Windows のバッチ・コマンドを Command に入力する。

MSBuild プラグインの設定

https://wiki.jenkins-ci.org/display/JENKINS/MSBuild+Plugin

ビルド・ステップにおける
[Build a Visual Studio project or solution using MSBuild]([MSBuild の実行]) の
設定方法について説明する。

  • [Build]([ビルド]) セクションの [Add build step]([ビルド手順の追加]) し、

  • [Build a Visual Studio project or solution using MSBuild]([MSBuild の実行]) を
    選択する。

  • [Build a Visual Studio project or solution using MSBuild]([MSBuild の実行]) の
    セクションで以下を設定する。

    • [MSBuild Version] に前述の「MSBuild プラグイン」で設定した
      Name を入力する。
    • [MSBuild Build File] に Visual Studio Project solution file のパスを入力する。
    • 詳細なビルドオプションを設定するには、
      [Advanced...]([高度な設定...]) ボタンをクリックする。

移行メモ(誤字): 移行元の「[MSBuild Buid File]」を
「[MSBuild Build File]」に修正した。

FxCop プラグインの設定

https://wiki.jenkins-ci.org/display/JENKINS/FxCop+Runner+Plugin

ビルド・ステップにおける [FxCop exec.]([FxCop 実行]) の設定方法について説明する。

  • [Build]([ビルド]) セクションの [Add build step]([ビルド手順の追加]) し

  • [FxCop exec.]([FxCop 実行]) を選択して FxCop プラグインを設定する。

  • [FxCop exec.]([FxCop 実行]) セクションで下記を設定する。

    • [FxCop Name] を入力する。
    • [Assembly Files] に対象となる Assembly Files の path を入力(1 行 1 path)する。
    • [Output XML] に出力 XML ファイルのパスを入力する。

Doxygen プラグインの設定

https://wiki.jenkins-ci.org/display/JENKINS/Doxygen+Plugin

ビルド・ステップにおける
[Generate documentation using Doxygen]([Doxygen でドキュメントを生成する]) の
設定方法について説明する。

  • [Build]([ビルド]) セクションの [Add build step]([ビルド手順の追加]) し

  • [Generate documentation using Doxygen]([Doxygen でドキュメントを生成する]) を
    選択して Doxygen プラグインを設定する。

  • [Generate documentation using Doxygen]([Doxygen でドキュメントを生成する])
    セクションで下記を設定する。

    • [Doxygen installation] フィールドに名称を入力する。
    • [Doxyfile path] に Doxygen の設定ファイルのパスを入力する。
    • 詳細なオプションを設定するには、
      [Advanced...]([高度な設定...]) ボタンをクリックする。

ビルド後アクションの設定

ビルド後アクションの設定方法について説明する。

  • [Post-build Actions] セクションの [Add post-build action] ボタンをクリックし、
    以下のビルド後アクションを追加可能。
    • , etc.

Publish NUnit test result reports プラグインの設定

https://wiki.jenkins-ci.org/display/JENKINS/NUnit+Plugin

ビルド後アクションにおける NUnit プラグインの設定方法について説明する。

  • [Post-build Actions] セクションの [Add post-build action] ボタンをクリックし

  • [Publish NUnit test result reports] を選択して
    [Jenkins Dashboard]([ダッシュボード [Jenkins]]) ページに
    NUnit のプラグインによって生成された HTML の出力を表示させる。

  • [Publish NUnit test result reports] セクションで [Add] ボタンをクリックし
    下記を設定する。

    • [Test report XMLs] に NUnit のレポートファイルのパスを
      (workspace フォルダ以下の相対パスで)入力する。

Publish HTML reports プラグインの設定

ビルド後アクションにおける Publish HTML reports プラグインの設定方法について説明する。

  • [Post-build Actions] セクションの [Add post-build action] ボタンをクリックし

  • [Publish HTML reports] を選択して
    [Jenkins Dashboard]([ダッシュボード [Jenkins]]) ページに
    OpenCover などのプラグインによって生成された XML の出力を表示させる。

  • [Publish HTML reports] セクションで [Add] ボタンをクリックし下記を設定する。

    • [HTML directory to archive] を(workspace フォルダ以下の相対パスで)入力
    • [Index page[s]] を入力
    • [Report title] を入力

Doxygen プラグインの設定

https://wiki.jenkins-ci.org/display/JENKINS/Doxygen+Plugin

ビルド後アクションにおける Doxygen プラグインの設定方法について説明する。

  • [Post-build Actions] セクションの [Add post-build action] ボタンをクリックし

  • [Publish Doxygen] を選択して
    [Jenkins Dashboard]([ダッシュボード [Jenkins]]) ページに
    Doxygen の出力を表示させる。

  • [Publish Doxygen] セクションで下記を設定する。

    • [Doxyfile path] に Doxygen の設定ファイルのパスを入力する。

      • workspace フォルダ以下の相対パスとして入力する。
      • また、Doxyfile 内のパスも workspace フォルダ以下の相対パスとして入力する。
    • 詳細なオプションを設定するには、
      [Advanced...]([高度な設定...]) ボタンをクリックする。

Report Violations プラグインの設定

ビルド後アクションにおける Report Violations プラグインの設定方法について説明する。

  • [Post-build Actions] セクションの [Add post-build action] ボタンをクリックし

  • [Report Violations] を選択して
    [Jenkins Dashboard]([ダッシュボード [Jenkins]]) ページに
    StyleCop、FxCop などのプラグインによって生成された XML の出力を表示させる。

  • [Report Violations] セクションに下記を設定する。

    • [fxcop] のレコードを入力

      • [XML filename pattern]
    • [Faux Project Path] を入力

移行メモ(記号): 上記の「☀ / ☁ / ●」は、
Report Violations プラグインの設定画面で
警告数のしきい値(sunny / stormy / 表示件数)を表すアイコン
そのまま書き写したものと思われる。移行元のまま残した。

E-Mail Notification プラグインの設定

ビルド後アクションにおける E-Mail Notification プラグインの設定方法について説明する。

  • [Post-build Actions] セクションの [Add post-build action] ボタンをクリックし

  • [E-Mail Notification] を選択して電子メールでビルド状態の通知をさせる。

  • [E-Mail Notification] セクションに下記を設定する。

    • [Recipients] に受信者を入力する。

移行メモ(アンカー ID の重複): 移行元では
「Publish HTML reports プラグインの設定」「Report Violations プラグインの設定」
「E-Mail Notification プラグインの設定」の 3 節が
**同じアンカー ID(#k4e672c6)**になっていた(PukiWiki 側の不整合)。
見出しはそのまま移行した。

ビルドの実行と確認

ビルドの実行

  • [Jenkins project] ページで [Build Now] ボタンをクリックしてプロジェクトをビルドする。

  • Build History の中でビルド情報を確認するためにビルド番号をクリックする。

  • Console Output をクリックしてビルド時の console log を確認する。

プラグインの結果を確認

ビルドが成功すると Jenkins で構成されたプラグインの出力が
[Jenkins project] ページ上に表示される。

StyleCop プラグインの結果を確認

・・・

FxCop プラグインの結果を確認

FxCop と Violations プラグインにより生成された結果をチェックし確認する。

  • [Jenkins project] ページで Violations をクリックし

  • FxCop と Violations プラグインにより生成された結果を表示する。

  • [filename] 一覧からアイテムをクリックしコード違反の詳細なレポートを表示する。

Doxygen プラグインの結果を確認

Doxygen プラグインにより生成された結果をチェックし確認する。

  • [Jenkins project] ページで DoxyGen HTML をクリックし

  • Doxygen プラグインにより生成された結果を表示する。

OpenCover の結果を確認

OpenCover と Publish HTML プラグインにより生成された結果を
チェックし確認する。

  • [Jenkins project] ページで Coverage Report をクリックし

  • OpenCover により生成された結果を表示する。

NUnit の結果を確認

NUnit により生成された結果をチェックし確認する。

  • Test Result Trend グラフで NUnit プラグインにより生成された結果を確認する。

  • 詳細は、[Jenkins project] ページで Latest Test Result をクリックし、

  • NUnit プラグインにより生成された結果を表示する。

移行メモ(誤字): 移行元の「詳細なリポート」を「レポート」に、
「生成された結果する」を「生成された結果を確認する」に修正した。

補足(この構成を現在の書き方にすると): 本ページの手順全体は、
現在なら数十行の YAML で表現できる。対応関係を示しておく。

本ページの手順 現在の等価物
Git プラグインで clone actions/checkout@v4
MSBuild プラグイン dotnet build / msbuild
NUnit プラグイン dotnet test --logger trx
OpenCover + ReportGenerator Coverlet + ReportGenerator
FxCop / StyleCop + Violations .NET アナライザー / StyleCop.Analyzers
Doxygen プラグイン DocFX / Doxygen をステップで実行
HTML Publisher actions/upload-artifact
E-Mail Notification Slack / Teams への Webhook
Credentials プラグイン secrets.* / OIDC
手作業のツール インストール コンテナ イメージ / setup- Action* ★
【最大の違い】★★
   本ページ:設定が【Jenkins サーバの中】にある
     → GUI で作られ、Git で追えない
     → サーバが壊れると【再現できない】
     → 「誰も触れないジョブ」が生まれる

   現在  :設定が【リポジトリの中】にある
     → 変更が PR でレビューされる
     → いつでも再現できる
     → 【Pipeline as Code】★

【Jenkins を使い続ける場合も】
   ・【Jenkinsfile】に移行する
     → Freestyle project から Pipeline へ
     → 宣言的パイプライン(declarative pipeline)
   ・【Configuration as Code(JCasC)】プラグイン
     → Jenkins 本体の設定も YAML で管理する ★
   → これだけで「属人化した CI サーバ」問題の
     大半が解消する

参考

プラグイン

セキュリティ

スケジュール

Jenkins構築 - Open 棟梁 Wiki(OTR_JenkinsSetup.md

移行メモ(リンク切れ): 本ページの wiki.jenkins-ci.org
Jenkins 公式ドキュメント(www.jenkins.io)およびプラグイン サイト
plugins.jenkins.io)へ移行
しており、到達しない。
jenkins-ci.org 本体も jenkins.io へ移った。
また codeplex.com(2017 年閉鎖)、
www.stack.nl/~dimitri/doxygen/doxygen.nl へ移転)、
msdn.microsoft.com も同様である。
明らかな移転先が判明しているもの(.NET Framework / Doxygen)は
現行 URL に差し替え、その他は記録として残した。


Tags: 移行, .NET開発, テスト, デバッグ, ドキュメンテーション, ツール類, CI

⚠️ **GitHub.com Fallback** ⚠️