88f20165db
BREAKING CHANGES: - `glint <file>` removed; use `glint check <file>` - `--graph <mode>` removed; use `glint graph [mode]` - `--graph-out` renamed to `--out` on `glint graph` feat(cli): ruff-style subcommands — `glint check` and `glint graph [mode]` feat(graph): `glint graph tree` — terminal job tree with context annotations feat(graph): context flags (--branch/--tag/--source/--var) on `glint graph` feat(resolver): recursive local include resolution from disk fix(resolver): extends unknown base emits warning instead of fatal error fix(model): script/before_script/after_script accept block scalar string form test(linter): Samba project CI fixtures as integration tests chore(build): fix .gitignore to not exclude cmd/glint/ directory docs: update CHANGELOG, README, ROADMAP for v0.2.0 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
123 lines
4.9 KiB
YAML
123 lines
4.9 KiB
YAML
---
|
|
.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.
|
|
- saas-linux-small-amd64
|
|
variables:
|
|
SAMBA_CI_IS_BROKEN_IMAGE: "no"
|
|
SAMBA_CI_TEST_JOB: "samba-o3"
|
|
SAMBA_CI_PLATFORM: "linux/amd64"
|
|
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 --platform ${SAMBA_CI_PLATFORM} --tag ${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 config --global --add safe.directory /src/.git && 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"
|
|
|
|
ubuntu2204:
|
|
extends: .build_image_template
|
|
|
|
ubuntu2404:
|
|
extends: .build_image_template
|
|
|
|
ubuntu2604:
|
|
extends: .build_image_template
|
|
|
|
debian11:
|
|
extends: .build_image_template
|
|
|
|
debian12:
|
|
extends: .build_image_template
|
|
|
|
fedora43:
|
|
extends: .build_image_template
|
|
|
|
debian11-32bit:
|
|
extends: .build_image_template
|
|
variables:
|
|
SAMBA_CI_TEST_JOB: "samba-32bit"
|
|
SAMBA_CI_PLATFORM: "linux/i386"
|
|
|
|
rocky8:
|
|
extends: .build_image_template
|
|
|
|
centos9s:
|
|
extends: .build_image_template
|
|
|
|
opensuse160:
|
|
extends: .build_image_template
|
|
|