Jenkinsを使用してdotnetコマンドでWebアプリのビルドと発行をしてFTPSを使ってデプロイする使用例:
1、ジョブを作成する:
新規プロジェクトの作成から、「フリースタイル・プロジェクトのビルド」を選択し「OK」ボタンを押す。
2、(任意、別方法あり)ワークスペースを指定する:
Generalの高度な設定を押し、カスタムワークスペースを任意のワークスペースに変更する。(指定したカスタムワークスペースにソース等を取ってくるため、作業の経緯を追いやすくなる)
3、ソースコードを取得する(バージョン管理ソフトから):
ソースコード管理でソースコードのバージョン管理ソフトを指定し、接続のための情報を入力する。(今回はGit、他大体のバージョン管理ソフトはプラグインをインストールすれば表示される)
4、ビルドを行う:
ビルド手順の追加から「Windowsバッチコマンドの実行」を選択し、下記コマンドを実行し、ソリューションの依存関係の解決(NuGet復元など)とリビルドを行う。
dotnet restore sample.sln dotnet build sample.sln -c Release --no-incremental
*Tips:dotnet buildの–no-incrementalでリビルド
5、テストを実行する:
ビルド手順の追加から「Windowsバッチコマンドの実行」を選択し、下記コマンドを実行し、テストプロジェクトのテストを実行する。
dotnet test Sample.Test
6、マイグレーションを実行する(EF Core使用時のみ、必要時のみ):
ビルド手順の追加から「Windowsバッチコマンドの実行」を選択し、下記コマンドを実行し、データマイグレーションを実行する。
dotnet ef database update sample.csproj
*注意事項:appsettings.Development.jsonの方が採用される
7、アプリケーションを発行する:
ビルド手順の追加から「Windowsバッチコマンドの実行」を選択し、下記コマンドを実行し、アプリケーションの発行を実行する。
*予め発行のFolderProfileが必要
dotnet publish sample\sample.csproj -c Release -p:PublishProfile=FolderProfile
8、FTPSでデプロイする:
*PowerShellにてFTPSを実行するため、下記のPSファイルを用意する、またはpowerShellプラグインを用意して直接実行する。
ftps.ps1
try { # Load WinSCP .NET assembly Add-Type -Path 'C:\Program Files (x86)\WinSCP\WinSCPnet.dll' # Setup session options $sessionOptions = New-Object WinSCP.SessionOptions -Property @{ Protocol = [WinSCP.Protocol]::Ftp FtpSecure = [WinSCP.FtpSecure]::Explicit HostName = "ホスト名" UserName = "ユーザ名" Password = "パスワード" GiveUpSecurityAndAcceptAnyTlsHostCertificate =$True } $session = New-Object WinSCP.Session try { # Connect $session.Open($sessionOptions) # Force binary mode transfer $transferOptions = New-Object WinSCP.TransferOptions $transferOptions.TransferMode = [WinSCP.TransferMode]::Binary $removeResult = $session.RemoveFiles("FTP先フォルダ/*") $removeResult.Check() # Directoryの作成 $transferResult = $session.PutFiles("送り元フォルダ\", "FTP先フォルダ", $False, $transferOptions) $transferResult.Check() } finally { # Disconnect, clean up $session.Dispose() } exit 0 } catch { Write-Host "Error: $($_.Exception.Message)" exit 1 }
ビルド手順の追加から「Windowsバッチコマンドの実行」を選択し、下記コマンドを実行し、上のpsファイルを実行する。
powershell -File ftps.ps1