services: - docker:dind .build_image_template: image: docker:latest stage: images tags: - docker - shared variables: SAMBA_CI_IS_BROKEN_IMAGE: "no" before_script: # Ensure we are generating correct the container - uname -a - cat /etc/os-release - echo "SAMBA_CI_CONTAINER_REGISTRY[${SAMBA_CI_CONTAINER_REGISTRY}]" - echo "SAMBA_CI_CONTAINER_TAG[${SAMBA_CI_CONTAINER_TAG}]" - echo "SAMBA_CI_IS_BROKEN_IMAGE[${SAMBA_CI_IS_BROKEN_IMAGE}]" - echo "SAMBA_CI_REBUILD_IMAGES[${SAMBA_CI_REBUILD_IMAGES}]" - echo "SAMBA_CI_REBUILD_BROKEN_IMAGES[${SAMBA_CI_REBUILD_BROKEN_IMAGES}]" - echo "GITLAB_USER_LOGIN[${GITLAB_USER_LOGIN}]" - echo "${SAMBA_CI_CONTAINER_TAG}" > /tmp/sha1sum-tag.txt - diff -u bootstrap/sha1sum.txt /tmp/sha1sum-tag.txt script: | set -xueo pipefail ci_image_name=samba-ci-${CI_JOB_NAME} docker build -t ${ci_image_name} --build-arg SHA1SUM=${SAMBA_CI_CONTAINER_TAG} bootstrap/generated-dists/${CI_JOB_NAME} ci_image_path="${SAMBA_CI_CONTAINER_REGISTRY}/${ci_image_name}" timestamp=$(date +%Y%m%d%H%M%S) docker_hash=$(docker image inspect --format='{{index .Id}}' ${ci_image_name} | cut -d : -f 2 | cut -c 1-9) timestamp_tag=${SAMBA_CI_CONTAINER_TAG}-${timestamp}-${GITLAB_USER_LOGIN}-${docker_hash} samba_repo_root=/home/samba/samba # Ensure we are generating the correct container that we expect to be in echo "${SAMBA_CI_CONTAINER_TAG}" > /tmp/sha1sum-tag.txt diff -u bootstrap/sha1sum.txt /tmp/sha1sum-tag.txt docker run --volume $(pwd):${samba_repo_root} --workdir ${samba_repo_root} ${ci_image_name} \ /bin/bash -c "echo \"${SAMBA_CI_CONTAINER_TAG}\" > /tmp/sha1sum-tag.txt; diff -u bootstrap/sha1sum.txt /tmp/sha1sum-tag.txt" docker run --volume $(pwd):${samba_repo_root} --workdir ${samba_repo_root} ${ci_image_name} \ diff -u bootstrap/sha1sum.txt /sha1sum.txt docker run --volume $(pwd):${samba_repo_root} --workdir ${samba_repo_root} ${ci_image_name} \ bootstrap/template.py --sha1sum > /tmp/sha1sum-template.txt diff -u bootstrap/sha1sum.txt /tmp/sha1sum-template.txt # run smoke test with samba-o3 docker run --volume $(pwd):${samba_repo_root} --workdir ${samba_repo_root} ${ci_image_name} \ /bin/bash -c "sudo chown -R samba:samba ./** && export PKG_CONFIG_PATH=/usr/lib64/compat-gnutls34/pkgconfig:/usr/lib64/compat-nettle32/pkgconfig && script/autobuild.py samba-o3 --verbose --nocleanup --keeplogs --tail --testbase /tmp/samba-testbase" docker tag ${ci_image_name} ${ci_image_path}:${SAMBA_CI_CONTAINER_TAG} docker tag ${ci_image_name} ${ci_image_path}:${timestamp_tag} # We build all images, but only upload is it's not marked as broken test x"${SAMBA_CI_IS_BROKEN_IMAGE}" = x"yes" || { \ docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY; \ docker push ${ci_image_path}:${SAMBA_CI_CONTAINER_TAG}; \ docker push ${ci_image_path}:${timestamp_tag}; \ } echo "Success for ${ci_image_path}:${timestamp_tag}" test x"${SAMBA_CI_IS_BROKEN_IMAGE}" = x"no" || { \ echo "The image ${CI_JOB_NAME} is marked as broken and should have failed!"; \ echo "Replace .build_image_template_force_broken with .build_image_template!"; \ echo "Add a .samba-o3-template section at the end of the main .gitlab-ci.yml!"; \ /bin/false; \ } only: variables: # # You need a custom pipeline which passes # SAMBA_CI_REBUILD_IMAGES="yes". # # https://gitlab.com/samba-team/devel/samba/pipelines/new # - $SAMBA_CI_REBUILD_IMAGES == "yes" .build_image_template_force_broken: extends: .build_image_template variables: SAMBA_CI_IS_BROKEN_IMAGE: "yes" only: variables: # # You need a custom pipeline which passes # SAMBA_CI_REBUILD_BROKEN_IMAGES="yes" # in order to build broken images for debugging # # https://gitlab.com/samba-team/devel/samba/pipelines/new # - $SAMBA_CI_REBUILD_BROKEN_IMAGES == "yes" ubuntu1804: extends: .build_image_template ubuntu1604: extends: .build_image_template ubuntu1404: extends: .build_image_template_force_broken debian9: extends: .build_image_template debian8: extends: .build_image_template_force_broken debian7: extends: .build_image_template_force_broken fedora31: extends: .build_image_template fedora30: extends: .build_image_template fedora29: extends: .build_image_template centos8: extends: .build_image_template centos7: extends: .build_image_template variables: # Shallow copies are not supported by git on CentOS7 GIT_DEPTH: "" # We install a compat-gnutls34 package for GnuTLS >= 3.4.7 PKG_CONFIG_PATH: /usr/lib64/compat-gnutls34/pkgconfig:/usr/lib64/compat-nettle32/pkgconfig centos6: extends: .build_image_template_force_broken opensuse150: extends: .build_image_template opensuse151: extends: .build_image_template