Windows での自動展開に Jenkins を使用するチュートリアル図

Windows での自動展開に Jenkins を使用するチュートリアル図

今日は、Jenkins + powershell スクリプトを使用して、.NET CORE スクリプトを対応するサーバーにデプロイする方法について説明します。

ここで使用するソース コード管理ツールは TFS です。ソース コード マネージャーは比較的古いものですが、原理は似ています。

1. Jre をインストールします。Jenkins は Java に基づいて開発されているため、まずサーバーに Java ランタイム環境をインストールする必要があります。

インストールプロセスは比較的簡単です。Baidu から JRE をダウンロードしてインストールします。

ダウンロードアドレス: https://www.java.com/en/download/manual.jsp

2. Jenkins をダウンロードしてインストールします。ここでのサーバーは Windows なので、Windows バージョンをダウンロードするのが最適です。インストール後、Windows サービスとして直接実行されます。

インストールプロセスも非常に簡単で、オンライン上に多くのチュートリアルがあります。

https://jenkins.io/download/

3. Jenkins をインストールした後、必要に応じて権限プラグインをインストールし、承認されていない権限を持つ未使用のアカウントを構成します (この手順はオプションです)

詳細については、こちらの記事を参照してください。

https://www.jb51.net/article/161947.htm

4. 最も重要なステップは、Jenkins を使用してコードを自動的にデプロイする方法です。

ここにはいくつかポイントがあります。以下に詳細なコードを掲載します。

1) TFS で最新のソース コードを取得します。ここでは、Jenkins 経由でコードを取得せず、tf コマンド経由でコードを取得しました。

これの利点は、タスクごとに個別のコードのコピーを取得するのではなく、すべての Jenkins タスクに同じソース コードを使用できることです。

2) コードを取得したら、コマンドを使用してコードをコンパイルするのが自然です。.net に精通している友人は、コマンドがいくつかしかないことを知っているはずです。

3) コードがリリースされたら、そのコードを弊社サイトまたは Windows サービスにコピーするのが自然です。

この手順も非常に簡単です。コマンドを使用して IIS サイトとアプリケーション プールを停止し、コードをコピーし、対応するサイトを再起動して起動するだけです。

1セットで作業は完了です。

主な手順のスクリーンショットをいくつか示します。

1.Jenkinsはフリースタイルのタスクを作成する

2. 他に選択する必要はありません。PowerShell スクリプトを使用する限り、Jenkins が PowerShell をサポートし、プラグインをインストールする必要があります。

3. 「保存」をクリックすると完了です。「今すぐビルド」をクリックします。

追記: 詳細な PowerShell スクリプトを以下に示します。非常にシンプルなので、ここでは詳細には触れません。コードを見ればすぐに理解できるでしょう。

ネットストップTest1Job
C:\Windows\System32\inetsrv\appcmd.exe サイト Test1.test.com を停止します
C:\Windows\System32\inetsrv\appcmd.exe 停止サイト Test1.api.test.com
C:\Windows\System32\inetsrv\appcmd.exe stop apppool /apppool.name:"test1.test.com"
C:\Windows\System32\inetsrv\appcmd.exe stop apppool /apppool.name:"Test1.api.test.com"
dir "$PSScriptRoot\lib" -Filter "*.ps1" | foreach {
 . $_.フルネーム
 書き込みホスト "$($_.fullName) をインポート"
}
#1. ソースコード D:\test\tools\get_tfs.bat を取得します。
#2. ソースコードをコンパイルします。dotnet build D:\test\Source\MTools\Source-Promotion\Test.API.csproj -nowarn:msb3202,nu1503,cs1591 #--no-restore
APIをエコーするとOK
dotnet build D:\test\Source\MTools\Source-Promotion\Test.Web.csproj -nowarn:msb3202,nu1503,cs1591 #--no-restore
エコーWEB OK
dotnet build D:\test\Source\MTools\Source-Promotion\Test.Job.WindowsService.csproj -nowarn:msb3202,nu1503,cs1591 #--no-restore -vq
エコージョブOK
睡眠20
#3. リリース CCopy D:\test\Source\MTools\Test.\Source-Promotion\Test.API\bin\Debug\netcoreapp2.1 D:\Test\Test1\api
Cコピー D:\test\Source\MTools\Test.\Source-Promotion\Test.Web\bin\Debug\netcoreapp2.1 D:\Test\Test1\web
Cコピー D:\test\Source\MTools\Test.\Source-Promotion\Test.Web\wwwroot D:\Test\Test1\web\wwwroot
CCopy D:\test\Source\MTools\Test.\Source-Promotion\Test.Job.WindowsService\bin\Debug\netcoreapp2.1\win-x64 D:\Test\Test1\job
ネットスタートTest1Job
C:\Windows\System32\inetsrv\appcmd.exe 開始サイト Test1.test.com
C:\Windows\System32\inetsrv\appcmd.exe 開始サイト Test1.api.test.com
C:\Windows\System32\inetsrv\appcmd.exe アプリプールを開始 /apppool.name:"test1.test.com"
C:\Windows\System32\inetsrv\appcmd.exe アプリプールを開始 /apppool.name:"Test1.api.test.com"
ホスト書き込み「成功」
日付を取得
関数 CCopy($folder_a_path,$folder_b_path)
{
 if(!(テストパス $folder_b_path))
 {
 md $フォルダbパス
 }
 #ソースフォルダ内のすべてのファイルを走査します $folders_a = gci $folder_a_path -Recurse
 foreach ($folders_a 内の $folders_a)
 {
 if($folder_a.fullname -like "*appsettings.json*")
 {
 続く
 }
 # 対象ファイルのフルパス名を置き換えて取得します $b = $folder_a.fullname.replace($folder_a_path,$folder_b_path) 
 #対象ファイルが存在するかどうかを判断します。存在する場合は、まずそれが新しいか古いかを判断します。If (test-path $b)
 {
  #ターゲットがディレクトリかどうかを判断します。ディレクトリの場合はスキップします。そうでない場合は、第 1 レベルの空のディレクトリを作成します。If (!((gi $b).PSIsContainer))
  {
  # 対象ファイルとソースファイルの新しさを判断します。対象ファイルの変更時刻がソースファイルより古い場合は、再度コピーして上書きします。If ((gci $b).lastwritetime -lt $folder_a.lastwritetime)
  {
  コピーアイテム $folder_a.fullname $b -force
  }
  }
 }
 #対象ファイルが存在しない場合は直接コピーします。
 {
  コピーアイテム $folder_a.fullname $b
 }
 }
}

