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 登録ページを作成する

推薦する

mysql8.x docker リモートアクセスの詳細な設定

目次環境条件エラーが発生しました回避策1. mysql dockerにログインする2. ルートパスワ...

Vue の詳細な入門ノート

目次1. はじめに2. 初期ビュー(I) Vueの概念を理解する(II) MVVMアーキテクチャ(I...

HTML 順序なしリスト 箇条書き 画像を使用した CSS の記述

少なくとも 5 冊のベストセラー書籍の順序なしリストを含む HTML ページを作成します。各書籍の前...

Linux で複数のファイルの名前を一括で変更する方法

Linux では、通常、ファイルの名前を変更するために mv コマンドを使用します。これは、単一のフ...

Dockerイメージ構築原理の分析(Dockerをインストールしなくてもイメージを構築できる)

イメージの構築は、DevOps プロセスにおいて非常に重要なプロセスです。一般的に、イメージの構築と...

nginxコンテナ設定ファイルの独立した実装

コンテナを作成する [root@server1 ~]# docker run -it --name ...

ネイティブJSで実装されたギャラリー機能

目次最初2番目Native Js はギャラリー機能を実装します。画像をクリックすると、対応する拡大画...

ZooKeeper をベースにした Hadoop 高可用性クラスタの構築のチュートリアル図

目次1. 高可用性の概要1.1 可用性の高い全体アーキテクチャ1.2 QJMに基づく共有ストレージシ...

XHTML 入門チュートリアル: シンプルな Web ページの作成

1 分で最初の Web ページを作成します。簡単な Web ページを作ってみましょう。ぜひフォローし...

MySQL 8の新機能である降順インデックスの基礎となる実装の詳細な説明

降順インデックスとは何ですか?インデックスについてはよくご存知かもしれませんが、降順インデックスにつ...

Vue でインデックスをキー属性値として使用することが推奨されないのはなぜですか?

目次序文キーの役割差分アルゴリズムにおけるキーの役割ヘッドノードを同期するテールノードを同期する新し...

MySQL クエリ データベース容量方法手順

すべてのデータベースの合計サイズを照会する方法は次のとおりです。 mysql> informa...

シンプルなカルーセル効果を実現するJavaScript

カルーセルとは何ですか?カルーセル: モジュールまたはウィンドウで、コンピューターでマウスをクリック...

CSSは2つの要素をブレンドする効果(スティッキー効果)を実現します。

数年前、Taobaoのモバイル版の左下隅に面白い丸いボタンがあったことを覚えています。それをクリック...

Vue フロントエンドと Django バックエンドを使用して、一定期間内のデータをクエリする方法

序文開発プロセスでは、すべてのデータではなく特定の期間内のデータをクエリするなど、クエリのフィルタリ...