android: Use cross file shipped by gst-build
[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
11 test manifest:
12   variables:
13     GIT_STRATEGY: fetch
14   image: "registry.freedesktop.org/gstreamer/gst-ci/amd64/test-manifest:5856b05f3010136cebcaa9a90058572e008ae3f6"
15   stage: "preparation"
16   script:
17     - pytest-3 --junitxml=junit.xml --cov=build_manifest gitlab/build_manifest.py
18   coverage: '/TOTAL.*\s+(\d+%)$/'
19   artifacts:
20     reports:
21       junit:
22         - "junit.xml"
23
24 .base:
25   image: "docker:stable"
26   services:
27     - docker:dind
28   when: 'manual'
29   variables:
30     # When using dind, it's wise to use the overlayfs driver for
31     # improved performance.
32     DOCKER_DRIVER: "overlay2"
33     GIT_STRATEGY: fetch
34   script:
35     - export IMAGE="${CI_REGISTRY_IMAGE}/${ARCH}/${TAG}"
36     - export REF="${IMAGE}:${CI_COMMIT_SHA}"
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} ${REF}
53         # Push the tags
54         docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
55         docker push ${REF}
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 ubuntu amd64 docker:
96   stage: "build docker"
97   variables:
98     ARCH: "amd64"
99     TAG: "ubuntu"
100     CONTEXT_DIR: "docker/ubuntu/"
101     DOCKERFILE: "docker/ubuntu/Dockerfile"
102   extends: .base
103
104 cerbero fedora amd64 docker:
105   stage: "build docker"
106   variables:
107     ARCH: "amd64"
108     TAG: "cerbero-fedora"
109     CONTEXT_DIR: "docker/cerbero/"
110     DOCKERFILE: "docker/cerbero/Dockerfile-fedora"
111   extends: .base
112
113 include: "gitlab/ci_template.yml"
114
115 .build local:
116   extends: '.build'
117   when: 'manual'
118
119 # Test the build job against the latest build image tag and the local manifest
120 build fedora x86_64 local:
121   extends: '.build local'
122   stage: 'build'
123   image: "${CI_REGISTRY_IMAGE}/amd64/fedora:latest"
124   except:
125     refs:
126       - "master@gstreamer/gst-ci"
127
128 build android 28 local:
129   extends: '.build local'
130   variables:
131     MESON_ARGS: >
132       -Dbad=enabled
133       -Dbad:androidmedia=enabled
134       --cross-file cross-files/android_arm64_api28.txt
135   image: "${CI_REGISTRY_IMAGE}/amd64/ubuntu:latest"
136   except:
137     refs:
138       - "master@gstreamer/gst-ci"
139
140 build cerbero fedora x86_64 local:
141   extends: '.build cerbero fedora x86_64'
142   image: "${CI_REGISTRY_IMAGE}/amd64/cerbero-fedora:latest"
143   when: 'manual'
144   except:
145     refs:
146       - "master@gstreamer/gst-ci"
147
148 .test fedora x86_64 local:
149   image: '${CI_REGISTRY_IMAGE}/amd64/fedora:latest'
150   extends: '.test'
151   dependencies:
152     - build fedora x86_64 local
153   when: 'manual'
154   except:
155     refs:
156       - "master@gstreamer/gst-ci"
157
158 check fedora local:
159   extends: '.test fedora x86_64 local'
160   variables:
161     TEST_SUITE: 'check.gst*'