From b1bef5b6a5230e8c9851f8713184450dd3895a1e Mon Sep 17 00:00:00 2001 From: Louis Vallat Date: Thu, 26 Nov 2020 22:54:34 +0100 Subject: [PATCH] First part of gitlab-ci setup Signed-off-by: Louis Vallat --- .gitlab-ci.yml | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 .gitlab-ci.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..6732cca --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,77 @@ +image: docker:latest +services: + - docker:dind + +stages: + - build + - test + - package + - release + +# Disable the Gradle daemon for Continuous Integration servers as correctness +# is usually a priority over speed in CI environments. Using a fresh +# runtime for each build is more reliable since the runtime is completely +# isolated from any previous builds. +variables: + GRADLE_OPTS: "-Dorg.gradle.daemon=false" + # Use TLS https://docs.gitlab.com/ee/ci/docker/using_docker_build.html#tls-enabled + DOCKER_HOST: tcp://docker:2376 + DOCKER_TLS_CERTDIR: "/certs" + CONTAINER_BRANCH_IMAGE: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG + CONTAINER_RELEASE_IMAGE: $CI_REGISTRY_IMAGE:latest + +before_script: + - export GRADLE_USER_HOME=`pwd`/.gradle + +build: + image: gradle:jdk15 + stage: build + script: gradle --build-cache compileJava + cache: + key: "$CI_COMMIT_REF_NAME" + policy: push + paths: + - build + - .gradle + + +test: + image: gradle:jdk15 + stage: test + script: gradle --build-cache check + cache: + key: "$CI_COMMIT_REF_NAME" + policy: pull + paths: + - build + - .gradle + +package: + image: gradle:jdk15 + stage: package + script: gradle --build-cache assemble + cache: + key: "$CI_COMMIT_REF_NAME" + policy: push + paths: + - build + - .gradle + artifacts: + paths: + - app/build/libs/moviesquotebot.jar + +release: + stage: release + script: + - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY + - docker build . -t $CONTAINER_BRANCH_IMAGE + - docker push $CONTAINER_BRANCH_IMAGE + +release-master: + stage: release + script: + - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY + - docker build . -t $CONTAINER_RELEASE_IMAGE + - docker push $CONTAINER_RELEASE_IMAGE + only: + - master