最近、Jenkins を使用してプロジェクトのデプロイを自動化しようとしましたが、多くの落とし穴を踏むとは思っていませんでした。Jenkins デプロイメントの基本原則:
Jenkins サーバーを介して gitlab のコードをプルし、パッケージ化し、ターゲット サーバーにプッシュして、起動スクリプトを実行します。
次に、ジェンキンスは 3 つの問題を解決する必要があります。
1. ターゲット サーバーに接続する
2. パッケージ化し、ターゲット サーバーに対応するディレクトリにプッシュします。
3. 起動スクリプトを実行します。
1. まず、最初の問題を解決するために、リモート サーバーに接続します。
1. Jenkins サーバーは、ターゲット サーバーに ping できる必要があります。
2. Jenkins サーバーは、ターゲット サーバーのポート 22 に telnet 接続できる必要があります。
3. Jenkins で公開鍵と秘密鍵のペアである鍵を生成し、次のコマンドを実行します。
ssh-keygen -t rsa
/.ssh/id_rsa.pub
公開鍵をターゲット サーバーの /root/.ssh ディレクトリにあるauthorized_keys ファイルにコピーし、
id_rsa.pub ファイル。これら 2 つのファイルが /root/.ssh に存在しない場合は、手動で作成します。
ここでの落とし穴 1: Authorized_keys の内容は改行を許可していません. 改行がある場合は、手動で改行を削除する必要があります.
ピット 2:authorized_keys のアクセス許可は 600、id_rsa.pub のアクセス許可は 700、このディレクトリのアクセス許可は 700 である必要があります。
755や777など、何気なく複数の権限を与えると接続できません。
コマンドを直接使用できます。
chmod 700 /root/.ssh
cd /root/.ssh
chmod 600 authorized_keys
chmod 700 id_rsa.pub
これは、Jenkins サーバーをターゲット サーバーに接続するための秘密鍵と一致します。
次に、Jenkins の管理構成でターゲット サーバーに接続するための操作を構成する必要があります。
Jenkins と入力し、[Manager Jenkins] をクリックします。
「システムの構成」をクリックします
「SSH Servers」に新しいサーバーを追加し、以下のように設定します
これは、jenkins サーバーの秘密鍵です。
構成後、[構成のテスト] をクリックします。
成功した場合は、jenkins サーバーが既にターゲット サーバーに接続できることを意味します。
2. Jenkins を使用してコードをパッケージ化し、リモート サーバーにプッシュします。
1. 新しいアイテムを作成する
次に、構成アイテムにプロジェクトのパッケージ プッシュ情報を構成します。
General は、ビルド タスクの基本的な構成です。名前、説明など
プロジェクト名: 先ほどビルドタスクを作成する段階で設定しましたが、もちろんここで変更することもできます。
Description : ビルド タスクの説明。
ソース管理は、構成コードが存在する場所です。
Resリポジトリ URL : プロジェクトの Git アドレスを入力します。
資格情報: ユーザーに相当する資格情報は、HTTP ユーザー名とパスワード、または RSA ファイルを使用できます。root を直接選択することをお勧めします。
構築するブランチ: 構築するブランチ。*/master は master ブランチを示し、他のブランチにも設定できます。
ソース コード ブラウザー: github、gitlab など、使用するコード ウェアハウス管理ツール。「自動」を選択できます。
上記は、パッケージ化されてターゲット サーバーにプッシュされる構成の説明です。
3. 起動スクリプト構成を実行します
これは、ターゲット サーバーで何を実行するかを記述した起動スクリプトです。