ScalaアプリケーションのテストとHerokuへのデプロイ

この例では、GitLab CI/CDとSBTを使ったScalaアプリケーションのインテグレーションをデモしています。サンプルプロジェクトを表示またはフォークして、過去のCIジョブのログを見ることができます。

.gitlab-ci.yml ファイルをプロジェクトに追加します。

CIを起動するために、リポジトリのルートに以下の.gitlab-ci.yml

image: openjdk:8

stages:
  - test
  - deploy

before_script:
  - apt-get update -y
  - apt-get install apt-transport-https -y
  ## Install SBT
  - echo "deb http://dl.bintray.com/sbt/debian /" | tee -a /etc/apt/sources.list.d/sbt.list
  - apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 642AC823
  - apt-get update -y
  - apt-get install sbt -y
  - sbt sbtVersion

test:
  stage: test
  script:
    - sbt clean coverage test coverageReport

deploy:
  stage: deploy
  script:
    - apt-get update -yq
    - apt-get install rubygems ruby-dev -y
    - gem install dpl
    - dpl --provider=heroku --app=gitlab-play-sample-app --api-key=$HEROKU_API_KEY

上記の構成では

  • before_scriptSBTをインストールし、使用中のバージョンを表示します。
  • test ステージでは、SBT を実行してプロジェクトをコンパイルし、テストします。
    • sbt-scoverageは、テストカバレッジを測定するために SBT プラグインとして使用されます。
  • deploy ステージでは、dplを使用してプロジェクトを自動的にHerokuにデプロイします。

他のバージョンのScalaやSBTを使用するには、build.sbtで定義します。

ジョブ内のテストカバレッジの表示

設定 ➔パイプライン➔ カバレッジレポートプロジェクト設定にCoverage was \[\d+.\d+\%\] 正規表現を追加して、ビルドトレースからテ ストカバレッジ率を取得し、ジョブとともに表示します。

このオプションを表示するには、パイプラインが有効になっている必要があります。

Herokuアプリケーション

Herokuアプリケーションが必要です。ダッシュボードから作成できます。.gitlab-ci.yml ファイルのgitlab-play-sample-appをアプリケーション名に置き換えてください。

Heroku APIキー

HerokuのAPIキーは、アカウントで調べることができます。プロジェクト➔キー付き変数 HEROKU_API_KEYで、この値で保護された変数を追加します。