手工芸品一式を完成したら、ご意見やご提案がありましたらお知らせください〜

その後、PowerShellを介して他のサーバーにプログラムを公開し、リリースが完了したら結果を電子メールで送信するようにさらに記述します。

つづく...

要約する

上記は、Windows で Jenkins を使用して自動展開を行う方法に関するチュートリアルです。お役に立てれば幸いです。ご質問がある場合は、メッセージを残していただければ、すぐに返信いたします。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。

以下もご興味があるかもしれません:
  • Windows プラットフォームに Jenkins をインストールする方法
  • Windows に Jenkins をインストールする詳細な説明
  • Windows 環境で Jenkins を展開する方法の詳細なチュートリアル
  • Windows で Jenkins ポート番号を変更する

<<:  MySQL 5.7.21 のインストールとパスワード設定のチュートリアル

>>:  Vite2.x に基づく Vue 3.x プロジェクトの実装

推薦する

MySQL で中国語の文字をピンインでソートする簡単な例

名前を格納するフィールドが GBK 文字セットを使用している場合、GBK 内部コード自体がエンコード...

MySQLデータベースはMMM高可用性クラスタアーキテクチャを実装します

コンセプトMMM (Mysql のマスター マスター レプリケーション マネージャー) は、Perl...

MySQL の制限使用法とページングクエリステートメントのパフォーマンス分析の詳細な説明

使用制限クエリ ステートメントを使用する場合、多くの場合、データの最初の数行または中間行を返す必要が...

ユーザーのニーズがマーケティング指向のデザインにつながる

<br />それぞれのトピックについて、チーム内でメールで議論します。議論が白熱するにつ...

nginx プロキシ サーバーで双方向証明書検証を構成する方法

証明書チェーンを生成するスクリプトを使用して、ルート証明書、中間証明書、および 3 つのクライアント...

マークアップ言語 - 印刷スタイルシート

123WORDPRESS.COM HTML チュートリアル セクションに戻るには、ここをクリックして...

mysqlパラメータsql_safe_updatesを使用して更新/削除範囲を制限する方法の詳細な説明

序文皆さんご存知のとおり、MySQL の運用・保守において、更新/削除条件が誤っているためにデータが...

ページ下部のフッターを修正する方法(複数の方法)

フロントエンド Web エンジニアとして、ページ効果を作成するときに次の現象に遭遇したことがあるはず...

Windows 64 ビット版 MySQL 5.7 以降の解凍パッケージにデータディレクトリと my-default.ini がなく、サービスが起動できない問題の簡単な解決方法 (問題概要)

私は SQL の初心者で、オープンソースのインストールは非常に簡単だと思っていましたが、その過程でい...

Docker ベースの Redis クラスターの構築方法

Redisイメージをダウンロードする docker pull yyyyttttwww/redis を...

Vue開発の一般的な手法の詳細な説明

目次$nextTick() $forceUpdate() $セット() .sync——2.3.0 以...

WeChatアプレットのスケルトン画面の実装例

目次スケルトンスクリーンとはアプレットでスケルトン画面を生成する方法導入方法表示と非表示ユーザーエク...

VMwareがモジュールディスクを早期に開けない場合の解決策の詳細な説明

VMWare (Virtual Machine ware) は、「仮想 PC」ソフトウェア会社です。...

TSオブジェクトのスプレッド演算子とレスト演算子の詳細な説明

目次概要オブジェクトの残り属性オブジェクトの拡張プロパティオブジェクトの浅いコピーを作成するkeyo...

MySQL マスタースレーブレプリケーションの実践の詳細説明 - ログポイントに基づくレプリケーション

ログポイントベースのレプリケーション1. マスターデータベースとスレーブデータベースに専用のレプリケ...