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