Promptcloud が Gerrit と Jenkins の統合セットアップを調査
公開: 2017-01-20Gerrit と Jenkins を使用した統合のセットアップ
反復的で複雑なタスクにより、開発者の生活は少し単調になることがあります。 ありがたいことに、一度設定すれば文句を言うことなく日常的なタスクを定期的に処理できるツールがあります。 テストと展開に自動化を追加すると、ソリューションは「継続的インテグレーション」と呼ぶことができます。 このようなセットアップでは、プロジェクトを自動的にテストして展開できるため、コードをサーバーにプッシュするよりも、コードの記述に集中する時間が増えます。 Gerrit と Jenkins を使用して継続的インテグレーションのセットアップを進める方法は次のとおりです。 
ゲリットとは?
Gerrit は、git クライアントからの変更のプッシュ、変更のレビュー、およびマスター コードとの自動マージを可能にする Web ベースのインターフェイスを備えた git ベースのオープン ソース コード レビュー システムです。 変更が行われるたびに、同じパッチ セットが作成されます。 Gerrit では、さまざまなパッチ セットを比較できます。 また、特定の行またはパッチ全体について、フィードバックまたはレビューを追加するオプションもあります。 レビュー担当者は、以下のいずれかで変更を評価できます: +2 – 良さそう、承認済み。 +1 – 私には良さそうに見えますが、他の誰かが承認する必要があります. 0 – スコアなし。 -1 – これは提出しないでいただきたいです。 -2 – 送信をブロックします。 +2 レビューは、デフォルトでコードをマスターに送信できることを意味します。 これは、必要に応じて構成できます。
Jenkins とその用途とは?
Jenkins は、継続的インテグレーションに使用される一般的なビルド サーバーです。 これは Web ベースであり、変更が発生したときにビルド プロセスを自動化できます。 Jenkins は、Git や Gerrit がなくても独立して動作できます。 イベントトリガーを許可するフックがあるため、変更が発生すると、ビルドが自動的に作成されます。 Jenkins と Gerrit を一緒に使用すると、テストに合格したかどうかを示す成功/失敗マークがビルドに付けられます。 Jenkins は、ビルドの実行後にテスト回帰を実行します。 完了すると、レビュアーの 1 人と同じようにテスト結果が公開されます。 ビルドが失敗した場合、パッチは拒否されます。 テストが失敗した場合の CI の品質に応じて、-1 または -2 を設定できます。 これに加えて、他のコード レビュアーもこの時点でコードをレビューできます。 すべての審査に合格したら、コードを公開リポジトリにプッシュできます。
継続的インテグレーションのワークフロー
- 開発者が Git からソースをチェックアウト
- 開発者が必要な変更を行う
- 開発者は変更を Gerrit にプッシュします
- Gerrit は、統合テストのために変更通知を Jenkins に送信します
- Jenkins は変更を Gerrit git サーバーから直接取得し、プロジェクト構成に従ってすべてのテスト ケースを実行します。
- 他の開発者が変更を確認して承認します (+2)
- Jenkins がビルドに合格し、変更が他の開発者によって承認されると、Gerrit は変更をマスター プロジェクトの git リポジトリにマージします。
1.Gerritのインストール
- 要件: JRE、最小バージョン 1.8。
- tGerrit war パッケージをダウンロードするためのリンク
MySQL がある場合は、それを Gerrit データベースに使用できます。 MySQL で Gerrit 用のユーザーとデータベースを作成します。
mysql> CREATE USER 'gerrit2'@'localhost' IDENTIFIED BY 'secret';
mysql> データベースの作成 reviewdb;
mysql> reviewdb.* TO 'gerrit2'@'localhost' にすべて許可します。
mysql> FLUSH PRIVILEGES;
以下のコマンドを実行して、サイトを初期化します。
# java -jar gerrit.war init –batch -d ~/この初期化中に、デフォルトで gerrit サービスが開始されます。 mysql データベース、ログイン認証、電子メール サーバーの送信、httpd URL などの変更を行う場合は、 ~//etc/gerrit.configファイルを編集して、~//etc/ secureファイルに LDAP とデータベース パスワードの詳細を追加します。 .configファイル。 設定を変更した場合は、変更を有効にする前に gerrit サービスを再起動する必要があります。
# ~//bin/gerrit.sh 再起動~//bin/gerrit.shスクリプトをinit.dディレクトリに gerrit としてコピーし、マシンの起動中に開始するように追加します。
2.初回ログイン
Gerrit URL をブラウザーにロードします。 このコマンドを使用しても、Gerrit Web URL を見つけることができます。
# git config -f ~//etc/gerrit.config gerrit.canonicalWebUrl
ここで、Gerrit 構成ファイルで構成した方法を使用してログイン認証を使用し、Gerrit Web インターフェイスにログインします。 デフォルトでは OpenID です。 LDAP は、最もよく使用される認証方法の 1 つです。
Gerrit Web ページに正常にログインしたら、開発を行うクライアント マシンにログインする必要があります。ssh セッション用の RSA キーを生成する必要があります。 ファイルが既にある場合は、キー生成手順をスキップできます。
# ls -l ~/.ssh
Authorized_keys config id_rsa id_rsa.pub 既知のホスト
3. SSH 鍵の生成
# ssh-keygen -t rsa

