知識マップ: WinForms / WPFアプリのCI/CD実践 ── GitHub Actionsでビルドから署名・配布まで自動化する

記事「WinForms / WPFアプリのCI/CD実践 ── GitHub Actionsでビルドから署名・配布まで自動化する」の主張を、概念と関係(エッジ)に分解した知識グラフの全体です。各関係には根拠・確認日・確度が付いています。

WinForms/WPFデスクトップアプリのCI/CDは、まずwindows-latestランナーでのビルド+テストの自動化だけを入れることが実務の出発点で、次にv1.2.3のようなタグのpushでバージョンを注入するタグ駆動リリースを組み、成果物をGitHubリリースへ長期保管する。最大の壁はコード署名の自動化で、2023年6月以降は公的なOV証明書の秘密鍵がHSM保管必須になったため、日本では対象外のAzure Artifact Signingに頼れず、CAのクラウドHSMオプションか手元での署名工程が現実解になる。署名用シークレットは承認者付きのGitHub Actions Environmentに置かないと、書き込み権限を持つ人がワークフローを書き換えるだけで鍵を取り出せてしまう。配布形式ではxcopyが最も組み込みやすく、MSIXは署名が必須、ClickOnceはコマンドラインでの発行に癖がある。

WinForms/WPFアプリのCI/CDパイプラインの知識マップGitHub Actionsを使ったWinForms・WPFデスクトップアプリのビルド・タグ駆動バージョン採番・コード署名・配布形式ごとの自動化がどう連鎖し、署名鍵の管理がどのリスクと結び付くかを示す図。利用する前提とする前提とする前提とする利用するより先に行うべき利用する利用する前提とする前提とする両立しない推奨される対応軽減する原因になり得るで構成できる利用する利用する前提とする推奨される対応推奨される対応利用するデスクトップアプリのCI/CDパイプラインGitHub ActionsWindowsランナー(windows-latest)Windows FormsWPFビルド+テストの自動化コード署名証明書タグ駆動リリース(バージョン採番)GitHubリリースHSM/トークンでの秘密鍵保管Azure Artifact SigningGitHub Actions Environment(承認者付き環境)署名鍵の窃取リスクGitHub ActionsのシークレットSignToolコード署名のタイムスタンプMSIXxcopy配布(zip)ClickOnceMSI(Windows Installer)

概念間の関係(全21件)

図と同じ関係を文章でも列挙します。表示している文と機械可読な意味データ(RDFa)は同じ要素に載っています。確度が「確立した関係」のものは直接の関係として、「条件付きの関係」のものは成立条件つきの言明(rdf:Statement)として表現しています。

主要概念の定義

デスクトップアプリのCI/CDパイプライン
デプロイ先が客先・現場のPCであるWinForms/WPFデスクトップアプリを対象に、ビルド・テスト・バージョン採番・署名・配布物作成を自動化する仕組み。出口は本番反映ではなく署名済み配布物の完成である。
GitHub Actions
GitHubが提供する、リポジトリのイベントをトリガーにワークフローを実行するCI/CDサービス。
Windows Forms
デスクトップGUIアプリケーションを構築するための.NET/.NET FrameworkのUIフレームワーク。
WPF
XAMLでUIを宣言的に記述する、Windows専用のデスクトップUIフレームワーク。ベクターベースの描画とデータバインディングを特徴とする。
ビルド+テストの自動化
windows-latestランナーでのdotnet build/testの実行と、actions/upload-artifactによる成果物の保存だけを行う、CI/CD導入の最小構成。
タグ駆動リリース(バージョン採番)
v1.2.3のようなタグのpushをトリガーにリリースビルドを起動し、MSBuildのVersionプロパティにタグから取った値を注入するバージョン採番の方式。
コード署名証明書
ソフトウェアの発行元を証明し、改ざんを検出するための証明書。
HSM/トークンでの秘密鍵保管
2023年6月1日以降のCA/Browser Forum基準により、コード署名証明書の秘密鍵をFIPS 140-2レベル2相当以上のハードウェア(HSMやUSBトークン)で生成・保管することを義務付けたもの。
Azure Artifact Signing
Microsoftが提供するクラウド型のコード署名サービス(旧Trusted Signing)。物理USBトークンを使わずCI/CDに組み込め、本番配布のMSIX署名で推奨される選択肢に位置付けられるが、利用可能な地域は法人が米国・カナダ・EU・英国、個人が米国・カナダに限られ、日本の開発者は利用できない。
GitHub Actions Environment(承認者付き環境)
承認者やシークレットを紐づけられるGitHub Actionsのデプロイ環境の仕組み。署名鍵などの機微なシークレットを、特定のワークフロー・ジョブだけがアクセスできるように制限するために使う。
GitHub Actionsのシークレット
PFXファイルのBase64文字列やパスワードなど、機微な値をワークフローへ安全に渡すためのGitHub Actionsの仕組み。ログでは自動的にマスクされ、フォークからのプルリクエストには渡らない。
SignTool
コード署名とRFC 3161タイムスタンプの付与、および署名の検証を行うWindows SDK付属のコマンドラインツール。
MSIX
package identityを持つ、Windowsのモダンなアプリパッケージング形式。
xcopy配布(zip)
dotnet publishの出力を圧縮するだけで完成する、最もCIへの組み込みが簡単な配布方式。自動更新は持たず手動展開が前提。

機械可読データ

このページはサイトの知識グラフ(_data/knowledge/)から自動生成されています。誤りの指摘はお問い合わせからお願いします。