LoginSignup
2
7

More than 5 years have passed since last update.

jenkinsでいろいろまとめ

Posted at

Jenkinsを用いて継続的インテグレーション

CI界隈では言わずと知れたJenkins。弊社でも新製品のCore部分がJavaなこともあり、テストフェーズで導入を行った。自動化するにあたり、プラグインの設定を行ったので、そのまとめ。
プラグインの導入では結構はまったので、ナレッジとして残す。

今回の構築環境

  • jenkinsバージョンは2.46.3
  • WindowsServer2016
  • JavaのビルドはMavenを使用
  • ソース管理はGitLab
  • jenkinsでのプロジェクトはPipeLineを用いる

PipeLineを用いたのは、Gitでのソース管理として、直下にpom.xmlがなく、ディレクトリの変更が必要だったためである。
それがなければもっと楽だったのにくそったれ

Jenkinsの導入

Jenkinsは公式サイトからwarファイル落としてきて、TomCatのwebrootに放り込むのが最も簡単。
warファイルの直リンク

プラグイン

今回はテストチームの目標として、バグ0とカバレッジ50%以上(現在は20%程度)という目標があるため、カバレッジ測定とソースの品質のためにJaCoCoとCheckStyleとfindbugのプラグインを導入した。

JoCoCo

コードのカバレッジ測定ツール
プロジェクトのpom.xmlに以下のソースを追加する。

pom.xml
<plugins>
  <plugin>
    <groupId>org.jacoco</groupId>
    <artifactId>jacoco-maven-plugin</artifactId>
    <version>0.7.9</version>
  </plugin>
</plugins>

checkstyle

コーディングスタイルのチェックとして入れたが、厳しすぎるのでほとんど活用はされていない。解消しなきゃいけないよねー、ぐらい。
プロジェクトのpom.xmlに以下のソースを追加する。

pom.xml
<plugins>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-checkstyle-plugin</artifactId>
    <version>2.17</version>
    <executions>
      <execution>
        <phase>test</phase>
        <goals>
          <goal>checkstyle</goal>
        </goals>
      </execution>
    </executions>
    <configuration>
      <configLocation>sun_checks.xml</configLocation>
      <violationSeverity>warning</violationSeverity>
      <outputFile>target/site/checkstyle/checkstyle-result.xml</outputFile>
    </configuration>
  </plugin>
</plugins>

findbugs

バグになりそうな個所を警告として挙げてくれるツール。
警告が上がってもビルドが正常終了するように、
<failOnError>false</failOnError>としている。
プロジェクトのpom.xmlに以下のソースを追加する。

pom.xml
<plugins>
  <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>findbugs-maven-plugin</artifactId>
    <version>3.0.0</version>
    <executions>
      <execution>
        <phase>test</phase>
        <goals>
          <goal>check</goal>
        </goals>
      </execution>
    </executions>
    <configuration>
      <failOnError>false</failOnError>
      <xmlOutput>true</xmlOutput>
      <outputEncoding>UTF-8</outputEncoding>
      <xmlOutputDirectory>target/site/findbugs</xmlOutputDirectory>
      <findbugsXmlOutputDirectory>target/site/findbugs</findbugsXmlOutputDirectory>
    </configuration>
  </plugin>
</plugins>

stepcounter

こちらはJenkinsのプラグインから追加するだけで使用が可能。

Jenkinsでのパイプライン制御

プラグインの導入

処理中の統計処理の結果をJenkinsで表示するためにJenkinsの設定からそれぞれのプラグインを導入する。

PipeLine

上にも書いた通りPipeLineでのプロジェクト作成になったので、結果設定は以下の様になった。

node {
    stage 'checkout'
    // PipelineSyntaxからチェックアウト処理を作成して記載

    stage 'build_app'
    // PipelineSyntaxからMavenビルド処理を作成して記載

    stage 'JaCoCo'
    jacoco classPattern: '**/target/classes', execPattern: '**/target/**.exec'

    stage 'CheckStyle'
    checkstyle canComputeNew: false, defaultEncoding: '', healthy: '', pattern: 'target/site/checkstyle/checkstyle-result.xml', unHealthy: ''

    stage 'findbugs'
    findbugs canComputeNew: false, canRunOnFailed: true, defaultEncoding: '', excludePattern: '', healthy: '', includePattern: '', pattern: 'target/site/findbugs/findbugsXml.xml', unHealthy: ''

    stage 'stepCount'
    stepcounter settings: [[encoding: 'UTF-8', filePattern: 'src/main/java/**/*.java', filePatternExclude: '', key: 'java']]
}

Jenkisでの確認

ビルドが正常に終了すれば、左側のメニューにそれぞれの集計結果が表示されます。
キャプチャ.PNG

まとめ

Jenkis便利!まだあまり活用できてないけど

Jenkinsのプラグインで設定すれば自動的に集計されると思ってた。そうじゃなかった。
MavenのPlugin入れると、ビルド中に集計される。それをJenkinsで表示させるのがJenkinsのPluginだった。

2
7
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
2
7