build test
All checks were successful
Build and Push Teamspeak Images on Base Image Update / check-for-changes (push) Successful in 7s
Build and Push Teamspeak Images on Base Image Update / build-alpine (push) Has been skipped
Build and Push Teamspeak Images on Base Image Update / build-debian (push) Has been skipped
Build and Push Teamspeak Images on Base Image Update / build-basic (push) Has been skipped
Build and Push Teamspeak Images on Base Image Update / update-base-digest-cache (push) Has been skipped
Build and Push Teamspeak Images on Base Image Update / generate-build-info (push) Has been skipped
Build and Push Teamspeak Images on Base Image Update / generate-changelogs (push) Has been skipped

This commit is contained in:
2026-01-11 05:59:35 -08:00
parent 29835f0198
commit c4cc21f194

View File

@@ -55,42 +55,42 @@ jobs:
echo "debian_digest=$debian_digest" >> $GITHUB_OUTPUT
echo "basic_digest=$basic_digest" >> $GITHUB_OUTPUT
- name: Commit and push updated base digests if changed
run: |
git config user.name "${{ secrets.GIT_USERNAME }}"
git config user.email "${{ secrets.GIT_EMAIL }}"
# - name: Commit and push updated base digests if changed
# run: |
# git config user.name "${{ secrets.GIT_USERNAME }}"
# git config user.email "${{ secrets.GIT_EMAIL }}"
changed=false
# changed=false
check_and_update() {
name="$1"
digest="$2"
file=".cache/${name}-base.digest"
if [[ ! -f "$file" ]] || [[ "$(cat "$file")" != "$digest" ]]; then
echo "$digest" > "$file"
echo "[INFO] $name digest changed"
changed=true
else
echo "[INFO] $name digest unchanged"
fi
}
# check_and_update() {
# name="$1"
# digest="$2"
# file=".cache/${name}-base.digest"
# if [[ ! -f "$file" ]] || [[ "$(cat "$file")" != "$digest" ]]; then
# echo "$digest" > "$file"
# echo "[INFO] $name digest changed"
# changed=true
# else
# echo "[INFO] $name digest unchanged"
# fi
# }
check_and_update alpine "${{ steps.get_digest.outputs.alpine_digest }}"
check_and_update debian "${{ steps.get_digest.outputs.debian_digest }}"
check_and_update basic "${{ steps.get_digest.outputs.basic_digest }}"
# check_and_update alpine "${{ steps.get_digest.outputs.alpine_digest }}"
# check_and_update debian "${{ steps.get_digest.outputs.debian_digest }}"
# check_and_update basic "${{ steps.get_digest.outputs.basic_digest }}"
if [ "$changed" = true ]; then
git stash push --include-untracked -m "temp-stash-before-rebase"
git fetch origin main
git rebase origin/main
git stash pop || true
# if [ "$changed" = true ]; then
# git stash push --include-untracked -m "temp-stash-before-rebase"
# git fetch origin main
# git rebase origin/main
# git stash pop || true
git add .cache/*-base.digest
git commit -m "Update base image digests ($(date -u +'%Y-%m-%dT%H:%M:%SZ'))"
git push origin HEAD:main
else
echo "[INFO] No base digest changes to commit."
fi
# git add .cache/*-base.digest
# git commit -m "Update base image digests ($(date -u +'%Y-%m-%dT%H:%M:%SZ'))"
# git push origin HEAD:main
# else
# echo "[INFO] No base digest changes to commit."
# fi
- name: Compare digests and detect changes
id: check
@@ -99,39 +99,67 @@ jobs:
variant=$1
new_digest=$2
digest_file=".cache/${variant}-base.digest"
last_digest=""
base_changed=false
code_changed=false
last_digest=""
if [ -f "$digest_file" ]; then
last_digest=$(cat "$digest_file")
fi
if [ "$last_digest" != "$new_digest" ]; then
base_changed=true
echo "[INFO] $variant base image changed: $last_digest -> $new_digest"
echo "[INFO] $variant base image changed"
echo "should_build_${variant}=true" >> $GITHUB_OUTPUT
else
echo "[INFO] $variant base image unchanged"
echo "should_build_${variant}=false" >> $GITHUB_OUTPUT
fi
# Check if code in the variant directory changed
git fetch origin main
code_diff=$(git diff --name-only origin/main...HEAD | grep "^$variant/" || true)
if [[ -n "$code_diff" ]]; then
code_changed=true
echo "[INFO] $variant code changed: $code_diff"
fi
should_build=false
if [ "$base_changed" = true ] || [ "$code_changed" = true ]; then
should_build=true
fi
echo "should_build_${variant}=$should_build" >> $GITHUB_OUTPUT
echo "${variant}_digest=$new_digest" >> $GITHUB_OUTPUT
}
check_variant "alpine" "${{ steps.get_digest.outputs.alpine_digest }}"
check_variant "debian" "${{ steps.get_digest.outputs.debian_digest }}"
check_variant "basic" "${{ steps.get_digest.outputs.basic_digest }}"
check_variant alpine "${{ steps.get_digest.outputs.alpine_digest }}"
check_variant debian "${{ steps.get_digest.outputs.debian_digest }}"
check_variant basic "${{ steps.get_digest.outputs.basic_digest }}"
# - name: Compare digests and detect changes
# id: check
# run: |
# check_variant() {
# variant=$1
# new_digest=$2
# digest_file=".cache/${variant}-base.digest"
# last_digest=""
# base_changed=false
# code_changed=false
# if [ -f "$digest_file" ]; then
# last_digest=$(cat "$digest_file")
# fi
# if [ "$last_digest" != "$new_digest" ]; then
# base_changed=true
# echo "[INFO] $variant base image changed: $last_digest -> $new_digest"
# fi
# # Check if code in the variant directory changed
# git fetch origin main
# code_diff=$(git diff --name-only origin/main...HEAD | grep "^$variant/" || true)
# if [[ -n "$code_diff" ]]; then
# code_changed=true
# echo "[INFO] $variant code changed: $code_diff"
# fi
# should_build=false
# if [ "$base_changed" = true ] || [ "$code_changed" = true ]; then
# should_build=true
# fi
# echo "should_build_${variant}=$should_build" >> $GITHUB_OUTPUT
# echo "${variant}_digest=$new_digest" >> $GITHUB_OUTPUT
# }
# check_variant "alpine" "${{ steps.get_digest.outputs.alpine_digest }}"
# check_variant "debian" "${{ steps.get_digest.outputs.debian_digest }}"
# check_variant "basic" "${{ steps.get_digest.outputs.basic_digest }}"
build-alpine:
needs: check-for-changes
@@ -205,6 +233,45 @@ jobs:
echo "[INFO] Building $IMAGE"
docker buildx build --platform linux/amd64 --push -t "$IMAGE" --metadata-file "$METAFILE2" ./basic
update-base-digest-cache:
needs:
- build-alpine
- build-debian
- build-basic
runs-on: vm-docker-build2
if: |
needs.build-alpine.outputs.built == 'true' ||
needs.build-debian.outputs.built == 'true' ||
needs.build-basic.outputs.built == 'true'
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Update base digest cache
run: |
git config user.name "${{ secrets.GIT_USERNAME }}"
git config user.email "${{ secrets.GIT_EMAIL }}"
mkdir -p .cache
[[ "${{ needs.build-alpine.outputs.built }}" == "true" ]] && \
echo "${{ needs.check-for-changes.outputs.alpine_digest }}" > .cache/alpine-base.digest
[[ "${{ needs.build-debian.outputs.built }}" == "true" ]] && \
echo "${{ needs.check-for-changes.outputs.debian_digest }}" > .cache/debian-base.digest
[[ "${{ needs.build-basic.outputs.built }}" == "true" ]] && \
echo "${{ needs.check-for-changes.outputs.basic_digest }}" > .cache/basic-base.digest
if git status --porcelain | grep .; then
git add .cache/*-base.digest
git commit -m "Update base image digests ($(date -u +'%Y-%m-%dT%H:%M:%SZ'))"
git push
else
echo "[INFO] No digest updates to commit"
fi
generate-build-info:
needs:
- build-alpine