mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-10-05 18:22:23 +00:00
e89fad1455
Idea is that in order to not consume many resources for broken builds, we will have a basic stage where just one simple set of build and test jobs is run. If that passes we will continue with the rest of the Pipeline suite.
136 lines
3.6 KiB
YAML
136 lines
3.6 KiB
YAML
stages:
|
|
- "build runtime"
|
|
- "build base"
|
|
- "preparation"
|
|
# Test just one basic build, if succeds procced to test the rest
|
|
- "build"
|
|
- "test"
|
|
# Run multiple builds and tests, multi-distro, multi-arch
|
|
- "full builds"
|
|
- "full tests"
|
|
|
|
test manifest:
|
|
variables:
|
|
GIT_STRATEGY: fetch
|
|
image: "fedora"
|
|
stage: "preparation"
|
|
before_script:
|
|
- dnf install -y python3-pytest python3-pytest-cov python3-requests
|
|
script:
|
|
- pytest-3 --junitxml=junit.xml --cov=build_manifest gitlab/build_manifest.py
|
|
coverage: '/TOTAL.*\s+(\d+%)$/'
|
|
artifacts:
|
|
reports:
|
|
junit:
|
|
- "junit.xml"
|
|
only:
|
|
changes:
|
|
- 'gitlab/build_manifest.py'
|
|
|
|
.base:
|
|
image: "docker:stable"
|
|
services:
|
|
- docker:dind
|
|
variables:
|
|
# When using dind, it's wise to use the overlayfs driver for
|
|
# improved performance.
|
|
DOCKER_DRIVER: "overlay2"
|
|
GIT_STRATEGY: fetch
|
|
script:
|
|
- export IMAGE="${CI_REGISTRY_IMAGE}/${ARCH}/${TAG}"
|
|
- export REF="${IMAGE}:${CI_COMMIT_SHA}"
|
|
- export LATEST="${IMAGE}:latest"
|
|
|
|
- docker build --pull -f ${DOCKERFILE} -t ${REF} ${CONTEXT_DIR}
|
|
- docker image tag ${REF} ${LATEST}
|
|
|
|
# If we are in a fork, push the image to the reigstry regardless the branch
|
|
- |
|
|
if [ "$CI_PROJECT_NAMESPACE" != "gstreamer" ]; then
|
|
docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
|
|
docker push ${REF}
|
|
docker push ${LATEST}
|
|
fi
|
|
|
|
# Push the images to the upstream registry
|
|
- |
|
|
if [ "$CI_COMMIT_REF_NAME" = "master" -a "$CI_PROJECT_NAMESPACE" = "gstreamer" ]; then
|
|
docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
|
|
docker push ${REF}
|
|
docker push ${LATEST}
|
|
fi
|
|
|
|
alpine amd64 manifest builder docker:
|
|
stage: "build runtime"
|
|
variables:
|
|
ARCH: "amd64"
|
|
TAG: "alpine-manifest-build"
|
|
CONTEXT_DIR: "docker/runtime-images/"
|
|
DOCKERFILE: "docker/runtime-images/Dockerfile-manifest-builder"
|
|
extends: .base
|
|
only:
|
|
changes:
|
|
- 'docker/runtime-images/Dockerfile-manifest-builder'
|
|
- 'gitlab/build_manifest.py'
|
|
|
|
fedora amd64 run docker:
|
|
stage: "build runtime"
|
|
variables:
|
|
ARCH: "amd64"
|
|
TAG: "fedora-runtime"
|
|
CONTEXT_DIR: "docker/runtime-images/"
|
|
DOCKERFILE: "docker/runtime-images/Dockerfile-fedora"
|
|
extends: .base
|
|
only:
|
|
changes:
|
|
- 'docker/runtime-images/Dockerfile-fedora'
|
|
|
|
fedora amd64 build docker:
|
|
stage: "build base"
|
|
variables:
|
|
ARCH: "amd64"
|
|
TAG: "fedora-build"
|
|
CONTEXT_DIR: "docker/build-base-images/"
|
|
DOCKERFILE: "docker/build-base-images/Dockerfile-fedora"
|
|
extends: .base
|
|
only:
|
|
changes:
|
|
- 'docker/build-base-images/Dockerfile-fedora'
|
|
|
|
ubuntu amd64 run docker:
|
|
stage: "build runtime"
|
|
variables:
|
|
ARCH: "amd64"
|
|
TAG: "ubuntu-runtime"
|
|
CONTEXT_DIR: "docker/runtime-images/"
|
|
DOCKERFILE: "docker/runtime-images/Dockerfile-ubuntu"
|
|
extends: .base
|
|
only:
|
|
changes:
|
|
- 'docker/runtime-images/Dockerfile-ubuntu'
|
|
|
|
ubuntu amd64 build docker:
|
|
stage: "build base"
|
|
variables:
|
|
ARCH: "amd64"
|
|
TAG: "ubuntu-build"
|
|
CONTEXT_DIR: "docker/build-base-images/"
|
|
DOCKERFILE: "docker/build-base-images/Dockerfile-ubuntu"
|
|
extends: .base
|
|
only:
|
|
changes:
|
|
- 'docker/build-base-images/Dockerfile-ubuntu'
|
|
|
|
include: "gitlab/ci_template.yml"
|
|
|
|
# Test the build job against the latest build image tag and the local manifest
|
|
build fedora x86_64 local:
|
|
extends: '.build'
|
|
stage: 'build'
|
|
image: "${CI_REGISTRY_IMAGE}/amd64/fedora-build:latest"
|
|
|
|
build ubuntu x86_64 local:
|
|
extends: '.build'
|
|
variables:
|
|
MESON_ARGS: "${DEFAULT_MESON_ARGS} -Dlibav=disabled"
|
|
image: "${CI_REGISTRY_IMAGE}/amd64/ubuntu-build:latest"
|