• システム開発に関わる内容をざっくりと書いていく

Jenkinsジョブ-dotnet cli Webアプリケーション編 おまけFTPS編

Jenkinsを使用してdotnetコマンドでWebアプリのビルドと発行をしてFTPSを使ってデプロイする使用例:

 1、ジョブを作成する:

  新規プロジェクトの作成から、「フリースタイル・プロジェクトのビルド」を選択し「OK」ボタンを押す。

 2、(任意、別方法あり)ワークスペースを指定する:

  Generalの高度な設定を押し、カスタムワークスペースを任意のワークスペースに変更する。(指定したカスタムワークスペースにソース等を取ってくるため、作業の経緯を追いやすくなる)

画像に alt 属性が指定されていません。ファイル名: image-23-1024x635.png

 3、ソースコードを取得する(バージョン管理ソフトから):

  ソースコード管理でソースコードのバージョン管理ソフトを指定し、接続のための情報を入力する。(今回はGit、他大体のバージョン管理ソフトはプラグインをインストールすれば表示される)

画像に alt 属性が指定されていません。ファイル名: image-24-1024x685.png
認証情報は追加->Jenkinsを押下して設定画面が出るのでそこで設定

 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
Sample.Testはテストプロジェクトが入っているフォルダ名

 6、マイグレーションを実行する(EF Core使用時のみ、必要時のみ):

  ビルド手順の追加から「Windowsバッチコマンドの実行」を選択し、下記コマンドを実行し、データマイグレーションを実行する。

  *EF Coreのマイグレーションとは

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