CI: Update image uris
[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:6f7e01e1e30a73efa880acdc8e911f1f20c58dbb"
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   only:
24     changes:
25       - 'gitlab/build_manifest.py'
26
27 .base:
28   image: "docker:stable"
29   services:
30     - docker:dind
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 IMAGE="${CI_REGISTRY_IMAGE}/${ARCH}/${TAG}"
38     - export REF="${IMAGE}:${CI_COMMIT_SHA}"
39     - export LATEST="${IMAGE}:latest"
40
41     - docker build --pull -f ${DOCKERFILE} -t ${LATEST} ${CONTEXT_DIR}
42
43     # If we are in a fork, push the image to the reigstry regardless the branch
44     - |
45       if [ "$CI_PROJECT_NAMESPACE" != "gstreamer" ]; then
46         docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
47         docker push ${LATEST}
48       fi
49
50     # Push the images to the upstream registry
51     - |
52       if [ "$CI_COMMIT_REF_NAME" = "master" -a "$CI_PROJECT_NAMESPACE" = "gstreamer" ]; then
53         # Tag the image with the git ref
54         docker image tag ${LATEST} ${REF}
55         # Push the tags
56         docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
57         docker push ${REF}
58         docker push ${LATEST}
59       fi
60
61 alpine amd64 manifest builder docker:
62   stage: "build docker"
63   variables:
64     ARCH: "amd64"
65     TAG: "build-manifest"
66     CONTEXT_DIR: "docker/build_manifest/"
67     DOCKERFILE: "docker/build_manifest/Dockerfile"
68   extends: .base
69   only:
70     changes:
71       - 'docker/build_manifest/*'
72       - 'gitlab/build_manifest.py'
73
74 test manifest amd64 docker:
75   stage: "build docker"
76   variables:
77     ARCH: "amd64"
78     TAG: "test-manifest"
79     CONTEXT_DIR: "docker/test_manifest/"
80     DOCKERFILE: "docker/test_manifest/Dockerfile"
81   extends: .base
82   only:
83     changes:
84       - 'docker/test_manifest/*'
85
86 gst-indent amd64 docker:
87   stage: "build docker"
88   variables:
89     ARCH: "amd64"
90     TAG: "gst-indent"
91     CONTEXT_DIR: "docker/indent/"
92     DOCKERFILE: "docker/indent/Dockerfile"
93   extends: .base
94   only:
95     changes:
96       - 'docker/indent/*'
97
98 fedora amd64 docker:
99   stage: "build docker"
100   variables:
101     ARCH: "amd64"
102     TAG: "fedora"
103     CONTEXT_DIR: "docker/fedora/"
104     DOCKERFILE: "docker/fedora/Dockerfile"
105   extends: .base
106   only:
107     changes:
108       - 'docker/fedora/*'
109
110 # Cross compile image
111 android 28 amd64 docker:
112   stage: "build docker"
113   variables:
114     ARCH: "amd64"
115     TAG: "android_28"
116     CONTEXT_DIR: "docker/android/"
117     DOCKERFILE: "docker/android/Dockerfile"
118   extends: .base
119   only:
120     changes:
121       - 'docker/android/*'
122
123 include: "gitlab/ci_template.yml"
124
125 # Test the build job against the latest build image tag and the local manifest
126 build fedora x86_64 local:
127   extends: '.build'
128   stage: 'build'
129   image: "${CI_REGISTRY_IMAGE}/amd64/fedora:latest"
130
131 build android 28 local:
132   extends: '.build'
133   variables:
134     MESON_ARGS: >
135       -Dbad=enabled
136       -Dbad:androidmedia=enabled
137       --cross-file /android_arm64_28.txt
138   image: "${CI_REGISTRY_IMAGE}/amd64/android_28:latest"