-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path.gitlab-ci.yml
executable file
·81 lines (74 loc) · 2.43 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
78
79
80
81
stages:
- build
- test
image: moreillon/tdd-dind
services:
- name: docker:24.0.7-dind
variables:
APPLICATION_NAME: time-series-storage-service
CONTAINER_IMAGE: ${AWS_ECR_PUBLIC_URL}/${APPLICATION_NAME}
CONTAINER_IMAGE_TEST: ${CONTAINER_IMAGE}:test
CONTAINER_IMAGE_TAGGED: ${CONTAINER_IMAGE}:${CI_COMMIT_TAG}
# TDD envvars
TEST_NETWORK: tdd
TEST_DB: tdd-db
TEST_DB_ORG: tdd
TEST_DB_BUCKET: tdd
TEST_DB_TOKEN: njK_dRkxL9fxJDnO5DbPs3nKmjC5h-4RKn8-Rk-GN2ByU-6ROurFBFuhBs66sZTE58U4wh9s78zCSZNWL9N7lg==
build:
stage: build
only:
- tags
tags:
- dind
before_script:
# Registry login
- aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin ${AWS_ECR_PUBLIC_URL}
# Create repository in ECR if it does not exist yet
- >
aws ecr-public create-repository --region us-east-1 --repository-name ${APPLICATION_NAME}
|| echo "Repository might have already existed"
script:
- docker build -t ${CONTAINER_IMAGE_TEST} .
- docker push ${CONTAINER_IMAGE_TEST}
test:
stage: test
coverage: '/All files[^|]*\|[^|]*\s+([\d\.]+)/'
only:
- tags
tags:
- dind
before_script:
- aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin ${AWS_ECR_PUBLIC_URL}
- docker network create ${TEST_NETWORK}
- >
docker run --rm -d
--name ${TEST_DB}
--network ${TEST_NETWORK}
--hostname ${TEST_DB}
--env DOCKER_INFLUXDB_INIT_MODE=setup
--env DOCKER_INFLUXDB_INIT_USERNAME=administrator
--env DOCKER_INFLUXDB_INIT_PASSWORD=testDrivenDevelopment
--env DOCKER_INFLUXDB_INIT_ADMIN_TOKEN=${TEST_DB_TOKEN}
--env DOCKER_INFLUXDB_INIT_ORG=${TEST_DB_ORG}
--env DOCKER_INFLUXDB_INIT_BUCKET=${TEST_DB_BUCKET}
influxdb
- sleep 10
script:
- >
docker run
--rm
--name tdd-app
--network ${TEST_NETWORK}
--env INFLUXDB_URL=http://${TEST_DB}:8086
--env INFLUXDB_TOKEN=${TEST_DB_TOKEN}
--env INFLUXDB_ORG=${TEST_DB_ORG}
--env INFLUXDB_BUCKET=${TEST_DB_BUCKET}
${CONTAINER_IMAGE_TEST}
npm run coverage
# Tag
- docker tag ${CONTAINER_IMAGE_TEST} ${CONTAINER_IMAGE}
- docker tag ${CONTAINER_IMAGE_TEST} ${CONTAINER_IMAGE_TAGGED}
# Push
- docker push ${CONTAINER_IMAGE}
- docker push ${CONTAINER_IMAGE_TAGGED}