1+ #
2+ # Function Library (c)2019 - Version 0.0.1
3+ #
4+ # This template is free: you can redistribute it and/or modify
5+ # it under the terms of the GNU General Public License as published by
6+ # the Free Software Foundation, either version 3 of the License, or
7+ # (at your option) any later version.
8+ #
9+ # This template is distributed in the hope that it will be useful,
10+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
11+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12+ # GNU General Public License for more details.
13+ #
14+ # Autor: Garcia Vazquez, Manuel Andres - DevOps
15+ 16+ # Web: www.scabb-island.com.ar
17+ # Repo: https://github.com/mgvazquez/ibgateway
18+ # Issues: https://github.com/mgvazquez/ibgateway/issues
19+ #
20+ # Nota: <NOTA>
21+ #
22+
23+ # ######## Variables ###########
24+
25+ # Variable Usage & Precedence:
26+ #
27+ # - CI_REGISTRY_PASSWORD: Token de la registry a donde se subira la imagen
28+ # - CI_REGISTRY_USER: Usuario de la registry a donde se subira la imagen
29+ # - IMAGE_NAME: Nombre de la imagen, en caso de no setearse, se utilizara el namespace del proyecto
30+ # - GOOGLE_APPLICATION_CREDENTIALS: Decalre esta variable en la UI de Gitlab en formato File para habilitar el push a GCR
31+
32+ variables :
33+ # CI_DEBUG_TRACE: "true"
34+ CI_BUILD_IMAGE : " mgvazquez/docker-build-image:19.03.12"
35+ IMAGE_NAME : " ${CI_PROJECT_PATH}"
36+ DOCKER_REGISTRY_SNAPSHOTS : " registry.gitlab.com"
37+ DOCKER_REGISTRY_RELEASES : " registry.gitlab.com"
38+ DOCKER_REGISTRY_GCLOUD : gcr.io
39+
40+ # ##############################
41+
42+ # ######### Templates ##########
43+ .bannerBuilding : &bannerBuilding |
44+ echo "Building ${BUILD_TYPE} [${CI_COMMIT_REF_NAME}]"
45+
46+ .checkRegistry : &checkRegistry |
47+ if [[ ("x${CI_REGISTRY_USER}" != "x") && ("x${CI_REGISTRY_PASSWORD}" != "x") && ("x${GOOGLE_APPLICATION_CREDENTIALS}" == "x") ]]; then
48+ echo "${CI_REGISTRY_PASSWORD}" | docker login -u "${CI_REGISTRY_USER}" --password-stdin "${DOCKER_REGISTRY}";
49+ fi
50+
51+ .runVersionCheck : &runTagCheck |
52+ export DOCKER_IMAGE_NAME="${DOCKER_REGISTRY}/${IMAGE_NAME}"
53+ export DOCKER_IMAGE_TAG="${CI_COMMIT_TAG:-${CI_COMMIT_REF_NAME}}";
54+
55+ .runMakePackage : &runMakePackage |
56+ export DOCKER_HOST="${DOCKER_PORT}"
57+ docker build \
58+ --build-arg BUILD_DATE="$(date --utc '+%Y-%m-%d %H:%M:%S UTC')" \
59+ --build-arg BUILD_VCS_REF="${CI_COMMIT_SHA}" \
60+ --build-arg BUILD_VERSION="${DOCKER_IMAGE_TAG}" \
61+ --build-arg BUILD_PROJECT_URL="${CI_PROJECT_URL}" \
62+ --build-arg BUILD_COMMITER_NAME="${GITLAB_USER_NAME}" \
63+ --build-arg BUILD_COMMITER_MAIL="${GITLAB_USER_EMAIL}" \
64+ -t ${DOCKER_IMAGE_NAME}:${DOCKER_IMAGE_TAG} \
65+ .;
66+
67+ .publishPackage : &publishPackage |
68+ docker push ${DOCKER_IMAGE_NAME};
69+ # ##############################
70+
71+ # ########### Tasks ############
72+ # ######### Defaults ###########
73+ default :
74+ image :
75+ name : ${CI_BUILD_IMAGE}
76+ entrypoint : [""]
77+ services :
78+ - name : docker:19.03.12-dind
79+ alias : dind
80+ before_script :
81+ - git remote set-url origin git@${CI_SERVER_HOST}:${CI_PROJECT_PATH}.git
82+ - git checkout ${CI_COMMIT_REF_NAME}
83+ - *checkRegistry
84+
85+ # NOTE: implementar estos stages ~> https://docs.gitlab.com/ee/ci/yaml/README.html#pre-and-post
86+ stages :
87+ - .pre
88+ - build
89+ - .post
90+ # ##############################
91+
92+ # ##### BUILD-* #####
93+ generate_build :
94+ stage : build
95+ variables :
96+ DOCKER_REGISTRY : " ${DOCKER_REGISTRY_SNAPSHOTS}"
97+ script :
98+ - *bannerBuilding
99+ - *runTagCheck
100+ - *runMakePackage
101+ - *publishPackage
102+ allow_failure : false
103+ except :
104+ refs :
105+ - triggers
106+ variables :
107+ - $CI_COMMIT_REF_NAME =~ /^development$/
108+ - $CI_COMMIT_REF_NAME =~ /^master$/
109+ # ###################
110+
111+ # #### Snapshot #####
112+ generate_snapshot :
113+ stage : build
114+ variables :
115+ DOCKER_REGISTRY : " ${DOCKER_REGISTRY_SNAPSHOTS}"
116+ script :
117+ - *bannerBuilding
118+ - *runTagCheck
119+ - *runMakePackage
120+ - *publishPackage
121+ allow_failure : false
122+ only :
123+ variables :
124+ - $CI_COMMIT_REF_NAME =~ /^development$/
125+ except :
126+ refs :
127+ - triggers
128+ # ###################
129+
130+ # ##### Release #####
131+ generate_release :
132+ stage : build
133+ variables :
134+ DOCKER_REGISTRY : " ${DOCKER_REGISTRY_RELEASES}"
135+ script :
136+ - *bannerBuilding
137+ - *runTagCheck
138+ - *runMakePackage
139+ - *publishPackage
140+ allow_failure : false
141+ only :
142+ variables :
143+ - $CI_COMMIT_REF_NAME =~ /^master/
144+ - $CI_COMMIT_TAG != null
145+ except :
146+ refs :
147+ - triggers
148+ # ###################
149+
150+ # ##############################
0 commit comments