-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy path.gitlab-ci.yml
More file actions
82 lines (73 loc) · 2.69 KB
/
.gitlab-ci.yml
File metadata and controls
82 lines (73 loc) · 2.69 KB
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
78
79
80
81
stages:
- build
variables:
GIT_SUBMODULE_STRATEGY: recursive
DOCKER_IMAGE_NAME: qevent_intership_stream_data_processor_image
DOCKER_PROJECT_PATH: /stream-data-processor
UDF_IMAGE_NAME: sdp_kapacitor_udf
.docker_cleanup: &docker_cleanup
- docker container prune --filter "label=project=${CI_PROJECT_PATH}" --force
- docker volume prune --filter "label=project=${CI_PROJECT_PATH}" --force
- docker network prune --filter "label=project=${CI_PROJECT_PATH}" --force
- docker image prune --filter "label=stage=builder" --filter "label=project=${CI_PROJECT_PATH}" --force
.setup_image: &setup_image
- |
docker image build \
--build-arg ALPINE_IMAGE_VERSION=3.12.1 \
--target system-config \
-t "${DOCKER_IMAGE_NAME}" .
- docker image list --filter=reference="${DOCKER_IMAGE_NAME}" --filter=before="${DOCKER_IMAGE_NAME}:latest"
- |
for image in $(
docker image list --no-trunc --quiet \
--filter=reference="${DOCKER_IMAGE_NAME}" \
--filter=before="${DOCKER_IMAGE_NAME}:latest"
); do
docker image remove --force "${image}"
done
.start_job_container: &start_job_container
- |
docker create \
--name "${CI_COMMIT_SHORT_SHA}-${CI_PIPELINE_ID}-${CI_JOB_ID}" \
--label "project=${CI_PROJECT_PATH}" \
--env DOCKER_PROJECT_PATH="${DOCKER_PROJECT_PATH}" \
"${DOCKER_IMAGE_NAME}" \
bash -ex "${DOCKER_PROJECT_PATH}/test_script.sh"
- docker cp . "${CI_COMMIT_SHORT_SHA}-${CI_PIPELINE_ID}-${CI_JOB_ID}":"${DOCKER_PROJECT_PATH}"
- docker container start --attach "${CI_COMMIT_SHORT_SHA}-${CI_PIPELINE_ID}-${CI_JOB_ID}"
.build_udf_image: &build_udf_image
- |
docker image build \
--target app \
--build-arg ALPINE_IMAGE_VERSION=3.12.1 \
--build-arg CMAKE_BUILD_BINARY_TARGET=sdp-udf \
--build-arg "PROJECT_ID=${CI_PROJECT_PATH}" \
-t "${UDF_IMAGE_NAME}" .
- docker image list --filter=reference="${UDF_IMAGE_NAME}" --filter=before="${UDF_IMAGE_NAME}:latest"
- |
for image in $(
docker image list --no-trunc --quiet \
--filter=reference="${UDF_IMAGE_NAME}" \
--filter=before="${UDF_IMAGE_NAME}:latest"
); do
docker image remove --force "${image}"
done
- docker save "${UDF_IMAGE_NAME}" | gzip > "${UDF_IMAGE_NAME}.tar.gz"
default:
before_script:
- *setup_image
- *docker_cleanup
after_script:
- *docker_cleanup
tags:
- docker
generic:
interruptible: true
stage: build
script:
- *start_job_container
- docker container rm -f "${CI_COMMIT_SHORT_SHA}-${CI_PIPELINE_ID}-${CI_JOB_ID}"
- *build_udf_image
artifacts:
paths:
- "${UDF_IMAGE_NAME}.tar.gz"