Windows 11 + dotnetコマンド + jenkins 環境構築手順
2026/01/17 12:00:00
Windows 11 + dotnetコマンド + jenkins 環境:
- ビルド対象をandroidプロジェクトとする
Windows 11 + C# + .NET MAUI(Android)開発環境構築手順 参照 - PowerShell
PowerShell7 開発環境構築手順 参照 - JDK.21
jdk install #
jdk21 install #
winget install Microsoft.OpenJDK.21 --source winget
powershell 再起動
jdk21 動作確認 #
java --version
openjdk 21.0.9 2025-10-21 LTS
OpenJDK Runtime Environment Microsoft-12574459 (build 21.0.9+10-LTS)
OpenJDK 64-Bit Server VM Microsoft-12574459 (build 21.0.9+10-LTS, mixed mode, sharing)
インストール場所確認
(Get-Command java).Source
C:\Program Files\Microsoft\jdk-21.0.9.10-hotspot\bin\java.exe
PowerShell 7 で一時的にjdkを切り替える場合:
pyenv や fnm のような感覚で、その時開いている PowerShell 7 だけ Java を切り替えたい場合は、スクリプト(Alias)を作っておくと便利です。
$PROFILE に追加する例:
function use-java25 {
$newJavaHome = "C:\Program Files\Microsoft\jdk-25.x.x"
$newJavaBin = "$newJavaHome\bin"
# 既存 JAVA_HOME の bin を Path から除去
if ($env:JAVA_HOME) {
$oldJavaBin = "$env:JAVA_HOME\bin"
$env:Path = ($env:Path -split ';' | Where-Object {
$_ -and ($_ -ne $oldJavaBin)
}) -join ';'
}
# JAVA_HOME 更新
$env:JAVA_HOME = $newJavaHome
# 新しい Java を先頭に追加(重複防止)
if (-not ($env:Path -split ';' | Where-Object { $_ -eq $newJavaBin })) {
$env:Path = "$newJavaBin;$env:Path"
}
java --version
}
jenkins install #
jenkins 本体をインストールする #
以下からwindows msi ファイルをダウンロードし実行する https://www.jenkins.io/download/
インストール時に以下のポイントに注意する
- 「Run service as LocalSystem」でインストールし、正常完了した場合、自ユーザに変更したほうがトラブルが少ない。
- 「Firewall Exception(ファイアウォールの例外許可)」は追加 「Will be installed on local hard drive」を選択
※ブラウザが自動起動する場合もあるが立ち上がらない場合、http://localhost:8080/にアクセス ※JDK(Java)のパスを指定をしなくても自動認識してくれる。複数のjdkがある場合、選択させられる気がする
jenkins 管理者初期ログイン #
インストール完了後、ブラウザで以下にアクセスし、初期パスワードを入力する
http://localhost:8080/
初期パスワードは画面に表示されたファイルに記載があるので確認する
Get-Content "C:\ProgramData\Jenkins\.jenkins\secrets\initialAdminPassword"
3d65eaa0c91140778c49f0aca9af2a15
ログインが成功後、「Install suggested plugins」を選択し実行する これで管理者設定は完了
jekins ユーザを追加 #
「Install suggested plugins」が完了するとユーザ設定画面が表示される 以下の内容を設定する
| key | value |
|---|---|
| username | jenkins |
| password | jenkins3 |
| fullname | jenkins master |
| jenkins@test.com |
入力が完了すると、 Instance Configuration)が表示される。 これは、Jenkinsのネットワーク上の住所を確認する最終確認画面 そのまま「Save and Finish」
「Jenkins is ready!」 という画面が出るので、「Start using Jenkins」 をクリックで完了
作成したjenkinsユーザでログインできない場合 #
管理者権限で以下のファイルを開く
C:\ProgramData\Jenkins.jenkins\config.xml
config.xml の
<useSecurity>true</useSecurity>
の true を false に書き換え保存し、管理者権限でpowershell7で以下を実行する
Restart-Service jenkins
再度、http://localhost:8080/ にアクセスし、jenkins管理のSecurityで以下を設定する
- 「ユーザ情報」欄で 「Jenkinsのユーザデータベース(Jenkins’ own user database)」 を選択。
- 「権限管理」欄で「ログイン済みユーザに許可」にチェック
再度、管理者権限で以下のファイルを開く
C:\ProgramData\Jenkins.jenkins\config.xml
config.xml の
<useSecurity>true</useSecurity>
の true を false に書き換え保存し、管理者権限でpowershell7で以下を実行する
Restart-Service jenkins
- ※jenkins管理画面以下が表示されるが、これはjenkins設計思想で管理用PCとビルド用PCを分離する設計となってる。ここではビルド専用機として使用を想定しているので、“Dismiss"を選択で問題ない。
Building on the built-in node can be a security issue. You should set up distributed builds. See the documentation.
windows ユーザの導入済みツールを使えるようにする #
jenkinsを「Run service as LocalSystem」でインストールした場合 #
windows ユーザとjenkinsサービスを紐づける必要がある
- Win + R キーを押し、services.msc を実行。
- Jenkins を右クリック > 「プロパティ」。
- 「ログオン」 タブを開く。
- 「アカウント」 を選択し、あなたの Windows ユーザー名 と パスワード を入力して保存。 参照ボタン押下して、ユーザ選択ダイアログの「選択するオブジェクト」欄にwindowsユーザ名を入力して”名前の確認”押下するとユーザ名が確定する。例:「jenkins」 -> 「.\jenkins」となる
- Jenkins サービスを再起動。
標準ではPowershellが使えないので追加する #
※PowerShell7は使用できないが、jenkinsビルドでは問題にならない想定
- jenkins管理 > Plugins から、Available plugins を選択
- PowerShell をインストールする
実験Jobでpowershellが使える確認 #
- 新規ジョブ作成を選択し、“test-check-env"を作成 “フリースタイル・プロジェクトのビルド"を選択
- “Build Steps"でpowershellを選択し以下を入力
$OutputEncoding = [Console]::OutputEncoding = [System.Text.Encoding]::UTF8 # あとは普通にコマンドを打つだけ $PSVersionTable.PSVersion mise --version - 作成したjobを実行
- コンソール出力を確認
以下のようになっていれば問題ない
ユーザーjenkins masterが実行 Running as SYSTEM ビルドします。 ワークスペース: C:\ProgramData\Jenkins\.jenkins\workspace\test-check-env [test-check-env] $ powershell.exe -NonInteractive -ExecutionPolicy Bypass -File C:\Users\jenkins\AppData\Local\Temp\jenkins3130945918498293524.ps1 2026.1.3 windows-x64 (2026-01-16) Finished: SUCCESS
dotnet コマンドをインストールする #
.NET SDK のどのバージョンをインストール(winget install Microsoft.DotNet.SDK.x)してもdotnetコマンドもインストールされる
# .NET 8 SDK のインストール
winget install Microsoft.DotNet.SDK.8
# .NET 10 SDK のインストール
winget install Microsoft.DotNet.SDK.10
# nuget アドレス追加
dotnet nuget add source https://api.nuget.org/v3/index.json -n nuget.org
# バージョン確認
dotnet --list-sdks
8.0.416 [C:\Program Files\dotnet\sdk]
10.0.101 [C:\Program Files\dotnet\sdk]
# 確認したバージョンのmauiをインストール
mkdir tmp
cd tmp
# .NET 8 用の MAUI ワークロードをインストール
dotnet new globaljson --sdk-version 8.0.416 --force
dotnet workload install maui
# .NET 10 用の MAUI ワークロードをインストール
dotnet new globaljson --sdk-version 10.0.101 --force
dotnet workload install maui
# maui インストール確認
dotnet workload list
インストール済みワークロードの ID マニフェストのバージョン インストール ソース
--------------------------------------------------------
maui 8.0.100/8.0.100 SDK 8.0.400
`dotnet workload search` を使用して追加ワークロードを検出し、インストールします。
dotnet nuget add sourceコマンド以外でnugetでサイト追加したい場合は、以下のファイルに追記が必要
# notepad C:\Users\jenkins\AppData\Roaming\NuGet\NuGet.Config
notepad $env:USERPROFILE\AppData\Roaming\NuGet\NuGet.Config
jenkinsネットワーク設定 #
VMWareの仮想ネットワークエディタのVMnet8のdhcpの空間を確認 #
- 編集 > 仮想ネットワークエディタ を選択
- VMnet8 > dhcp設定 を選択
- 開始IPアドレスと終了IPアドレスを確認
(例:192.168.247.128~192.168.247.254)
jenkinsゲストOSでip確認 #
jenkinsゲストOS起動し以下を実施
ipconfig
Windows IP Configuration
Ethernet adapter Ethernet0:
Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : fe80::1c30:a948:3541:ac8a%4
IPv4 Address. . . . . . . . . . . : 192.168.247.200
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 192.168.247.2
jenkinsゲストOSのIP固定設定(192.168.247.200) #
jenkinsゲストOS起動しIP設定を手動にし以下を設定
- IP アドレス: 192.168.247.200
- サブネット マスク: 255.255.255.0
- ゲートウェイ: 192.168.247.2
- 優先 DNS: 192.168.247.2
- 代替 DNS: 空欄のままでOKですが、念のため 8.8.8.8 と入れておくと安心です
再起動してipconfigで192.168.247.200となっていればOK
jenkinsゲストの8080ポートを受信許可させる #
- 「Windows セキュリティ」>「ファイアウォールとネットワーク保護」>「詳細設定」を選択 「セキュリティが強化された Windows Defender ファイアウォール」という別ウィンドウが開く
- 左側のリストから**「受信規則」**を選択
- 右側の「操作」メニューにある**「新しい規則…」**をクリック
- 規則の種類: 「ポート」を選択して「次へ」
- プロトコルおよびポート: 「TCP」を選択し、「特定のローカルポート」に 8080 を入力して「次へ」
- 操作: 「接続を許可する」のまま「次へ」
- プロファイル: 「ドメイン」「プライベート」「パブリック」すべてチェックが入った状態で「次へ」
- 名前: Jenkins など分かりやすい名前を付けて「完了」
jenkinsゲストOSをホストOSを経由して外部PCからアクセス可能にする #
以下のポートフォワード設定が必要 ※jenkinsゲストOS同様にホストOSの受信規則に8080ポートを受信許可にする必要がある
管理者権限でォワード設定を実施:
# フォワード設定
netsh interface portproxy add v4tov4 listenport=8080 listenaddress=0.0.0.0 connectport=8080 connectaddress=192.168.247.200
# 設定確認
netsh interface portproxy show all
# 設定削除
netsh interface portproxy delete v4tov4 listenport=8080 listenaddress=0.0.0.0
Jenkins + PowerShell で .NET 8 サンプルをビルドする設定手順 #
対象リポジトリ : https://github.com/martincostello/dotnet-8-samples
前提条件:
- OS: Windows
- Jenkins: ローカルPCにインストール済み
- シェル: PowerShell(推奨: PowerShell 7 / pwsh)
- .NET SDK: .NET 8 SDK インストール済み
確認コマンド:
dotnet --list-sdks
出力例:
8.0.xxx
Jenkins Freestyle Job 設定(PowerShell) #
1. 新規ジョブ作成 #
- Jenkins → 新規ジョブ
- ジョブ名:
dotnet8-samples-ps - 種別: フリースタイル・プロジェクト
2. ソースコード管理(Git) #
- ソースコード管理: Git
- Repository URL:
https://github.com/martincostello/dotnet-8-samples.git
- Branch Specifier:
*/main
- 認証: 不要(Public Repository)
3. ビルド手順(PowerShell) #
「ビルド手順の追加」→「PowerShell」
$OutputEncoding = [Console]::OutputEncoding = [System.Text.Encoding]::UTF8
# 1. 最初にすべての対象ZIPを完全に削除する
Write-Host "Cleaning up old zip files..."
Remove-Item -Path "*_build_result.zip" -Force -ErrorAction SilentlyContinue
Write-Host "=== DOTNET INFO ==="
dotnet --info
Write-Host "=== RESTORE ==="
dotnet restore
Write-Host "=== BUILD ==="
dotnet build --configuration Release
Write-Host "=== ZIP ARCHIVE ==="
# 2. 今の時刻で1つだけZIPを作る
$zipName = "$((Get-Date -Format 'yyyyMMddHHmm'))_build_result.zip"
Write-Host "Creating: $zipName"
Compress-Archive -Path "artifacts/*" -DestinationPath "$zipName" -Force
Write-Host "=== FINAL CHECK ==="
dir *.zip
※ PowerShell ステップでは、いずれかのコマンドが失敗するとビルドは FAILED になります。
※ .net8 のマイナーバージョン違いの場合、個別にインストール必要
https://dotnet.microsoft.com/ja-jp/download/dotnet/8.0
インストール後は、 dotnet --list-sdks で確認できる
4. ビルド後の処理 #
成果物を保存を選択
*_build_result.zip を指定する
5. ビルド実行確認 #
- 「今すぐビルド」をクリック
- Console Output に以下が表示されれば成功:
Build succeeded.
Jenkins Pipeline(Jenkinsfile)版(PowerShell) #
pipeline {
agent any
stages {
stage('Checkout') {
steps {
git 'https://github.com/martincostello/dotnet-8-samples.git'
}
}
stage('Restore') {
steps {
pwsh '''
dotnet restore
'''
}
}
stage('Build') {
steps {
pwsh '''
dotnet build --configuration Release
'''
}
}
}
}
windows自動ログイン #
管理者権限でpowershellを起動し以下を実施
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device" /v DevicePasswordLessBuildVersion /t REG_DWORD /d 0 /f
ファイル名を指定して実行を選択し以下を実行し、表示された「ユーザーアカウント管理画面」の
「ユーザーがこのコンピューターを使う進めに、ユーザー名とパスワードの入力が必要」のチェックを外し、ユーザパスワードを入力する
netplwiz
プロジェクト別に.geminiを作成しPlaywright MCPを有効にする方法
#
プロジェクト別に.geminiを作成 #
.gemini\settings.json
{
"security": {
"auth": {
"selectedType": "oauth-personal"
}
},
"general": {
"previewFeatures": true
},
"generationConfig": {
"temperature": 0,
"topK": 1,
"topP": 0
},
"mcpServers": {
"playwright": {
"command": "npx",
"args": ["-y", "@playwright/mcp@latest"],
"env": {
"PLAYWRIGHT_BROWSERS_PATH": "./browsers"
}
}
}
}
chromium をインストール #
$env:PLAYWRIGHT_BROWSERS_PATH = ".\browsers"
npx playwright install chromium
プロジェクト別gemini起動スクリプト作成 #
start-gemini.ps1
$env:GEMINI_CONFIG_PATH = "$PSScriptRoot\.gemini\settings.json"; gemini
プロジェクト別にgeminiを起動し、Playwright MCP を使って検索 #
.\start-gemini.ps1
>Playwright でブラウザを開いて、`mcp`を検索してください
いろいろ実験 #
.net10 プロジェクトを .net8 にダウングレードする方法 #
ここでは gemini cli を使ってダウングレードする
このプロジェクトは.net10(maui10)で作成されています。
それを、.net8(maui8)に変更して動作するようにしてほしいです。
以下を実施して.net8(maui8)もインストール済みです。
```
winget install Microsoft.DotNet.SDK.8
dotnet --list-sdks
8.0.416 [C:\Program Files\dotnet\sdk]
10.0.101 [C:\Program Files\dotnet\sdk]
mkdir tmp
cd tmp
dotnet new globaljson --sdk-version 8.0.416 --force
dotnet workload install maui
````
実行結果は以下の通り
✦ 今回、.NET 10 (プレビュー版/デイリービルド由来のテンプレート) から .NET 8
へのダウングレードで発生した主な課題は以下の2点でした。
1. API の違い: .NET 10 テンプレートに含まれていた DisplayAlertAsync / DisplayActionSheetAsync が、標準の .NET 8
(MAUI) では DisplayAlert / DisplayActionSheet という名前であるため、コンパイルエラーになった。
2. 文字化け事故: 一括置換に使用した PowerShell
コマンドがファイルのエンコーディング(UTF-8)を正しく扱えず、日本語が含まれるファイルが破損した。
これらを踏まえ、次回スムーズに移行するための「指示プロンプトのテンプレート」を作成しました。
以下のプロンプトをコピーして使用してください。
---
推奨プロンプト
1 このプロジェクトを .NET 10 (MAUI 10) から .NET 8 (MAUI 8) にダウングレードしてください。
2 以下の手順で慎重に作業を行ってください。
3
4 1. **SDKの固定**:
5 ルートディレクトリに `global.json` を作成し、SDKバージョンを `8.0.416` (または利用可能な最新の .NET 8 SDK)
に固定してください。
6
7 2. **プロジェクトファイルの修正**:
8 `xxx.csproj` を編集し、以下の変更を行ってください。
9 - `TargetFrameworks` の `net10.0` をすべて `net8.0` に置換する。
10 - 依存パッケージ `Microsoft.Extensions.Logging.Debug` のバージョンを `8.0.0` に変更する。
11
12 3. **コードの修正 (APIの変更対応)**:
13 .NET 8 (MAUI) の仕様に合わせるため、C# ファイル (`.cs`) 内のメソッド呼び出しを修正してください。
14 - `DisplayAlertAsync` → `DisplayAlert`
15 - `DisplayActionSheetAsync` → `DisplayActionSheet`
16
17 **【重要】**:
18 ファイルには日本語が含まれています。PowerShell の `Set-Content` などを使用した一括置換は
**文字化けの原因になるため使用しないでください**。
19 必ずエージェントの `replace`
ツールを使用するか、エンコーディングを考慮した安全な方法でファイルを修正してください。
20
21 4. **確認**:
22 修正後、`dotnet build -f net8.0-windows10.0.19041.0` を実行してビルドが通ることを確認してください。
---
このプロンプトのポイント
* API名の変更を事前に指示:
エラーが出てから直すのではなく、最初から「名前が変わる」ことを伝えておくことで、最初の一手で修正させることができま
す。
* 文字化け対策の明記: 「PowerShellでの一括置換禁止」や「replace
ツールの使用」を明示することで、今回のようなファイル破損事故を防ぎます。
* ターゲットSDKの明示: .NET 8 と曖昧に言うより、具体的なバージョンや global.json
の作成を指示することで、環境による揺らぎをなくせます。
(別パターン)NET 10 (MAUI 10) から .NET 8 (MAUI 8) にダウングレード のプロンプト #
このプロジェクトを .NET 10 (MAUI 10) から .NET 8 (MAUI 8) にダウングレードしてください。
以下の手順で慎重に作業を行ってください。
0. 準備
現状、環境は以下の通りです。
```
❯ dotnet --list-sdks
5.0.405 [C:\Program Files\dotnet\sdk]
8.0.416 [C:\Program Files\dotnet\sdk]
10.0.101 [C:\Program Files\dotnet\sdk]
❯ dotnet workload list
インストール済みワークロードの ID マニフェストのバージョン インストール ソース
----------------------------------------------------------------
maui-windows 8.0.3/8.0.100 VS 18.1.11312.151
maccatalyst 17.0.8478/8.0.100 VS 18.1.11312.151
ios 17.0.8478/8.0.100 VS 18.1.11312.151
android 34.0.43/8.0.100 VS 18.1.11312.151
`dotnet workload search` を使用して追加ワークロードを検出し、インストールします。
```
1. SDKの固定
ルートディレクトリに global.json を作成し、SDKバージョンを 8.0.416(または利用可能な最新の .NET 8 SDK)に固定してください。
2. プロジェクトファイルの修正
xxx.csproj を編集し、以下の変更を行ってください。
TargetFrameworks の net10.0 をすべて net8.0 に置換する
依存パッケージ Microsoft.Extensions.Logging.Debug のバージョンを 8.0.0 に変更する
3. コードの修正 (APIの変更対応)
.NET 8 (MAUI) の仕様に合わせるため、C# ファイル (.cs) 内のメソッド呼び出しを修正してください。
DisplayAlertAsync → DisplayAlert
DisplayActionSheetAsync → DisplayActionSheet
【重要】
ファイルには日本語が含まれています。PowerShell の Set-Content などを使用した一括置換は
文字化けの原因になるため使用しないでください。
必ずエージェントの replace ツールを使用するか、エンコーディングを考慮した安全な方法でファイルを修正してください。
4. 確認
修正後、dotnet build -f net8.0-windows10.0.19041.0 を実行してビルドが通ることを確認してください。
✦ .NET 10 (MAUI 10) から .NET 8 (MAUI 8) へのダウングレード作業が完了しました。
実施内容:
1. SDKの固定: global.json を作成し、SDK バージョンを 8.0.416 に固定しました。
2. プロジェクトファイルの修正:
* xxx.csproj の TargetFrameworks を net10.0 から net8.0 に変更しました。
* Microsoft.Maui.Controls のバージョンを 10.0.20 から 8.0.3 に変更しました。
* Microsoft.Extensions.Logging.Debug のバージョンを 10.0.1 から 8.0.0 に変更しました。
3. コードの修正:
* 以下の ViewModel ファイルにおいて、非推奨(または .NET 8 MAUI で標準的でない)非同期メソッドを同期メソッド名(戻り値は Task
のまま)に置換しました。
* DisplayAlertAsync → DisplayAlert
* DisplayActionSheetAsync → DisplayActionSheet
* 対象ファイル:
* xxx/Pages/M0001ViewModel.cs
* xxx/Pages/M0002ViewModel.cs
* xxx/Pages/M0003ViewModel.cs
* xxx/Pages/M0201ViewModel.cs
* xxx/Pages/M9999ViewModel.cs
* xxx/ViewModels/BaseViewModel.cs
4. 環境の修復と確認:
* 必要なワークロード (maui-android, maui-ios 等) を dotnet workload restore でインストールしました。
* dotnet build -f net8.0-windows10.0.19041.0 を実行し、ビルドが正常に完了することを確認しました。
現在は .NET 8 環境で正常にビルドできる状態です。
実験コマンド実行 #
# android sdk install
powershell -ExecutionPolicy Bypass -File setup_android_sdk.ps1
# $SDK_ROOT = "C:\Android\android-sdk"
# $SDK_MANAGER = "$SDK_ROOT\cmdline-tools\latest\bin\sdkmanager.bat"
# echo y | & $SDK_MANAGER --sdk_root=$SDK_ROOT "platforms;android-34" "build-tools;34.0.0" "platform-tools"
# slnx だと新しすぎて対応できないので、sln を新規作成する
dotnet new sln -n xxx
dotnet sln xxx.sln add .\xxx\xxx.csproj
dotnet restore xxx.sln
# build コマンドで指定する -f オプション内容を取得(net8.0-windows10.0.19041.0)
Get-Content xxx/xxx.csproj | Select-String "TargetFrameworks"
<TargetFrameworks>net8.0-android;net8.0-ios;net8.0-maccatalyst</TargetFrameworks>
<TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('windows'))">$(TargetFrameworks);net8.0-windows10.0.19041.0</T
argetFrameworks>
# xxx はディレクトリ名を指定している。また、直接、xxx/xxx.csproj としても動作する様子
# 1. クリーン
dotnet clean xxx.sln
# 2. 復元
dotnet restore xxx.sln
# 3. Windows用ビルド (Release)
dotnet build xxx.sln -f net8.0-windows10.0.19041.0 -c Release
# 4. Android用 APK作成 (Release) ※ 複数プロジェクトがある場合があるので、 apk だけ個別指定したほうがいい。
# * Android用のAPKを作りたい時: -f net8.0-android を指定する。
# * Windows用の実行ファイルを作りたい時: -f net8.0-windows10.0.19041.0 を指定する。
dotnet publish xxx/xxx.csproj -f net8.0-android -c Release -p:AndroidPackageFormat=apk -p:AndroidKeyStore=false
# apkが作成されたか確認
la .\xxx\bin\Release\net8.0-android\com.companyname.xxx-Signed.apk
-a--- 36M 1 minute -I .\xxx\bin\Release\net8.0-android\com.companyname.xxx-Signed.apk
生成されるapkファイルパス: .\xxx\bin\Release\net8.0-android\com.companyname.xxx-Signed.apk
- bin\Release\net8.0-android\ フォルダの中にる
- ファイル名の末尾が -Signed.apk となっているものが、そのまま実機にインストール可能なファイル
全ビルド済みの場合:
❯ dotnet build xxx.sln
復元対象のプロジェクトを決定しています...
復元対象のすべてのプロジェクトは最新です。
xxx -> C:\home\developer\work\test-project\xxx\xxx\bin\Debug\net8.0-android\xxx.dll
xxx -> C:\home\developer\work\test-project\xxx\xxx\bin\Debug\net8.0-ios\iossimulator-x64\xxx.dll
xxx -> C:\home\developer\work\test-project\xxx\xxx\bin\Debug\net8.0-maccatalyst\maccatalyst-x64\xxx.dll
xxx -> C:\home\developer\work\test-project\xxx\xxx\bin\Debug\net8.0-windows10.0.19041.0\win10-x64\xxx.dll
.git 圧縮
Compress-Archive -Path ".git" -DestinationPath "xxx.git.zip"
jenkins Job. Multibranch Pipeline 設定サンプル #
> Multibranch Pipeline を選択した場合、`feature`固定ですか?自由に決定できますか?
✦ `feature` 固定ではありません。完全に自由に決定できます。
デフォルトでは「Jenkinsfile が存在する すべてのブランチ」が対象になりますが、設定で柔軟にコントロール(フィルタリング)可能です。
具体的には、Multibranch Pipeline の設定画面にある 「Branch Sources (ブランチソース)」 セクションで以下のように指定できます。
よくある設定パターン
1. すべて対象(デフォルト)
* 設定: * (または空白)
* 挙動: Jenkinsfile を持っているブランチなら main も develop も feature/abc もすべて自動で検出してビルドします。
2. 特定のブランチのみ対象
* 設定: main develop (スペース区切り)
* 挙動: main と develop だけを監視し、feature ブランチは無視します。
3. ワイルドカードで指定
* 設定: main develop feature/*
* 挙動: main、develop、および feature/ で始まるすべてのブランチ(例: feature/login-fix)を対象にします。
4. 正規表現で指定(高度な設定)
* 例: (main|develop|release/.*)
* 挙動: 複雑な命名規則にマッチするものだけを対象にできます。
設定場所のイメージ
Jenkins のジョブ設定画面 > Branch Sources > Git > Behaviours > Filter by name (with wildcards) などの項目で指定します。
基本コマンドいろいろ #
# winget で xxx をインストール
winget install xxx --source winget
# 環境変数
Get-ChildItem Env:
# grep のように絞り込み
Get-ChildItem Env: | Select-String home
# xxxコマンドの場所を確認(例:java)
(Get-Command java).Source
# (Get-Command pwsh).Source
# C:\Program Files\PowerShell\7\pwsh.exe
dotnet build xxx.csproj -f net8.0-windows10.0.19041.0
dotnet workload restore xxx.csproj
よくあるトラブルと対策 #
dotnet が見つからない #
エラー:
dotnet : The term 'dotnet' is not recognized
対策:
- Jenkins をユーザー起動にする
- または dotnet のフルパス指定
"C:\Program Files\dotnet\dotnet.exe" build
global.json による SDK 不一致 #
確認:
dotnet --list-sdks
一時回避:
Remove-Item global.json
一部サンプルでビルドが失敗する場合 #
Get-ChildItem -Recurse *.csproj | ForEach-Object {
dotnet build $_.FullName --configuration Release
}
成果物を zip 化する場合 #
Compress-Archive -Path . -DestinationPath build-result.zip
Jenkins 設定:
- 「成果物を保存」
- 対象ファイル:
build-result.zip