みなさん、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でCD/CDを実行する環境の構築方法については解説しません。
CIの設定 (定義)
CIの動作の定義はGitLab上ではなく、CIを動かすプロジェクト上に定義ファイルを配置して、そのファイルに定義します。
プロジェクトの直下に「.gitlab-ci.yml」というファイル名でファイルを作成して、以下のような内容でCIの動作を定義します。
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をクリックします。
パイプライン一覧が表示され、Statusがrunningとなっており、パイプラインが実行されていることがわかります。 このページの「Tests」タブから、JUnitの実行結果を確認することもできます。
パイプライン一覧から、Pipeline IDのリンクをクリックすると、パイプラインの詳細画面が表示されます。 このページから成果物のダウンロードも可能で、例えば、Webアプリケーションのビルドであれば、warファイルをダウンロードすることができます。
まとめ
いかがだったでしょう。GitLab CI/CDを実行できる環境さえ用意してしまえば、CI/CDの定義ファイルを作るだけで、CI/CDを実行できることがわかると思います。
基本的なことは簡単に、頑張れば凝ったこともできるものなので、まずは、今回の紹介のようにビルド&テストを試して、手軽さを実感していただきたいです。