-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy path.gitlab-ci.yml
77 lines (72 loc) · 2.26 KB
/
.gitlab-ci.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
stages:
- maven-compile
- maven-verify
- maven-sonar
- docker-prepare
- docker-build
- docker-deploy
include:
- project: 'BestSolution.at/gitlab-pipelines'
ref: 1.11.0
file:
- '/templates/maven-base.yml'
- '/jobs/maven/compile.yml'
- '/jobs/maven/verify.yml'
- '/jobs/maven/sonar.yml'
- '/jobs/docker/build.yml'
maven-verify:
artifacts:
reports:
junit:
- ./**/target/surefire-reports/TEST-*Test.xml
collect-metadata:
extends: .maven
stage: docker-prepare
script:
- echo "QUAK_BUILD_TIME=$(date --date="${CI_PIPELINE_CREATED_AT}" --utc +%Y-%m-%dT%H:%M:%SZ)" >> buildinfo.env
- cd $CI_PARENT_POM_LOCATION
- mvn $CI_MAVEN_OPTS $ADDITIONAL_MAVEN_OPTS org.apache.maven.plugins:maven-help-plugin:3.2.0:evaluate -Dexpression="project.version" -Doutput=maven-project-version.txt
- echo "QUAK_VERSION=$(cat maven-project-version.txt)" >> ${CI_PROJECT_DIR}/buildinfo.env
rules:
- !reference [docker-build, rules]
needs: []
cache:
paths:
- ".m2/repository/"
key: $CI_COMMIT_REF_SLUG
policy: pull
artifacts:
expire_in: 6 hours
reports:
dotenv: buildinfo.env
docker-build:
variables:
IMAGE_NAME: "quak"
DOCKER_BUILD_ARGUMENTS: >-
--label org.opencontainers.image.created=${QUAK_BUILD_TIME}
--label org.opencontainers.image.revision=${CI_COMMIT_SHA}
--label org.opencontainers.image.version=${QUAK_VERSION}
docker-hub-deploy:
stage: docker-deploy
extends:
- .docker-build
- .docker-dind-service
variables:
IMAGE_NAME: "quak"
DOCKERHUB_IMAGE_BASE: "bestsolutionat/quak"
before_script:
- !reference [.docker-build, before_script]
- |
echo "Logging in to Docker Hub with credentials..."
echo "$DOCKER_HUB_TOKEN" | docker login -u "$DOCKER_HUB_USER" --password-stdin
script:
- docker pull ${IMAGE_TAGGED}
- docker tag ${IMAGE_TAGGED} ${DOCKERHUB_IMAGE_BASE}:${QUAK_VERSION}
- docker push ${DOCKERHUB_IMAGE_BASE}:${QUAK_VERSION}
- docker tag ${IMAGE_TAGGED} ${DOCKERHUB_IMAGE_BASE}:latest
- docker push ${DOCKERHUB_IMAGE_BASE}:latest
rules:
- if: '$CI_COMMIT_TAG =~ /^R.*/ && $CI_DEPLOY_FREEZE != null'
when: manual
- if: '$CI_COMMIT_TAG =~ /^R.*/'
when: on_success