Windows 11 + dotnetコマンド + jenkins 環境構築手順

Windows 11 + dotnetコマンド + jenkins 環境構築手順

2026/01/17 12:00:00
Program
Windows, Powershell, Dotnet

Windows 11 + dotnetコマンド + jenkins 環境:

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
email 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サービスを紐づける必要がある

  1. Win + R キーを押し、services.msc を実行。
  2. Jenkins を右クリック > 「プロパティ」。
  3. 「ログオン」 タブを開く。
  4. 「アカウント」 を選択し、あなたの Windows ユーザー名 と パスワード を入力して保存。 参照ボタン押下して、ユーザ選択ダイアログの「選択するオブジェクト」欄にwindowsユーザ名を入力して”名前の確認”押下するとユーザ名が確定する。例:「jenkins」 -> 「.\jenkins」となる
  5. Jenkins サービスを再起動。

標準ではPowershellが使えないので追加する #

※PowerShell7は使用できないが、jenkinsビルドでは問題にならない想定

  1. jenkins管理 > Plugins から、Available plugins を選択
  2. PowerShell をインストールする

実験Jobでpowershellが使える確認 #

  1. 新規ジョブ作成を選択し、“test-check-env"を作成 “フリースタイル・プロジェクトのビルド"を選択
  2. “Build Steps"でpowershellを選択し以下を入力
    $OutputEncoding = [Console]::OutputEncoding = [System.Text.Encoding]::UTF8
    
    # あとは普通にコマンドを打つだけ
    $PSVersionTable.PSVersion
    mise --version
    
  3. 作成したjobを実行
  4. コンソール出力を確認 以下のようになっていれば問題ない
    ユーザー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の空間を確認 #

  1. 編集 > 仮想ネットワークエディタ を選択
  2. VMnet8 > dhcp設定 を選択
  3. 開始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ポートを受信許可させる #

  1. 「Windows セキュリティ」>「ファイアウォールとネットワーク保護」>「詳細設定」を選択 「セキュリティが強化された Windows Defender ファイアウォール」という別ウィンドウが開く
  2. 左側のリストから**「受信規則」**を選択
  3. 右側の「操作」メニューにある**「新しい規則…」**をクリック
    • 規則の種類: 「ポート」を選択して「次へ」
    • プロトコルおよびポート: 「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