# ステージの実行順序を定義します 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 -PsonarHostUrl=$SONAR_HOST_URL -PsonarLogin=$LOGIN -PsonarPassword=$PASSWORD 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 -PsonarHostUrl=$SONAR_HOST_URL -PsonarLogin=$LOGIN -PsonarPassword=$PASSWORD
以下は、本サンプルにおける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.login', sonarLogin property 'sonar.password', sonarPassword } }
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"