gitlab/ci_template.yml: add dependencies block to the .build template
[platform/upstream/gstreamer.git] / .gitlab-ci.yml
1 stages:
2   - "test"
3   - "build runtime"
4   - "build base"
5   - "manifest"
6   - "build"
7
8 test manifest:
9   variables:
10     GIT_STRATEGY: fetch
11   image: "fedora"
12   stage: "test"
13   before_script:
14     - dnf install -y python3-pytest python3-pytest-cov python3-requests
15   script:
16     - pytest-3 --junitxml=junit.xml --cov=build_manifest gitlab/build_manifest.py
17   coverage: '/TOTAL.*\s+(\d+%)$/'
18   artifacts:
19     reports:
20       junit:
21         - "junit.xml"
22   only:
23     changes:
24       - 'gitlab/build_manifest.py'
25
26 .base:
27   image: "docker:stable"
28   services:
29     - docker:dind
30   variables:
31     # When using dind, it's wise to use the overlayfs driver for
32     # improved performance.
33     DOCKER_DRIVER: "overlay2"
34     GIT_STRATEGY: fetch
35   script:
36     - export IMAGE="${CI_REGISTRY_IMAGE}/${ARCH}/${TAG}"
37     - export REF="${IMAGE}:${CI_COMMIT_SHA}"
38     - export LATEST="${IMAGE}:latest"
39
40     - docker build --pull -f ${DOCKERFILE} -t ${REF} ${CONTEXT_DIR}
41     - docker image tag ${REF} ${LATEST}
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 ${REF}
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         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 runtime"
61   variables:
62     ARCH: "amd64"
63     TAG: "alpine-manifest-build"
64     CONTEXT_DIR: "docker/runtime-images/"
65     DOCKERFILE: "docker/runtime-images/Dockerfile-manifest-builder"
66   extends: .base
67   only:
68     changes:
69       - 'docker/runtime-images/Dockerfile-manifest-builder'
70       - 'gitlab/build_manifest.py'
71
72 fedora amd64 run docker:
73   stage: "build runtime"
74   variables:
75     ARCH: "amd64"
76     TAG: "fedora-runtime"
77     CONTEXT_DIR: "docker/runtime-images/"
78     DOCKERFILE: "docker/runtime-images/Dockerfile-fedora"
79   extends: .base
80   only:
81     changes:
82       - 'docker/runtime-images/Dockerfile-fedora'
83
84 fedora amd64 build docker:
85   stage: "build base"
86   variables:
87     ARCH: "amd64"
88     TAG: "fedora-build"
89     CONTEXT_DIR: "docker/build-base-images/"
90     DOCKERFILE: "docker/build-base-images/Dockerfile-fedora"
91   extends: .base
92   only:
93     changes:
94       - 'docker/build-base-images/Dockerfile-fedora'
95
96 ubuntu amd64 run docker:
97   stage: "build runtime"
98   variables:
99     ARCH: "amd64"
100     TAG: "ubuntu-runtime"
101     CONTEXT_DIR: "docker/runtime-images/"
102     DOCKERFILE: "docker/runtime-images/Dockerfile-ubuntu"
103   extends: .base
104   only:
105     changes:
106       - 'docker/runtime-images/Dockerfile-ubuntu'
107
108 ubuntu amd64 build docker:
109   stage: "build base"
110   variables:
111     ARCH: "amd64"
112     TAG: "ubuntu-build"
113     CONTEXT_DIR: "docker/build-base-images/"
114     DOCKERFILE: "docker/build-base-images/Dockerfile-ubuntu"
115   extends: .base
116   only:
117     changes:
118       - 'docker/build-base-images/Dockerfile-ubuntu'
119
120 include: "gitlab/ci_template.yml"
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'
125   image: "${CI_REGISTRY_IMAGE}/amd64/fedora-build:latest"
126
127 build ubuntu x86_64 local:
128   extends: '.build'
129   variables:
130     MESON_ARGS: "${DEFAULT_MESON_ARGS} -Dlibav=disabled"
131   image: "${CI_REGISTRY_IMAGE}/amd64/ubuntu-build:latest"