31
48

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

CI環境構築手順 (Jenkins + SonarQube + Nexus)

Last updated at Posted at 2017-11-17

概要

Jenkins、SonarQube、Nexusを使用してCI環境を構築する手順を記載する。

どのようなCI環境を構築するか

  • GitリポジトリにソースコードがPushされると、自動的にJenkinsがJunitテストとCheckstyle、FindBugs、SonarQubeによる静的解析を行う。
  • Junitテストと静的解析の結果をJenkinsの画面で確認できる。
  • GitリポジトリにライブラリモジュールがPushされると、自動的にNexusのプライベートMavenリポジトリにartifactとして登録される。

前提

  • Linux(CentOS7)端末にCI環境を構築する。
  • ビルドツールにMavenを使用する。
  • バージョン管理システムにGitを使用する。
  • Jenkins、SonarQube、NexusをDockerコンテナとして動作させる。

事前に用意しておくもの

  • Gitリポジトリ
  • Oracleアカウント(JDKのインストールに必要)

注意事項

CI環境を構築する端末に充分な容量のストレージとメモリを搭載すること。
※VMwareやVirtualBoxのデフォルト設定では不足する。

CI環境構築手順

Dockerのインストール

$ yum install -y yum-utils device-mapper-persistent-data lvm2
$ yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
$ yum makecache fast
$ yum install docker-ce
$ systemctl start docker
$ systemctl enable docker
【参考情報】Dockerの公式ドキュメント

Jenkinsコンテナの起動

$ docker run -p 8080:8080 -p 50000:50000 jenkins
【参考情報】Jenkinsの公式Dockerリポジトリ

Jenkinsの初期設定

  1. ブラウザで http://XXX.XXX.XXX.XXX:8080/ にアクセスする。
  2. 「Administrator password」に管理者用パスワードを入力し、「Continue」を押下する。
  • Jenkinsコンテナ起動時、コンソールに表示される「Please use the following password to proceed to installation:」の直後に管理者用パスワードが表示されている。
  1. 「Install suggested plugins」を押下する。
  2. 各項目に任意の値を入力し、「Save and Finish」を押下する。
  3. 「Start using Jenkins」を押下する。
  4. Jenkinsのトップ画面が表示される。

image.png

Jenkinsプラグインのインストール

  1. サイドメニューの「Jenkinsの管理」を押下する。
  2. 「プラグインの管理」を押下する。
  3. 「利用可能」を押下する。
  4. 以下のプラグインにチェックし、「ダウンロードして再起動後にインストール」を押下する。
  • Checkstyle Plug-in
  • FindBugs Plug-in
  • SonarQube Scanner for Jenkins
  1. 「インストール完了後、ジョブがなければJenkinsを再起動する」にチェックする。

SonarQubeコンテナの起動

$ docker run -d --name sonarqube -p 9000:9000 -p 9092:9092 sonarqube
【参考情報】SonarQubeの公式Dockerリポジトリ

Nexusコンテナの起動

$ docker run -d -p 8081:8081 --name nexus sonatype/nexus:oss
【参考情報】Nexusの公式Dockerリポジトリ

JDKのインストール

  1. サイドメニューの「Jenkinsの管理」を押下する。
  2. 「Global Tool Configuration」を押下する。
  3. 「JDK追加」を押下する。
  4. 「名前」に「JDK」と入力する。
  5. 「バージョン」にCI対象のアプリケーションが使用しているJDKと同じバージョンを選択する。
  6. 「Java SE Development Kitの使用許諾に同意する」にチェックする。
  7. 「ユーザー名とパスワードを入力してください。」を押下する。
  8. 「ユーザー名」と「パスワード」にOracleアカウントのユーザー名とパスワードを入力し、「OK」を押下する。
  9. 「閉じる」を押下する。
  10. 「Save」を押下する。

Mavenのインストール

  1. サイドメニューの「Jenkinsの管理」を押下する。
  2. 「Global Tool Configuration」を押下する。
  3. 「Maven追加」を押下する。
  4. 「名前」に「Maven」と入力する。
  5. 「Save」を押下する。

SonarQubeの設定

  1. サイドメニューの「Jenkinsの管理」を押下する。
  2. 「システムの設定」を押下する。
  3. 「Add SonarQube」を押下する。
  4. 「SonarQube installations」の「Name」に「SonarQube」と入力する。
  5. 「SonarQube installations」の「Server」に「 http://XXX.XXX.XXX.XXX:9000 」と入力する。
  6. 「保存」を押下する。

