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

推薦する

指定フィールドによるMySQLカスタムリストのソートの実装

問題の説明ご存知のとおり、MySQL でフィールドを昇順に並べ替える SQL は次のとおりです (i...

JS での filter() 配列フィルターの使用

目次1. はじめに2. 方法の紹介3. 使用例要約する1. はじめに配列フィルターは、フロントエンド...

Linux に nodejs 環境とパス構成をインストールするための詳細な手順

Linux に Node.js をインストールする方法は 2 つあります。1 つは簡単で、解凍して使...

JavaScript 型検出方法の例のチュートリアル

序文JavaScriptはWebフロントエンドで広く使われている言語の一つであり、Webアプリケーシ...

Vueはechartを使用してラベルと色をカスタマイズします

この記事では、参考までに、echartを使用してタグと色をカスタマイズするVueの具体的なコードを紹...

Win7 64 ビット版に MySQL 5.7 をダウンロードしてインストールする際によくある問題の概要

1. 公式ウェブサイトからMySQLをダウンロードします。 これが私たちが探しているものです、win...

Mailtoを使えばHTMLでメールを送るのは簡単

最近、顧客のフッターメールボックスにクリックして送信するメール機能を追加しました。Baidu で検索...

VueとVueComponentの関係の詳細な説明

次のケースでは、これまでに学んだプロトタイプチェーンの知識ポイントを確認します。 // コンストラク...

MySQL インデックス使用状況監視スキル (収集する価値あり!)

概要リレーショナル データベースでは、インデックスは、データベース テーブル内の 1 つ以上の列の値...

Vue で @person 関数を実装する方法

この記事ではvueを使用し、マウスクリックイベントといくつかの小さなページの最適化を追加します。 基...

JavaScriptはブラウザがIEかどうかを判定します

フロントエンド開発者としては、IEの落とし穴は避けて通れません。他のブラウザはいいのにIEは壊れてい...

Deepin で virtualenv をインストールして使用するチュートリアル

virtualenv は、分離された Python 仮想環境を作成するためのツールです。独立したディ...

Dockerがコンテナサービスを停止または削除できない問題の解決策

序文今日、開発者から、コンテナ サービスを停止、rm (docker rm -f)、または強制終了で...

MySQL サブクエリとグループ化されたクエリ

目次概要サブクエリサブクエリの分類クエリの結果によるとサブクエリの位置で区別する選択後のサブクエリサ...

VMware 仮想マシンに Centos7.3 をインストールするチュートリアル図

VMware の準備 CentOS の準備、こちらは CentOS 7.3 CentOS-7-x86...