ci_template: refresh the docker images used for the CI
[platform/upstream/gstreamer.git] / .gitlab-ci.yml
1 stages:
2   - "build docker"
3   - "preparation"
4   - "pre-build"
5   - "build"
6   - "test"
7   # use the binaries in some way
8   - "integrate"
9
10 test manifest:
11   variables:
12     GIT_STRATEGY: fetch
13   image: 'registry.freedesktop.org/gstreamer/gst-ci/amd64/test-manifest:2019-10-23-793476'
14   stage: "preparation"
15   script:
16     - pytest-3 --junitxml=junit.xml --cov=build_manifest gitlab/build_manifest.py
17   coverage: '/TOTAL.*\s+(\d+%)$/'
18   artifacts:
19     reports:
20       junit:
21         - "junit.xml"
22
23 .base:
24   image: "docker:stable"
25   services:
26     - docker:dind
27   when: 'manual'
28   variables:
29     # When using dind, it's wise to use the overlayfs driver for
30     # improved performance.
31     DOCKER_DRIVER: "overlay2"
32     GIT_STRATEGY: fetch
33   script:
34     - export DATE=$(date +"%Y-%m-%d")
35     - export IMAGE="${CI_REGISTRY_IMAGE}/${ARCH}/${TAG}"
36     - export _UID="${IMAGE}:${DATE}-${CI_JOB_ID}"
37     - export LATEST="${IMAGE}:latest"
38
39     - docker build --pull -f ${DOCKERFILE} -t ${LATEST} ${CONTEXT_DIR}
40
41     # If we are in a fork, push the image to the reigstry regardless the branch
42     - |
43       if [ "$CI_PROJECT_NAMESPACE" != "gstreamer" ]; then
44         docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
45         docker push ${LATEST}
46       fi
47
48     # Push the images to the upstream registry
49     - |
50       if [ "$CI_COMMIT_REF_NAME" = "master" -a "$CI_PROJECT_NAMESPACE" = "gstreamer" ]; then
51         # Tag the image with the git ref
52         docker image tag ${LATEST} ${_UID}
53         # Push the tags
54         docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
55         docker push ${_UID}
56         docker push ${LATEST}
57       fi
58
59 alpine amd64 manifest builder docker:
60   stage: "build docker"
61   variables:
62     ARCH: "amd64"
63     TAG: "build-manifest"
64     CONTEXT_DIR: "docker/build_manifest/"
65     DOCKERFILE: "docker/build_manifest/Dockerfile"
66   extends: .base
67
68 test manifest amd64 docker:
69   stage: "build docker"
70   variables:
71     ARCH: "amd64"
72     TAG: "test-manifest"
73     CONTEXT_DIR: "docker/test_manifest/"
74     DOCKERFILE: "docker/test_manifest/Dockerfile"
75   extends: .base
76
77 gst-indent amd64 docker:
78   stage: "build docker"
79   variables:
80     ARCH: "amd64"
81     TAG: "gst-indent"
82     CONTEXT_DIR: "docker/indent/"
83     DOCKERFILE: "docker/indent/Dockerfile"
84   extends: .base
85
86 fedora amd64 docker:
87   stage: "build docker"
88   variables:
89     ARCH: "amd64"
90     TAG: "fedora"
91     CONTEXT_DIR: "docker/fedora/"
92     DOCKERFILE: "docker/fedora/Dockerfile"
93   extends: .base
94
95 cerbero fedora amd64 docker:
96   stage: "build docker"
97   variables:
98     ARCH: "amd64"
99     TAG: "cerbero-fedora"
100     CONTEXT_DIR: "docker/cerbero/"
101     DOCKERFILE: "docker/cerbero/Dockerfile-fedora"
102   extends: .base
103
104 android docker:
105   stage: "build docker"
106   variables:
107     ARCH: "amd64"
108     TAG: "android"
109     CONTEXT_DIR: "docker/android/"
110     DOCKERFILE: "docker/android/Dockerfile"
111   extends: .base
112
113 include: "gitlab/ci_template.yml"
114
115 .build local:
116   extends: '.build'
117   when: 'manual'
118   needs:
119     - 'manifest'
120
121 # Test the build job against the latest build image tag and the local manifest
122 build fedora x86_64 local:
123   extends: '.build local'
124   stage: 'build'
125   image: "${CI_REGISTRY_IMAGE}/amd64/fedora:latest"
126   artifacts:
127     expire_in: '5 days'
128     when: always
129     paths:
130       - "manifest.xml"
131       - "gst-build/"
132   except:
133     refs:
134       - "master@gstreamer/gst-ci"
135
136 build cerbero fedora x86_64 local:
137   extends: '.cerbero fedora x86_64'
138   image: "${CI_REGISTRY_IMAGE}/amd64/cerbero-fedora:latest"
139   when: 'manual'
140   except:
141     refs:
142       - "master@gstreamer/gst-ci"
143
144 build cerbero cross-android universal local:
145   extends: '.cerbero cross-android universal'
146   image: "${CI_REGISTRY_IMAGE}/amd64/cerbero-fedora:latest"
147   when: 'manual'
148   except:
149     refs:
150       - "master@gstreamer/gst-ci"
151
152 build cerbero cross win32 local:
153   extends: '.cerbero cross win32'
154   image: "${CI_REGISTRY_IMAGE}/amd64/cerbero-fedora:latest"
155   when: 'manual'
156   except:
157     refs:
158       - "master@gstreamer/gst-ci"
159
160 build cerbero cross win64 local:
161   extends: '.cerbero cross win64'
162   image: "${CI_REGISTRY_IMAGE}/amd64/cerbero-fedora:latest"
163   when: 'manual'
164   except:
165     refs:
166       - "master@gstreamer/gst-ci"
167
168 .test fedora x86_64 local:
169   image: '${CI_REGISTRY_IMAGE}/amd64/fedora:latest'
170   extends: '.test'
171   dependencies:
172     - 'build fedora x86_64 local'
173   when: 'manual'
174   except:
175     refs:
176       - "master@gstreamer/gst-ci"
177
178 check fedora local:
179   extends: '.test fedora x86_64 local'
180   variables:
181     TEST_SUITE: 'check.gst*'
182
183 cross-android universal examples local:
184   extends: '.cross-android universal examples'
185   image: "${CI_REGISTRY_IMAGE}/amd64/android:latest"
186   dependencies:
187     - "build cerbero cross-android universal local"
188   when: 'manual'
189   except:
190     refs:
191       - "master@gstreamer/gst-ci"
192
193 integration testsuites fedora local:
194   extends: '.test fedora x86_64 local'
195   before_script:
196     - rm -f gst-build/build/subprojects/gstreamer-vaapi/gst/vaapi/libgstvaapi.so
197   variables:
198     EXTRA_VALIDATE_ARGS: "--timeout-factor=2 --retry-on-failures"
199     TEST_SUITE: "validate ges"
200