mirror of
https://github.com/samba-team/samba.git
synced 2025-01-22 22:04:08 +03:00
bootstrap/.gitlab-ci.yml: add ci file to trigger image auto build
Depending on 'SAMBA_CI_REBUILD_IMAGES=yes' (and 'SAMBA_CI_REBUILD_BROKEN_IMAGES=yes') as environment variables on a custom gitlab ci pipeline we'll generate und upload container images. bootstrap/README.md will get more details in the next commits. Please note ci in this file did NOT add the `latest` tag, since we want main ci to always use a fixed image based on the sha1sum of everything under bootstrap/ from now on. This also implies the new built image will not replace/break anything. Pair-Programmed-With: Stefan Metzmacher <metze@samba.org> Signed-off-by: Joe Guo <joeg@catalyst.net.nz> Signed-off-by: Stefan Metzmacher <metze@samba.org> Reviewed-by: Andreas Schneider <asn@samba.org>
This commit is contained in:
parent
f1b1bba5c3
commit
2300a38de3
116
bootstrap/.gitlab-ci.yml
Normal file
116
bootstrap/.gitlab-ci.yml
Normal file
@ -0,0 +1,116 @@
|
||||
services:
|
||||
- docker:dind
|
||||
|
||||
.build_image_template:
|
||||
image: docker:latest
|
||||
stage: images
|
||||
tags:
|
||||
- docker
|
||||
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 ./** && 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
|
||||
|
||||
debian9:
|
||||
extends: .build_image_template
|
||||
|
||||
debian8:
|
||||
extends: .build_image_template_force_broken
|
||||
|
||||
debian7:
|
||||
extends: .build_image_template_force_broken
|
||||
|
||||
fedora29:
|
||||
extends: .build_image_template_force_broken
|
||||
|
||||
fedora28:
|
||||
extends: .build_image_template_force_broken
|
||||
|
||||
centos7:
|
||||
extends: .build_image_template_force_broken
|
||||
|
||||
centos6:
|
||||
extends: .build_image_template_force_broken
|
||||
|
||||
opensuse150:
|
||||
extends: .build_image_template
|
Loading…
x
Reference in New Issue
Block a user