mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-19 00:01:23 +00:00
5fe97b9f1c
Previously we tried using the git commit ref as a UID for the images. This does not work though cause multiple jobs that rebuild the image can be triggered and override the same image tag. Instead use the CI_JOB_ID to provide better semantics wrt naming conflicts. Additionally add the date as part of the tag to better indicate the age of the image. Gitlab WEBGUI doens't indicate the age in a good way nor makes it easy to short the images.
174 lines
4.4 KiB
YAML
174 lines
4.4 KiB
YAML
stages:
|
|
- "build docker"
|
|
- "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: 'registry.freedesktop.org/gstreamer/gst-ci/amd64/test-manifest:fb91ee18309ab981289aa818ab2a7824ef0567a1'
|
|
stage: "preparation"
|
|
script:
|
|
- pytest-3 --junitxml=junit.xml --cov=build_manifest gitlab/build_manifest.py
|
|
coverage: '/TOTAL.*\s+(\d+%)$/'
|
|
artifacts:
|
|
reports:
|
|
junit:
|
|
- "junit.xml"
|
|
|
|
.base:
|
|
image: "docker:stable"
|
|
services:
|
|
- docker:dind
|
|
when: 'manual'
|
|
variables:
|
|
# When using dind, it's wise to use the overlayfs driver for
|
|
# improved performance.
|
|
DOCKER_DRIVER: "overlay2"
|
|
GIT_STRATEGY: fetch
|
|
script:
|
|
- export DATE=$(date +"%Y-%m-%d")
|
|
- export IMAGE="${CI_REGISTRY_IMAGE}/${ARCH}/${TAG}"
|
|
- export UID="${IMAGE}:${DATE}-${CI_JOB_ID}"
|
|
- export LATEST="${IMAGE}:latest"
|
|
|
|
- docker build --pull -f ${DOCKERFILE} -t ${LATEST} ${CONTEXT_DIR}
|
|
|
|
# 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 ${LATEST}
|
|
fi
|
|
|
|
# Push the images to the upstream registry
|
|
- |
|
|
if [ "$CI_COMMIT_REF_NAME" = "master" -a "$CI_PROJECT_NAMESPACE" = "gstreamer" ]; then
|
|
# Tag the image with the git ref
|
|
docker image tag ${LATEST} ${UID}
|
|
# Push the tags
|
|
docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
|
|
docker push ${UID}
|
|
docker push ${LATEST}
|
|
fi
|
|
|
|
alpine amd64 manifest builder docker:
|
|
stage: "build docker"
|
|
variables:
|
|
ARCH: "amd64"
|
|
TAG: "build-manifest"
|
|
CONTEXT_DIR: "docker/build_manifest/"
|
|
DOCKERFILE: "docker/build_manifest/Dockerfile"
|
|
extends: .base
|
|
|
|
test manifest amd64 docker:
|
|
stage: "build docker"
|
|
variables:
|
|
ARCH: "amd64"
|
|
TAG: "test-manifest"
|
|
CONTEXT_DIR: "docker/test_manifest/"
|
|
DOCKERFILE: "docker/test_manifest/Dockerfile"
|
|
extends: .base
|
|
|
|
gst-indent amd64 docker:
|
|
stage: "build docker"
|
|
variables:
|
|
ARCH: "amd64"
|
|
TAG: "gst-indent"
|
|
CONTEXT_DIR: "docker/indent/"
|
|
DOCKERFILE: "docker/indent/Dockerfile"
|
|
extends: .base
|
|
|
|
fedora amd64 docker:
|
|
stage: "build docker"
|
|
variables:
|
|
ARCH: "amd64"
|
|
TAG: "fedora"
|
|
CONTEXT_DIR: "docker/fedora/"
|
|
DOCKERFILE: "docker/fedora/Dockerfile"
|
|
extends: .base
|
|
|
|
cerbero fedora amd64 docker:
|
|
stage: "build docker"
|
|
variables:
|
|
ARCH: "amd64"
|
|
TAG: "cerbero-fedora"
|
|
CONTEXT_DIR: "docker/cerbero/"
|
|
DOCKERFILE: "docker/cerbero/Dockerfile-fedora"
|
|
extends: .base
|
|
|
|
android docker:
|
|
stage: "build docker"
|
|
variables:
|
|
ARCH: "amd64"
|
|
TAG: "android"
|
|
CONTEXT_DIR: "docker/android/"
|
|
DOCKERFILE: "docker/android/Dockerfile"
|
|
extends: .base
|
|
|
|
include: "gitlab/ci_template.yml"
|
|
|
|
.build local:
|
|
extends: '.build'
|
|
when: 'manual'
|
|
|
|
# Test the build job against the latest build image tag and the local manifest
|
|
build fedora x86_64 local:
|
|
extends: '.build local'
|
|
stage: 'build'
|
|
image: "${CI_REGISTRY_IMAGE}/amd64/fedora:latest"
|
|
except:
|
|
refs:
|
|
- "master@gstreamer/gst-ci"
|
|
|
|
build cerbero fedora x86_64 local:
|
|
extends: '.cerbero fedora x86_64'
|
|
image: "${CI_REGISTRY_IMAGE}/amd64/cerbero-fedora:latest"
|
|
when: 'manual'
|
|
except:
|
|
refs:
|
|
- "master@gstreamer/gst-ci"
|
|
|
|
build cerbero android universal local:
|
|
extends: '.cerbero android universal'
|
|
image: "${CI_REGISTRY_IMAGE}/amd64/cerbero-fedora:latest"
|
|
when: 'manual'
|
|
except:
|
|
refs:
|
|
- "master@gstreamer/gst-ci"
|
|
|
|
build cerbero cross win32 local:
|
|
extends: '.cerbero cross win32'
|
|
image: "${CI_REGISTRY_IMAGE}/amd64/cerbero-fedora:latest"
|
|
when: 'manual'
|
|
except:
|
|
refs:
|
|
- "master@gstreamer/gst-ci"
|
|
|
|
build cerbero cross win64 local:
|
|
extends: '.cerbero cross win64'
|
|
image: "${CI_REGISTRY_IMAGE}/amd64/cerbero-fedora:latest"
|
|
when: 'manual'
|
|
except:
|
|
refs:
|
|
- "master@gstreamer/gst-ci"
|
|
|
|
.test fedora x86_64 local:
|
|
image: '${CI_REGISTRY_IMAGE}/amd64/fedora:latest'
|
|
extends: '.test'
|
|
dependencies:
|
|
- build fedora x86_64 local
|
|
when: 'manual'
|
|
except:
|
|
refs:
|
|
- "master@gstreamer/gst-ci"
|
|
|
|
check fedora local:
|
|
extends: '.test fedora x86_64 local'
|
|
variables:
|
|
TEST_SUITE: 'check.gst*'
|