公開/秘密 RSA キー ペアを生成しています。
キーを保存するファイルを入力してください (/home/user/.ssh/id_rsa):
パスフレーズを入力してください (パスフレーズがない場合は空欄):
同じパスフレーズをもう一度入力してください:
ID は /home/user/.ssh/id_rsa に保存されました。
公開鍵は /home/user/.ssh/id_rsa.pub に保存されています。
キーフィンガープリントは次のとおりです。
SHA256:dMMVqsoLDf8T/d5Niob69oea3rkSLTBltiZ8s1lbdeA ユーザー@localhost
キーの randomart イメージは次のとおりです。
+—[RSA 2048]—-+
| | を… |
| | .+o. o|
| | ..+=。 E..|
| | .=o=.. . | |
| | . SB * o |
| | = .. * o |
| | . = . = . .|
| | . o. +o++.+ |
| | . o*=*ブー。|
+—-[SHA256]—–+
# 猫 ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCwoWTT6S1pv2LP0l6r8305njSLtoupDCw8Df
GnaqW+ppfzNMtRJmAvCQpYuvE154EsGZC5csnRkUYAScOD3nri8NBsXMdD+m1mMyD
lA4ssMLhWHfstJGQ5aJ84NIR+zFK9o9QmDCVYU/
MYt2SZnmzi+Pdd4QbDWKisewmtun5rpy8vXWukKt9CHGTbv5lKyRVPF
LuQCynKbniZLV7aQD6gsVcZFG7Hj3ezBhDAZdBrCWLldy0S61DAmdH5C94xmlSuraq
HiX0pkLi4J67msvOUW6dBfeCP1VsMNz0j/
91LPLOMf5I2r1fRw1s/J1z/
UcsgBDyATwSKocNklkrd8+pp user@localhost
- 上記の公開鍵をコピーして、gerrit Web URL に移動します。
- Web ページの右隅にあるユーザー名を確認し、ユーザーをクリックして設定リンクを見つけます。
- 左側に「SSH 公開鍵」が表示されるので、それをクリックします。
- [キーの追加] ボタンをクリックし、ssh 公開キーを貼り付けて追加します。
サインインしてアカウントを登録する最初のユーザーは、完全な特権を持つ管理者に自動的に配置されます。 これで、プロジェクトを作成する権限が付与されました。 「プロジェクト」タブをクリックし、「新規プロジェクトの作成」をクリックします。 プロジェクト名を入力して開始します。
システムでプロジェクトを複製し、開発コードの追加を開始します。 # ssh [email protected] -p 29418
| **** Gerrit Code Review へようこそ **** selvam さん、SSH 経由で正常に接続されました。 残念ながら、インタラクティブ シェルは無効になっています。 ホストされたGitリポジトリのクローンを作成するには、次を使用します。 |
# git clone ssh: //[email protected] :29418/Gerrit_Test
4. Jenkins のインストール
apt-get または deb パッケージを使用してジェンキンをインストールできます。
- sudo apt-get アップデート
- sudo apt-get install ジェンキンス
Jenkins 構成は /etc/default/jenkins にあり、ここで Java の場所と JAVA_ARGS を変更できます。 デフォルトでは、jenkins は 8080 で実行されます。同じマシンで gerrit と jenkins を実行している場合、デフォルト ポート 8080 はすでに gerrit によって占有されています。 ここでジェンキンスのポートを変更する必要があります。 これを変更するには、HTTP_PORT 値を編集して別のポートで実行します。
5. Jenkins プロセスを開始する
# /etc/init.d/jenkins startブラウザに移動し、jenkins ホスト名とポート番号を使用して jenkins ページをロードします。
https://:/
Jenkins 2.* をインストールしている場合、jenkins Web ページで initialAdminPassword が要求されます。 パスワードは /var/log/jenkins/jenkins.log ファイルで確認できます。 ログは次のようになります。
| Jenkins の初期設定が必要です。 管理者ユーザーが作成され、パスワードが生成されました。 インストールに進むには、次のパスワードを使用してください: f16b093akcnml397jcdoa239d6bafb9 |
- Jenkins -> Manage Jenkins -> Plugin Manager に移動して、 gitおよびgerrit プラグインを jenkins にインストールします。
- 「利用可能」タブをクリックして「 Git Plugin 」を検索し、「再起動せずにインストール」をクリックします。 もう一度「 Gerrit Trigger」を検索し、「再起動せずにインストール」をクリックします。 最後に、インストール済みリストにあるかどうかを確認します。
Jenkins プロセスは jenkins ユーザーによって実行されます。 そのため、gerrit で jenkins ユーザーのアクセスを有効にする必要があります。
- 認証方法を使用して、gerrit で jenkins ユーザーを作成します
- 前に行ったように、jenkins ユーザーの ssh-keygen を作成します。 ただし、今回は空のパスフレーズでキーを作成し、ジェンキンス ユーザーの公開キーを gerrit にコピーします。
- [新しいアイテム] をクリックして新しいジョブを作成し、ソース コード管理/Git セクションに git URL を追加します。 また、Build Triggers で「Gerrit イベント」を選択し、Gerrit プロジェクト パターンを入力します。

最後に、構成を保存します。 これで、Gerrit と Jenkins のセットアップは完了です。
