stages: - "test" - "build runtime" - "build base" - "manifest" - "build" test manifest: variables: GIT_STRATEGY: fetch image: "fedora" stage: "test" 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' 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"