ぺんぎんらぼ

お笑いとマンガ好きなしょぼしょぼWeb系エンジニアの日記です。たまに絵を描きます。

お笑いとマンガ好きなしょぼしょぼWeb系エンジニアの日記です

GitLabでCI/CD - Javaプロジェクトのビルドとテスト

みなさん、GitLabを使ってますか?

GitLabは、クラウド、オンプレ、Dockerと様々な環境で利用できるGitのリポジトリマネージャーです。
オンプレで利用できることから、社内の開発プロジェクトで利用するケースも多いです。Dockerイメージを使って環境を構築できるのも、お手軽でいいです。

そんな多様性の高いGitLabですが、ただのGitリポジトリだけとして、使ってないですか?
実はGitLabはリポジトリ以外の機能も多く、便利なものが多いです。今回はGitLabの便利機能の中から、CI/CDを紹介します。

GitLabのCI/CDは超簡単!

CI/CDというと、真っ先に思いつくのはJenkinsだと思います。
よくあるJenkinsのユースケースといえば、プロジェクトデプロイ時にビルドとJUnitテストを実行したり、定期的にWebアプリケーションをビルドしてWebサーバにデプロイ、なんてことをすることが多いのではないでしょうか。

GitLabにもCI/CDがあり、Jenkinsと連携せずにGitLab単体でも、Jenkinsと同様のことを実現できます。
今回はGitLab単体で、WebアプリケーションのビルドをJUnitのテストを自動化する方法を説明します。

GitLabでCI/CDを実行する場合、GitLabサーバのほかにGitLabRunnerというものを立ち上げる必要があります。
今回は、GitLabでCD/CDを実行する環境の構築方法については解説しません。

CIの設定 (定義)

CIの動作の定義はGitLab上ではなく、CIを動かすプロジェクト上に定義ファイルを配置して、そのファイルに定義します。
プロジェクトの直下に「.gitlab-ci.yml」というファイル名でファイルを作成して、以下のような内容でCIの動作を定義します。

ファイル「.gitlab-ci.yml」はファイル名が「.」(ドット)で始まるので、eclipseでは隠しファイルと認識され、パッケージエクスプローラーに表示されません。
Ctrl + Shift + Rの「リソースを開く」からファイルを開くか、パッケージエクスプローラーのフィルターから「.*リソース」を表示するように設定します。
image: java:8-jdk

stages:
  - build
  - test

before_script:
  - export GRADLE_USER_HOME=`pwd`/.gradle
  - chmod +x ./gradlew

cache:
  paths:
    - .gradle/wrapper
    - .gradle/caches

build:
  stage: build
  script:
    - ./gradlew assemble
  artifacts:
    paths:
      - build/libs/*.war
    expire_in: 1 week
  only:
    - master
    - develop

test:
  stage: test
  script:
    - ./gradlew check
  artifacts:
    reports:
      junit: build/test-results/test/**/TEST-*.xml

ここでは、タスクとしてプロジェクトをビルドする「build」とテストする「test」の2つのタスクを定義しています。
今回は、詳細の説明は省略しますが、それぞれのタスクの「script」に実行するコマンドを、「artifacts」に実行後の成果物の生成方法を定義します。

CIの実行

プロジェクトに作成した「.gitlab-ci.yml」をGitにPUSHすると、自動的にCIが実行されます。
CIの実行状況を確認するには、GitLabのプロジェクトのページから、ロケットアイコンのCI/CD - Pipelinesをクリックします。

f:id:penguinlabo:20211103205617p:plain

パイプライン一覧が表示され、Statusがrunningとなっており、パイプラインが実行されていることがわかります。 このページの「Tests」タブから、JUnitの実行結果を確認することもできます。

f:id:penguinlabo:20211103205644p:plain

パイプライン一覧から、Pipeline IDのリンクをクリックすると、パイプラインの詳細画面が表示されます。 このページから成果物のダウンロードも可能で、例えば、Webアプリケーションのビルドであれば、warファイルをダウンロードすることができます。

f:id:penguinlabo:20211103205721p:plain

まとめ

いかがだったでしょう。GitLab CI/CDを実行できる環境さえ用意してしまえば、CI/CDの定義ファイルを作るだけで、CI/CDを実行できることがわかると思います。
基本的なことは簡単に、頑張れば凝ったこともできるものなので、まずは、今回の紹介のようにビルド&テストを試して、手軽さを実感していただきたいです。