forked from mogtofu33/drupal8ci
-
Notifications
You must be signed in to change notification settings - Fork 0
/
.gitlab-ci.yml
executable file
·129 lines (119 loc) · 4.09 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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
image: docker:stable
services:
- docker:dind
stages:
# Stable version.
- stable
# Dev version.
- dev
# No Drupal versions are the same for stable and dev.
- no drupal
variables:
DRUPAL_CURRENT_STABLE: '8.7'
DRUPAL_CURRENT_DEV: '8.8'
DOCKER_HOST: tcp:https://docker:2375
DOCKER_DRIVER: overlay2
RELEASE_REGISTRY: docker.io
RELEASE_IMAGE: index.docker.io/$RELEASE_USER
CI_DO_RELEASE: 1
SKIP_STABLE: 0
SKIP_STABLE_SELENIUM: 0
SKIP_DEV: 0
SKIP_DEV_SELENIUM: 0
SKIP_NO_DRUPAL: 0
SKIP_NO_DRUPAL_SELENIUM: 0
.docker_login_hub:
- &docker_login_hub docker login -u $RELEASE_USER -p $RELEASE_PASSWORD $RELEASE_REGISTRY
before_script:
# Pull base image from Docker hub.
- docker pull $IMAGE_BASE || true
# Login to Gitlab and pull current image if exist.
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN registry.gitlab.com
- docker pull $CI_REGISTRY_IMAGE/$IMAGE || true
stable:
stage: stable
except:
variables:
- $SKIP_STABLE == "1"
script:
- docker pull $EXTRA_IMAGE
# Build the image from cache.
- docker build --compress --cache-from $CI_REGISTRY_IMAGE/$IMAGE --tag $CI_REGISTRY_IMAGE/$IMAGE $DIR
# Test
- docker run --rm -t $CI_REGISTRY_IMAGE/$IMAGE /scripts/run-tests.sh
# Push to Gitlab registry.
- docker push $CI_REGISTRY_IMAGE/$IMAGE
# Login to Docker hub.
- *docker_login_hub
# Tag for Docker hub and push.
- docker tag $CI_REGISTRY_IMAGE/$IMAGE $RELEASE_IMAGE/$IMAGE
- docker images
- if [ ${CI_DO_RELEASE} == 1 ]; then
docker push $RELEASE_IMAGE/$IMAGE;
fi
variables:
IMAGE: drupal8ci:${DRUPAL_CURRENT_STABLE}-drupal
DIR: '${DRUPAL_CURRENT_STABLE}/drupal'
IMAGE_BASE: drupal:${DRUPAL_CURRENT_STABLE}-apache
EXTRA_IMAGE: composer:latest
.build_test_release:
script:
# Make sure we are using Gitlab image.
- sed -i "s#FROM mogtofu33/drupal8ci# FROM ${CI_REGISTRY_IMAGE}/drupal8ci#g" ${CI_PROJECT_DIR}/$DIR/Dockerfile
# Build the image from cache.
- docker build --compress --cache-from $CI_REGISTRY_IMAGE/$IMAGE --tag $CI_REGISTRY_IMAGE/$IMAGE $DIR
# Test
- docker run --rm -t $CI_REGISTRY_IMAGE/$IMAGE /scripts/run-tests.sh
# Push to Gitlab registry for next steps.
- docker push $CI_REGISTRY_IMAGE/$IMAGE
# Login to Docker hub.
- *docker_login_hub
# Tag for Docker hub and push.
- docker tag $CI_REGISTRY_IMAGE/$IMAGE $RELEASE_IMAGE/$IMAGE
- docker images
- if [ ${CI_DO_RELEASE} == 1 ]; then
docker push $RELEASE_IMAGE/$IMAGE;
fi
dev:
stage: dev
except:
variables:
- $SKIP_DEV == "1"
extends: .build_test_release
variables:
IMAGE: drupal8ci:${DRUPAL_CURRENT_DEV}-drupal
DIR: '${DRUPAL_CURRENT_DEV}/drupal'
IMAGE_BASE: drupal:${DRUPAL_CURRENT_STABLE}-apache
.no_drupal:
script:
# Make sure we are using Gitlab image.
- sed -i "s#FROM mogtofu33/drupal8ci# FROM ${CI_REGISTRY_IMAGE}/drupal8ci#g" ${CI_PROJECT_DIR}/$DIR/Dockerfile
# Build the image from cache.
- docker build --compress --cache-from $CI_REGISTRY_IMAGE/$IMAGE --tag $CI_REGISTRY_IMAGE/$IMAGE $DIR
# Test
- docker run --rm -t $CI_REGISTRY_IMAGE/$IMAGE /scripts/run-tests.sh
# Push to Gitlab registry for all versions.
- docker tag $CI_REGISTRY_IMAGE/$IMAGE $CI_REGISTRY_IMAGE/$IMAGE_DEV
- docker push $CI_REGISTRY_IMAGE/$IMAGE
- docker push $CI_REGISTRY_IMAGE/$IMAGE_DEV
# Login to Docker hub.
- *docker_login_hub
# Tag for Docker hub and push for all versions.
- docker tag $CI_REGISTRY_IMAGE/$IMAGE $RELEASE_IMAGE/$IMAGE
- docker tag $CI_REGISTRY_IMAGE/$IMAGE $RELEASE_IMAGE/$IMAGE_DEV
- docker images
- if [ ${CI_DO_RELEASE} == 1 ]; then
docker push $RELEASE_IMAGE/$IMAGE;
docker push $RELEASE_IMAGE/$IMAGE_DEV;
fi
no-drupal:
stage: no drupal
except:
variables:
- $SKIP_NO_DRUPAL == "1"
extends: .no_drupal
variables:
IMAGE: drupal8ci:${DRUPAL_CURRENT_STABLE}-no-drupal
IMAGE_DEV: drupal8ci:${DRUPAL_CURRENT_DEV}-no-drupal
DIR: '${DRUPAL_CURRENT_STABLE}/no-drupal'
IMAGE_BASE: ${CI_REGISTRY_IMAGE}/drupal8ci:${DRUPAL_CURRENT_STABLE}