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