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 コンテナのタイムゾーン エラーの問題

目次背景質問問題分析と解決策新たな問題問題分析と解決策背景node-schedule スケジュール ...

ウェブページ内のFlash SWFファイルを変更する方法

これは多くの人が遭遇した問題だと思います。実際、Web ページから FLASH をダウンロードして修...

React useMemo と useCallback の使用シナリオ

目次メモを使うコールバックの使用メモを使う親コンポーネントが再レンダリングされると、そのすべての要素...

Docker に Zookeeper を素早くインストールする方法の詳細なチュートリアル

Docker で Zookeeper を素早くインストール会社を変わってから長らくZookeeper...

VSCode+CMake+Clang+GCC 環境構築チュートリアル (Win10 の場合)

大学院入試に備えて、C/C++ を使って基本的なデータ構造とアルゴリズムを実装する予定です。アルゴリ...

Docker ビルド kubectl イメージ実装手順

プログラムサービスがgitlab ci/cdと統合されたk8sを使用してデプロイされている場合、gi...

Dockerコンテナを介してランプアーキテクチャを構築するプロセス

目次1. Centosイメージを取得する2. nginxイメージをビルドする3. MySQLイメージ...

ウェブページのコピー防止機能の実装方法(クラッキング手法付き)

ソース ファイルを右クリックすると、次のコードが見つかります。 1. CSSを使用してFirefox...

haslaylout と bfc 解析の理解

1. haslayout と bfc は IE 固有の標準属性です。 2. BFC はページ上の分離...

Docker で Elasticsearch Kibana と ik Word Segender をデプロイする詳細な説明

esインストール docker pull elasticsearch:7.4.0 # -d : バッ...

mysql5.7.21.zip インストールチュートリアル

mysql5.7.21 zipの詳細なインストール手順は次のとおりです。 1. 解凍して指定されたデ...

MySQLは文字列関数のSQL文をインターセプトします

1. left(name,4)は左の4文字をインターセプトしますリスト: SELECT LEFT(2...

Vueデータ変更検出の基本的な実装の簡単な分析

目次1. オブジェクトの変更検出2. オブジェクトに関する質問配列変更検出3.1 背景3.2 実装I...

JavaベースのMySQLバックアップテーブル操作

コアはmysqldumpとランタイムです操作は実際にはそれほど難しくありません。バックアップ操作を実...

MySQL でローカル ユーザーを作成し、データベース権限を付与する方法の例

序文MySQL をインストールすると、通常はスーパーユーザー root を作成します。多くの人がこの...