# ステージの実行順序を定義します
stages:
- build
- test
- docker_build
# 全ジョブの前処理を定義します
before_script:
- chmod +x ./gradlew
- export GRADLE_USER_HOME=`pwd`/.gradle
# 実行するジョブを定義します。以下はbuildの定義です。
build:
stage: build
image: java:openjdk-8u111-jdk-alpine
script:
- ./gradlew assemble
artifacts:
name: "${CI_PROJECT_NAME}_${CI_COMMIT_REF_NAME}"
paths:
- build/libs/*.jar
test:
stage: test
image: java:openjdk-8u111-jdk-alpine
script:
- ./gradlew test sonarqube -PsonarBranch=$CI_COMMIT_REF_NAME -PsonarHostUrl=$SONAR_HOST_URL
docker_build:
stage: docker_build
image: docker:18.03
script:
- docker login -u "gitlab-ci-token" -p "$CI_JOB_TOKEN" $CI_REGISTRY
- docker build --build-arg JAR_FILE=$(find ./build/libs/ -name "sample*.jar") -t "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME" ./
- docker push "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME"
stages: - build - test - docker_build
before_script: - chmod +x ./gradlew - export GRADLE_USER_HOME=`pwd`/.gradle
各ジョブ内で使用されている$CI_REGISTRY_IMAGE等の変数は、CIパイプラインで使用可能な変数です。詳細については、「GitLabのドキュメント」を参照してください。
build:
stage: build
image: java:openjdk-8u111-jdk-alpine
script:
- ./gradlew assemble
artifacts:
name: "${CI_PROJECT_NAME}_${CI_COMMIT_REF_NAME}"
paths:
- build/libs/*.jar
test:
stage: test
image: java:openjdk-8u111-jdk-alpine
script:
- ./gradlew test sonarqube -PsonarBranch=$CI_COMMIT_REF_NAME -PsonarHostUrl=$SONAR_HOST_URL
以下は、本サンプルにおけるGradleでのSonarQubeプラグインの設定例です。詳しくは「SonarQubeのドキュメント」を参照してください。
plugins {
id "org.sonarqube" version "2.6.2"
}
sonarqube {
properties {
property 'sonar.host.url', sonarHostUrl
property 'sonar.projectName', project.name
property 'sonar.projectKey', project.name
property 'sonar.branch', sonarBranch
}
}
docker_build:
stage: docker_build
image: docker:18.03
script:
- docker login -u "gitlab-ci-token" -p "$CI_JOB_TOKEN" $CI_REGISTRY
- docker build --build-arg JAR_FILE=$(find ./build/libs/ -name "sample*.jar") -t "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME" ./
- docker push "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME"