summaryrefslogtreecommitdiffstats
path: root/bootstrap/.gitlab-ci.yml
diff options
context:
space:
mode:
Diffstat (limited to 'bootstrap/.gitlab-ci.yml')
-rw-r--r--bootstrap/.gitlab-ci.yml118
1 files changed, 118 insertions, 0 deletions
diff --git a/bootstrap/.gitlab-ci.yml b/bootstrap/.gitlab-ci.yml
new file mode 100644
index 0000000..626e010
--- /dev/null
+++ b/bootstrap/.gitlab-ci.yml
@@ -0,0 +1,118 @@
+
+.build_image_template:
+ image: quay.io/podman/stable:latest
+ stage: images
+ tags:
+ # We need to make sure we only use gitlab.com
+ # runners and not our own runners, as our current runners
+ # don't allow 'docker build ...' to run.
+ - docker
+ - gce
+ - shared
+ variables:
+ SAMBA_CI_IS_BROKEN_IMAGE: "no"
+ SAMBA_CI_TEST_JOB: "samba-o3"
+ before_script:
+ # install prerequisites
+ - dnf install -qy diffutils
+ # 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}
+ podman 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)
+ container_hash=$(podman image inspect --format='{{ .Id }}' ${ci_image_name} | cut -c 1-9)
+ timestamp_tag=${SAMBA_CI_CONTAINER_TAG}-${timestamp}-${GITLAB_USER_LOGIN}-${container_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
+ podman 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"
+ podman run --volume $(pwd):${samba_repo_root} --workdir ${samba_repo_root} ${ci_image_name} \
+ diff -u bootstrap/sha1sum.txt /sha1sum.txt
+ podman 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 or samba-fuzz
+ podman run --volume $(pwd):/src:ro ${ci_image_name} \
+ /bin/bash -c "git clone /src samba && cd samba && export PKG_CONFIG_PATH=/usr/lib64/compat-gnutls34/pkgconfig:/usr/lib64/compat-nettle32/pkgconfig && script/autobuild.py ${SAMBA_CI_TEST_JOB} --verbose --nocleanup --keeplogs --tail --testbase /tmp/samba-testbase"
+ podman tag ${ci_image_name} ${ci_image_path}:${SAMBA_CI_CONTAINER_TAG}
+ podman 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" || { \
+ podman login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY; \
+ podman push ${ci_image_path}:${SAMBA_CI_CONTAINER_TAG}; \
+ podman 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
+
+ubuntu2004:
+ extends: .build_image_template
+
+debian11:
+ extends: .build_image_template
+
+fedora36:
+ extends: .build_image_template
+
+f36mit120:
+ extends: .build_image_template
+
+centos8s:
+ 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
+
+opensuse153:
+ extends: .build_image_template