registry: Change the way in which images are tagged
[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:fb91ee18309ab981289aa818ab2a7824ef0567a1'
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 DATE=$(date +"%Y-%m-%d")
36     - export IMAGE="${CI_REGISTRY_IMAGE}/${ARCH}/${TAG}"
37     - export UID="${IMAGE}:${DATE}-${CI_JOB_ID}"
38     - export LATEST="${IMAGE}:latest"
39
40     - docker build --pull -f ${DOCKERFILE} -t ${LATEST} ${CONTEXT_DIR}
41
42     # If we are in a fork, push the image to the reigstry regardless the branch
43     - |
44       if [ "$CI_PROJECT_NAMESPACE" != "gstreamer" ]; then
45         docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
46         docker push ${LATEST}
47       fi
48
49     # Push the images to the upstream registry
50     - |
51       if [ "$CI_COMMIT_REF_NAME" = "master" -a "$CI_PROJECT_NAMESPACE" = "gstreamer" ]; then
52         # Tag the image with the git ref
53         docker image tag ${LATEST} ${UID}
54         # Push the tags
55         docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
56         docker push ${UID}
57         docker push ${LATEST}
58       fi
59
60 alpine amd64 manifest builder docker:
61   stage: "build docker"
62   variables:
63     ARCH: "amd64"
64     TAG: "build-manifest"
65     CONTEXT_DIR: "docker/build_manifest/"
66     DOCKERFILE: "docker/build_manifest/Dockerfile"
67   extends: .base
68
69 test manifest amd64 docker:
70   stage: "build docker"
71   variables:
72     ARCH: "amd64"
73     TAG: "test-manifest"
74     CONTEXT_DIR: "docker/test_manifest/"
75     DOCKERFILE: "docker/test_manifest/Dockerfile"
76   extends: .base
77
78 gst-indent amd64 docker:
79   stage: "build docker"
80   variables:
81     ARCH: "amd64"
82     TAG: "gst-indent"
83     CONTEXT_DIR: "docker/indent/"
84     DOCKERFILE: "docker/indent/Dockerfile"
85   extends: .base
86
87 fedora amd64 docker:
88   stage: "build docker"
89   variables:
90     ARCH: "amd64"
91     TAG: "fedora"
92     CONTEXT_DIR: "docker/fedora/"
93     DOCKERFILE: "docker/fedora/Dockerfile"
94   extends: .base
95
96 cerbero fedora amd64 docker:
97   stage: "build docker"
98   variables:
99     ARCH: "amd64"
100     TAG: "cerbero-fedora"
101     CONTEXT_DIR: "docker/cerbero/"
102     DOCKERFILE: "docker/cerbero/Dockerfile-fedora"
103   extends: .base
104
105 android docker:
106   stage: "build docker"
107   variables:
108     ARCH: "amd64"
109     TAG: "android"
110     CONTEXT_DIR: "docker/android/"
111     DOCKERFILE: "docker/android/Dockerfile"
112   extends: .base
113
114 include: "gitlab/ci_template.yml"
115
116 .build local:
117   extends: '.build'
118   when: 'manual'
119
120 # Test the build job against the latest build image tag and the local manifest
121 build fedora x86_64 local:
122   extends: '.build local'
123   stage: 'build'
124   image: "${CI_REGISTRY_IMAGE}/amd64/fedora:latest"
125   except:
126     refs:
127       - "master@gstreamer/gst-ci"
128
129 build cerbero fedora x86_64 local:
130   extends: '.cerbero fedora x86_64'
131   image: "${CI_REGISTRY_IMAGE}/amd64/cerbero-fedora:latest"
132   when: 'manual'
133   except:
134     refs:
135       - "master@gstreamer/gst-ci"
136
137 build cerbero android universal local:
138   extends: '.cerbero android universal'
139   image: "${CI_REGISTRY_IMAGE}/amd64/cerbero-fedora:latest"
140   when: 'manual'
141   except:
142     refs:
143       - "master@gstreamer/gst-ci"
144
145 build cerbero cross win32 local:
146   extends: '.cerbero cross win32'
147   image: "${CI_REGISTRY_IMAGE}/amd64/cerbero-fedora:latest"
148   when: 'manual'
149   except:
150     refs:
151       - "master@gstreamer/gst-ci"
152
153 build cerbero cross win64 local:
154   extends: '.cerbero cross win64'
155   image: "${CI_REGISTRY_IMAGE}/amd64/cerbero-fedora:latest"
156   when: 'manual'
157   except:
158     refs:
159       - "master@gstreamer/gst-ci"
160
161 .test fedora x86_64 local:
162   image: '${CI_REGISTRY_IMAGE}/amd64/fedora:latest'
163   extends: '.test'
164   dependencies:
165     - build fedora x86_64 local
166   when: 'manual'
167   except:
168     refs:
169       - "master@gstreamer/gst-ci"
170
171 check fedora local:
172   extends: '.test fedora x86_64 local'
173   variables:
174     TEST_SUITE: 'check.gst*'