Jenkins の Publish Over SSH プラグインを使用してプロジェクトをリモート マシンにデプロイする手順

Jenkins の Publish Over SSH プラグインを使用してプロジェクトをリモート マシンにデプロイする手順

SSH プラグインの使用による公開

Publish Over SSH を使用する前に、SSH 秘密キーを作成する必要があります。マシン間のパスワード不要のログインを構成します。マシン A の IP が 192.168.AA.AAA、マシン B の IP が 192.168.BB.BBB で、マシン A はパスワードなしでマシン B にログインでき、マシン B はパスワードなしでマシン A にログインできるとします。生成方法は次のとおりです。

マシン A に入り、次を実行します。

cd ~
ssh-keygen -t rsa

次のコマンドは、パスワードなしでマシン192.168.AA.AAAを介してマシン192.168.BB.BBBにログインできることを示しています。

sshコピーID 192.168.BB.BBB 

検証方法は、マシン A で ssh 192.168.BB.BBB を実行し、ifconfig を実行して現在の IP を確認します。マシンの IP が 192.168.BB.BBB になっていることがわかったら、パスワードなしのログイン設定が成功したことを意味します。

マシン B に入り、次を実行します。

cd ~
ssh-keygen -t rsa
sshコピーID 192.168.AA.AAA

検証方法は、マシン B で ssh 192.168.AA.AAA を実行し、ifconfig を実行して現在の IP を確認します。マシンの IP が 192.168.BB.BBB になっていることがわかったら、パスワードなしのログイン設定が成功したことを意味します。

システム構成でSSH経由での公開を構成する

Jenkins->システム管理->システム設定に移動し、SSH経由での公開を設定します。

パラメータの説明:

パスフレーズ: パスワード (設定している場合はキーパスワード)
キーへのパス: キーファイル(秘密鍵)へのパス
キー: 秘密鍵をこのボックスにコピーします
実行を無効にする: 実行中のコマンドを無効にする プライベート設定:
SSH サーバー名: サーバーの名前 (任意の名前)
ホスト名: SSH に接続する必要があるホスト名または IP アドレス (IP を推奨)
ユーザー名: ユーザー名
リモートディレクトリ: リモートディレクトリ
パスワード認証を使用するか、別のキーを使用します。パブリック設定を置き換えることができます(非常に拡張性の高いパブリック設定を選択して拡張します)。
プライベート構成の詳細:
ポート: ポート (デフォルト 22)
タイムアウト (ms): タイムアウト (ミリ秒) デフォルト値は許容されます。
実行を無効にする: 実行中のコマンドを無効にする
テスト構成: テスト接続

ビルドされたプロジェクトで SSH を設定します。

実行前に、Build > Post Steps の Execute shell 構成と連携し、scp コマンドを実行して、コピーするプロジェクトをリモート マシンにリモート コピーする必要があります。実行シェルの内容は次のとおりです。

scp -r /root/.jenkins/workspace/youxuan_api_pre/qt360-web/target/youxuan_api [email protected]:/usr/local/jenkinsTempFolder/
エクスポート BUILD_ID=DONTKILLME

ビルドされたプロジェクト -> 構成 -> ビルド後の操作をクリックし、ビルド成果物を SSH 経由で送信するを選択し、次のように構成します (注: 以下の Exec コマンドは、リモート マシンで実行されるスクリプトです)。

スクリプトの内容は次のとおりです。

#!/bin/bash
echo "=====================プロジェクトのデプロイを開始==========================="
ps -aux | grep /usr/local/tomcat/ | grep -v grep > tomcat_info.txt
sed 's/ / /g' tomcat_info.txt > tomcat_info1.txt
sed 's/ / /g' tomcat_info1.txt > tomcat_info.txt
sed 's/ / /g' tomcat_info.txt > tomcat_info1.txt 
cat tomcat_info1.txt | cut -d' ' -f 2 > tomcat_info.txt
`cat tomcat_info.txt` の行
する
  -9 $line を消す
終わり
cd /usr/local/tomcat/webapps
rm -rf youxuan_api*
mv /usr/local/jenkinsTempFolder/youxuan_api /usr/local/tomcat/webapps
/etc/init.d/tomcat スタート
同期
エコー 3 > /proc/sys/vm/drop_caches
echo "=====================プロジェクトのデプロイが成功しました==========================="

パラメータの説明:

