知識マップ: 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はコマンドラインでの発行に癖がある。
flowchart LR
accTitle: WinForms/WPFアプリのCI/CDパイプラインの知識マップ
accDescr: GitHub Actionsを使ったWinForms・WPFデスクトップアプリのビルド・タグ駆動バージョン採番・コード署名・配布形式ごとの自動化がどう連鎖し、署名鍵の管理がどのリスクと結び付くかを示す図。
desktop_app_cicd_pipeline["デスクトップアプリのCI/CDパイプライン"]
github_actions["GitHub Actions"]
windows_runner["Windowsランナー(windows-latest)"]
windows_forms["Windows Forms"]
wpf["WPF"]
build_test_automation["ビルド+テストの自動化"]
code_signing_cert["コード署名証明書"]
tag_driven_versioning["タグ駆動リリース(バージョン採番)"]
github_release["GitHubリリース"]
hsm_key_storage["HSM/トークンでの秘密鍵保管"]
azure_artifact_signing["Azure Artifact Signing"]
github_actions_environment["GitHub Actions Environment(承認者付き環境)"]
signing_key_exposure_risk["署名鍵の窃取リスク"]
github_actions_secrets["GitHub Actionsのシークレット"]
signtool["SignTool"]
code_signing_timestamp["コード署名のタイムスタンプ"]
msix["MSIX"]
xcopy_distribution["xcopy配布(zip)"]
clickonce["ClickOnce"]
msi["MSI(Windows Installer)"]
desktop_app_cicd_pipeline -.->|"利用する"| github_actions
desktop_app_cicd_pipeline -.->|"前提とする"| windows_runner
windows_forms -.->|"前提とする"| windows_runner
wpf -.->|"前提とする"| windows_runner
desktop_app_cicd_pipeline -->|"利用する"| build_test_automation
build_test_automation -.->|"より先に行うべき"| code_signing_cert
desktop_app_cicd_pipeline -->|"利用する"| tag_driven_versioning
tag_driven_versioning -.->|"利用する"| github_release
desktop_app_cicd_pipeline -.->|"前提とする"| code_signing_cert
code_signing_cert -.->|"前提とする"| hsm_key_storage
hsm_key_storage -.->|"両立しない"| windows_runner
azure_artifact_signing -.->|"推奨される対応"| github_actions
github_actions_environment -->|"軽減する"| signing_key_exposure_risk
github_actions_secrets -.->|"原因になり得る"| signing_key_exposure_risk
code_signing_cert -.->|"で構成できる"| github_actions_secrets
signtool -->|"利用する"| code_signing_cert
signtool -.->|"利用する"| code_signing_timestamp
msix -->|"前提とする"| code_signing_cert
xcopy_distribution -.->|"推奨される対応"| github_actions
tag_driven_versioning -.->|"推奨される対応"| clickonce
desktop_app_cicd_pipeline -.->|"利用する"| msi
概念間の関係(全21件)
図と同じ関係を文章でも列挙します。表示している文と機械可読な意味データ(RDFa)は同じ要素に載っています。確度が「確立した関係」のものは直接の関係として、「条件付きの関係」のものは成立条件つきの言明(rdf:Statement)として表現しています。
- デスクトップアプリのCI/CDパイプラインはGitHub Actionsを利用します。
- デスクトップアプリのCI/CDパイプラインはWindowsランナー(windows-latest)を前提とします。
- Windows FormsはWindowsランナー(windows-latest)を前提とします。
- WPFはWindowsランナー(windows-latest)を前提とします。
- デスクトップアプリのCI/CDパイプラインはビルド+テストの自動化を利用します。
- ビルド+テストの自動化はコード署名証明書より先に行うべきです。
- デスクトップアプリのCI/CDパイプラインはタグ駆動リリース(バージョン採番)を利用します。
- タグ駆動リリース(バージョン採番)はGitHubリリースを利用します。
- デスクトップアプリのCI/CDパイプラインはコード署名証明書を前提とします。
- コード署名証明書はHSM/トークンでの秘密鍵保管を前提とします。
- HSM/トークンでの秘密鍵保管はWindowsランナー(windows-latest)と両立しません。
- Azure Artifact SigningはGitHub Actionsに対する本記事の推奨です。
- GitHub Actions Environment(承認者付き環境)は署名鍵の窃取リスクを軽減します。
- GitHub Actionsのシークレットは署名鍵の窃取リスクの原因になることがあります。
- コード署名証明書はGitHub Actionsのシークレットで構成できます。
- SignToolはコード署名証明書を利用します。
- SignToolはコード署名のタイムスタンプを利用します。
- MSIXはコード署名証明書を前提とします。
- xcopy配布(zip)はGitHub Actionsに対する本記事の推奨です。
- タグ駆動リリース(バージョン採番)はClickOnceに対する本記事の推奨です。
- デスクトップアプリのCI/CDパイプラインはMSI(Windows Installer)を利用します。
主要概念の定義
機械可読データ
このページはサイトの知識グラフ(_data/knowledge/)から自動生成されています。誤りの指摘はお問い合わせからお願いします。