Jenkinsジョブの作成

  1. サイドメニューの「新規ジョブ作成」を押下する。
  2. 「Enter an item name」に任意のジョブ名を入力する。
  3. 「フリースタイル・プロジェクトのビルド」を選択し、「OK」を押下する。
  4. 「ソースコード管理」に「Git」を選択し、「リポジトリURL」にGitリポジトリのURLを入力する。
  5. 「認証情報」の「追加」→「Jenkins」を押下する。
  6. 「ユーザー名」と「パスワード」にGitリポジトリのユーザー名とパスワードを入力し、「追加」を押下する。
  7. 「認証情報」に手順6で入力したユーザー名を選択する。
  8. 「ブランチ指定子」にビルド対象のブランチ名を入力する。(例)*/develop
  9. 「ビルド・トリガ」の「SCMをポーリング」にチェックし、「スケジュール」に「H/15 * * * *」と入力する。
  • 「H/15 * * * *」と入力した場合、GitリポジトリにソースコードをPushした15分後にJenkinsジョブが起動する。
  1. 「ビルド手順の追加」→「Mavenの呼び出し」を押下し、「使用するMaven」に「Maven」を選択する。
  2. 「ゴール」にsiteと入力する
  • Nexusにビルド対象モジュールを登録させたい場合はsite deployと入力する。
  1. 「ビルド後の処理の追加」→「Checkstyle警告の集計」を押下し、「集計するファイル」に「**/target/checkstyle-result.xml」と入力する。
  2. 「ビルド後の処理の追加」→「FindBugs警告の集計」を押下し、「集計するファイル」に「**/target/findbugs.xml」と入力する。
  3. 「ビルド後の処理の追加」→「JUnitテスト結果の集計」を押下し、「テスト結果XML」に「**/target/surefire-reports/*.xml」と入力する。
  4. 「ビルド後の処理の追加」→「SonarQube analysis with Maven」を押下する。
  5. 「SonarQube analysis with Maven」の「高度な設定」を押下する。
  6. 「SonarQube analysis with Maven」の「JDK」に「JDK」を選択する。
  7. 「SonarQube analysis with Maven」の「Maven Version」に「Maven」を選択する。
  8. 「保存」を押下する。
    image.png
    image.png
    image.png
    image.png
    image.png

pom.xmlの編集

<project>要素内に以下の記述を追加する。

pom.xml
<reporting>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-checkstyle-plugin</artifactId>
      <version>2.17</version>
      <reportSets>
        <reportSet>
          <reports><report>checkstyle</report></reports>
        </reportSet>
      </reportSets>
    </plugin>
    <plugin>
      <groupId>org.codehaus.mojo</groupId>
      <artifactId>findbugs-maven-plugin</artifactId>
      <version>3.0.5</version>
      <configuration>
        <xmlOutput>true</xmlOutput>
      </configuration>
    </plugin>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-surefire-report-plugin</artifactId>
      <version>2.20.1</version>
    </plugin>
  </plugins>
</reporting>

【参考情報】maven-checkstyle-pluginの公式ドキュメント
【参考情報】findbugs-maven-pluginの公式ドキュメント
【参考情報】maven-surefire-report-pluginの公式ドキュメント

Nexusにモジュールを登録させたい場合は<project>要素内に以下の記述も追加する。

pom.xml
<distributionManagement>
  <repository>
    <id>releases</id>
    <url>http://admin:admin123@XXX.XXX.XXX.XXX:8081/nexus/content/repositories/releases/</url>
  </repository>
  <snapshotRepository>
    <id>snapshots</id>
    <url>http://admin:admin123@XXX.XXX.XXX.XXX:8081/nexus/content/repositories/snapshots/</url>
  </snapshotRepository>
</distributionManagement>

動作確認

JenkinsとSonarQubeの動作確認

  1. GitリポジトリにCI対象ブランチのソースコードをPushする。
  2. 15分後、Jenkinsトップ画面の「最新の成功ビルド」に「X 時間 Y 分 前 - #Z」と表示されることを確認する。
  3. 画面右のジョブ実行ボタンを押下する。
  4. 「ビルド実行状態」を見て、ジョブが終了したことを確認した後、ジョブ名のリンクを押下する。
  5. 画面に「Checkstyle警告の推移」、「FindBugs警告の推移」、「テスト結果の推移」が表示されることを確認する。
    image.png
  6. 「SonarQube」を押下する。
  7. SonarQubeの画面にソースコードレビュー結果が表示されることを確認する。
    image.png

Nexusの動作確認

Nexusにモジュールを登録するように設定した場合は以下の動作確認を行う。

  1. ブラウザで http://XXX.XXX.XXX.XXX:8081/nexus/ にアクセスする。
  2. 画面左の「Repositories」を押下する。
  3. モジュールのバージョンに応じて、「Releases」、または「Snapshots」のどちらかを押下する。
  4. 「Browse Storage」に登録したartifactが表示されることを確認する。
    image.png
31
48
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
31
48

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?