SSHサーバー名: システム設定で設定した名前を選択します
転送セットソースファイル: アップロードするファイル (注: ワークスペースのパスからの相対パス。次の設定に示すように複数の値を入力できます。デフォルトでは で区切られています)
プレフィックスを削除: ディレクトリを削除します (転送セット ソース ファイル内のディレクトリのみ指定できます)
リモート ディレクトリ: リモート ディレクトリ (必要に応じて入力してください。ここではテストを行っているため、面倒で入力しませんでした。システム構成はデフォルトで継承されます)
実行コマンド: 実行するコマンドを記述します (新しいバージョンでは、転送セット ソース ファイルと実行コマンドの両方を入力する必要がありますが、両方を入力する必要はありません。古いバージョンでは、どちらか一方のみを入力できます)
高級:
除外ファイル: 除外ファイル (ディレクトリを転送するときに便利です。ワイルドカードを使用します。例: **/*.log、**/*.tmp、.git/)
パターンセパレーター: セパレーター (転送セットソースファイルのセパレーターを設定します。ここで変更する場合は、上記の内容も変更する必要があります)
デフォルトの除外なし: デフォルトの除外ルールを無効にします (詳細についてはヘルプを参照してください)
空のディレクトリを作成する: このオプションは、プラグインのデフォルトの動作を変更します。デフォルトの動作は、ファイルが存在するかどうかを照合し、存在する場合はそれを保存するためのディレクトリを作成することです。このオプションを選択すると、空のディレクトリであっても、ファイルを保存するためのディレクトリが作成されます。 (個人的な理解)
ファイルをフラット化: ファイルのみをアップロードし、ディレクトリを作成しません (リモート ディレクトリを除く)
リモート ディレクトリは日付形式です: リモート ディレクトリは日付付きのフォルダーを作成します (日付形式はリモート ディレクトリで設定する必要があります)。具体的な形式については、次の表を参照してください。
リモートディレクトリ 作成されたディレクトリ
'qa承認済み/'yyyyMMddHHmmss qa承認済み/20101107154555
'builds/'yyyy/MM/dd/'build-${BUILD_NUMBER}' builds/2010/11/07/build-456 (ビルド番号が 456 の場合)
yyyy_MM/'ビルド'-EEE-d-HHmmss 2010_11/ビルド-Sun-7-154555
yyyy-MM-dd_HH-mm-ss 2010-11-07_15-45-55
実行タイムアウト (ms): スクリプトを実行するためのタイムアウト (ミリ秒単位)
pty で実行: 端末実行スクリプトをシミュレートする
転送セットの追加: 構成を追加する

要約する

以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。これについてもっと知りたい場合は、次のリンクをご覧ください。

以下もご興味があるかもしれません:
  • JenkinsはSSHを使用してコンパイルおよび公開します
  • Jenkins の SSH グローバル認証情報を追加する

<<:  MySQL 5.7.18 zip バージョンのインストールと設定方法のグラフィック チュートリアル (win7)

>>:  JavaScript を使用して動的な QQ 登録ページを作成する

推薦する

DockerでSpringbootプロジェクトを実行する方法

1. IDEAの下にあるターミナルをクリックし、mvn clean installと入力します。 次...

uni-appのスタイルの詳細な説明

目次uni-app のスタイル要約するuni-app のスタイルsassプラグインは公式ウェブサイト...

MySQL でのインデックスの追加と削除に関連する操作

目次1. インデックスの役割2. インデックスの作成と削除(1)ALTER TABLE文を使用して、...

Nginx アクセス ログとエラー ログ パラメータの説明

例: nginx ログには、アクセス ログとエラー ログの 2 つの主な種類があります。アクセス ロ...

MySql への新しいユーザーの追加、ユーザー用のデータベースの作成、ユーザーへの権限の割り当ての概要

1. 新しいユーザーを追加するローカルIPアクセスのみを許可する '123456' ...

React-Dropzone をベースにアップロードコンポーネント機能を開発する (サンプルデモ)

今回はReact-Flaskフレームワーク上でアップロードコンポーネントを開発するスキルについてお話...

TypeScript で時間を費やした場所の概要

TS で時間を過ごした場所をいくつか記録します。 (まず、文句を言わせてください。stackover...

MySQL Server 8.0.13.0 インストールチュートリアル(画像とテキスト付き)

MySQL 6.1.3 をベースにした 8.0.13 をインストールします。 MySQL 8.0....

CSS における zoom:1 属性の定義と機能

今日、CSS の zoom 属性は何のために使用されるのかと尋ねられました。この属性は、フローティン...

CSS フロート(float, clear)の人気の解説と体験談

私はかなり昔に CSS に触れましたが、フローティングについてはいつも混乱していました。私の理解が浅...

Ubuntu 18.04.4 に MySQL をインストールするプロセスの詳細な説明

Ubuntu 18.04.4 に MySQL をインストールするプロセスを見てみましょう。内容は次の...

ランダムロールコールテーブルを実装するためのネイティブJavaScript

この記事では、JavaScriptのランダムロールコールテーブルの具体的なコードを参考までに紹介しま...

JSでユーザーを追跡する方法

目次1. 同期AJAX 2. 非同期AJAX 3. ユーザーのクリックを追跡する4. リバウンドトラ...

Docker nginxのインストールと設定方法

DockerでNginxイメージをダウンロードする docker プル nginx Docker イ...

MySQL シリーズ 4 SQL 構文

目次チュートリアルシリーズ1. SQL言語の紹介と仕様2. データベース操作1. ライブラリを作成す...