Compare commits
7
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
384bb8eaca | ||
|
|
4b7fdf59fe | ||
|
|
d3417773b8 | ||
|
|
791e9b7c48 | ||
|
|
b37f6936d1 | ||
|
|
2d81ab8f90 | ||
|
|
e44b12f26e |
@@ -1 +0,0 @@
|
||||
gitea.fithwum.tech/fithwum/debian-base@sha256:4023732c1234033dd440901f801b44288d6acd1c2d9db5918b104028dbfbc31a
|
||||
@@ -38,110 +38,9 @@ jobs:
|
||||
echo "[INFO] Pruning Docker images on ${{ matrix.runner }}..."
|
||||
docker image prune -a -f || true
|
||||
|
||||
poll-debian-base-and-detect-changes:
|
||||
runs-on: vm-docker-build2
|
||||
needs: docker-prune
|
||||
outputs:
|
||||
digest_changed: ${{ steps.compare_digest.outputs.changed }}
|
||||
versions_changed: ${{ steps.check_changed_versions.outputs.versions_changed }}
|
||||
new_versions: ${{ steps.check_new_versions.outputs.new_versions }}
|
||||
steps:
|
||||
- name: Checkout repo
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Ensure .cache exists
|
||||
run: mkdir -p .cache && touch .cache/.gitkeep
|
||||
|
||||
- name: Log in to Gitea Registry
|
||||
run: echo "${{ secrets.DOCKER_PASSWORD }}" | docker login gitea.fithwum.tech -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin
|
||||
|
||||
- name: Get current digest of debian-base image
|
||||
id: get_digest
|
||||
run: |
|
||||
IMAGE="${{ env.IMAGE_REGISTRY }}/${{ env.IMAGE_ORG }}/${{ env.IMAGE_REPO_DEBIAN }}:${{ env.IMAGE_TAG_DEBIAN }}"
|
||||
docker pull "$IMAGE" > /dev/null
|
||||
DIGEST=$(docker inspect --format='{{index .RepoDigests 0}}' "$IMAGE")
|
||||
echo "digest=$DIGEST" >> $GITHUB_OUTPUT
|
||||
echo "$DIGEST" > .cache/debian-base.digest.new
|
||||
|
||||
- name: Compare with stored digest
|
||||
id: compare_digest
|
||||
run: |
|
||||
CURRENT_DIGEST="${{ steps.get_digest.outputs.digest }}"
|
||||
LAST_DIGEST="$(cat ${{ env.DIGEST_FILE }} 2>/dev/null || echo '')"
|
||||
|
||||
if [ "$CURRENT_DIGEST" = "$LAST_DIGEST" ]; then
|
||||
echo "[INFO] Digest unchanged"
|
||||
echo "changed=false" >> $GITHUB_OUTPUT
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo "[INFO] Digest changed → updating cache"
|
||||
echo "$CURRENT_DIGEST" > ${{ env.DIGEST_FILE }}
|
||||
|
||||
git config user.name "${{ secrets.GIT_USERNAME }}"
|
||||
git config user.email "${{ secrets.GIT_EMAIL }}"
|
||||
|
||||
git add ${{ env.DIGEST_FILE }}
|
||||
git commit -m "Update base digest to $CURRENT_DIGEST" || true
|
||||
|
||||
# --- Safe rebase with auto conflict resolution ---
|
||||
git fetch origin main
|
||||
if ! git rebase --strategy-option=theirs origin/main; then
|
||||
echo "[WARN] Rebase conflict, auto-resolving by preferring local digest"
|
||||
git rebase --abort
|
||||
git fetch origin main
|
||||
git reset --hard origin/main
|
||||
echo "$CURRENT_DIGEST" > ${{ env.DIGEST_FILE }}
|
||||
git add ${{ env.DIGEST_FILE }}
|
||||
git commit -m "Force-update base digest to $CURRENT_DIGEST (auto-resolved)"
|
||||
fi
|
||||
|
||||
git push origin HEAD:main
|
||||
echo "changed=true" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Detect changed vintage-story versions
|
||||
id: check_changed_versions
|
||||
run: |
|
||||
BEFORE_COMMIT="${{ github.event.before }}"
|
||||
if [ -z "$BEFORE_COMMIT" ] || ! git cat-file -e "$BEFORE_COMMIT^{commit}" 2>/dev/null; then
|
||||
BEFORE_COMMIT=$(git rev-parse HEAD~1)
|
||||
fi
|
||||
CHANGED=$(git diff --name-only "$BEFORE_COMMIT" HEAD || true)
|
||||
CHANGED_VERSIONS=""
|
||||
for version in $VERSIONS; do
|
||||
echo "$CHANGED" | grep -q "^$version/.*\.\(sh\|Dockerfile\)$" && CHANGED_VERSIONS="$CHANGED_VERSIONS $version"
|
||||
done
|
||||
CHANGED_VERSIONS=$(echo "$CHANGED_VERSIONS" | xargs) # trim whitespace
|
||||
echo "versions_changed=$CHANGED_VERSIONS" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Detect vintage-story versions without build-info
|
||||
id: check_new_versions
|
||||
run: |
|
||||
NEW_VERSIONS=""
|
||||
GIT_CREDENTIAL="${{ secrets.GIT_TOKEN || secrets.GIT_PASSWORD }}"
|
||||
git clone --depth=1 "https://${{ secrets.GIT_USERNAME }}:${GIT_CREDENTIAL}@gitea.fithwum.tech/fithwum/vintage-story.git" upload-repo
|
||||
|
||||
for version in $VERSIONS; do
|
||||
if [ ! -f "upload-repo/$version/build-info.json" ]; then
|
||||
echo "[INFO] No build-info.json for $version → treating as new"
|
||||
NEW_VERSIONS="$NEW_VERSIONS $version"
|
||||
fi
|
||||
done
|
||||
|
||||
echo "new_versions=$NEW_VERSIONS" >> $GITHUB_OUTPUT
|
||||
|
||||
build-vintage-story-images:
|
||||
runs-on: vm-docker-build2
|
||||
needs:
|
||||
- docker-prune
|
||||
- poll-debian-base-and-detect-changes
|
||||
if: |
|
||||
needs.poll-debian-base-and-detect-changes.outputs.digest_changed == 'true' ||
|
||||
needs.poll-debian-base-and-detect-changes.outputs.versions_changed != '' ||
|
||||
needs.poll-debian-base-and-detect-changes.outputs.new_versions != ''
|
||||
needs: docker-prune
|
||||
strategy:
|
||||
matrix:
|
||||
version: [latest]
|
||||
|
||||
@@ -38,110 +38,9 @@ jobs:
|
||||
echo "[INFO] Pruning Docker images on ${{ matrix.runner }}..."
|
||||
docker image prune -a -f || true
|
||||
|
||||
poll-debian-base-and-detect-changes:
|
||||
runs-on: vm-docker-build2
|
||||
needs: docker-prune
|
||||
outputs:
|
||||
digest_changed: ${{ steps.compare_digest.outputs.changed }}
|
||||
versions_changed: ${{ steps.check_changed_versions.outputs.versions_changed }}
|
||||
new_versions: ${{ steps.check_new_versions.outputs.new_versions }}
|
||||
steps:
|
||||
- name: Checkout repo
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Ensure .cache exists
|
||||
run: mkdir -p .cache && touch .cache/.gitkeep
|
||||
|
||||
- name: Log in to Gitea Registry
|
||||
run: echo "${{ secrets.DOCKER_PASSWORD }}" | docker login gitea.fithwum.tech -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin
|
||||
|
||||
- name: Get current digest of debian-base image
|
||||
id: get_digest
|
||||
run: |
|
||||
IMAGE="${{ env.IMAGE_REGISTRY }}/${{ env.IMAGE_ORG }}/${{ env.IMAGE_REPO_DEBIAN }}:${{ env.IMAGE_TAG_DEBIAN }}"
|
||||
docker pull "$IMAGE" > /dev/null
|
||||
DIGEST=$(docker inspect --format='{{index .RepoDigests 0}}' "$IMAGE")
|
||||
echo "digest=$DIGEST" >> $GITHUB_OUTPUT
|
||||
echo "$DIGEST" > .cache/debian-base.digest.new
|
||||
|
||||
- name: Compare with stored digest
|
||||
id: compare_digest
|
||||
run: |
|
||||
CURRENT_DIGEST="${{ steps.get_digest.outputs.digest }}"
|
||||
LAST_DIGEST="$(cat ${{ env.DIGEST_FILE }} 2>/dev/null || echo '')"
|
||||
|
||||
if [ "$CURRENT_DIGEST" = "$LAST_DIGEST" ]; then
|
||||
echo "[INFO] Digest unchanged"
|
||||
echo "changed=false" >> $GITHUB_OUTPUT
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo "[INFO] Digest changed → updating cache"
|
||||
echo "$CURRENT_DIGEST" > ${{ env.DIGEST_FILE }}
|
||||
|
||||
git config user.name "${{ secrets.GIT_USERNAME }}"
|
||||
git config user.email "${{ secrets.GIT_EMAIL }}"
|
||||
|
||||
git add ${{ env.DIGEST_FILE }}
|
||||
git commit -m "Update base digest to $CURRENT_DIGEST" || true
|
||||
|
||||
# --- Safe rebase with auto conflict resolution ---
|
||||
git fetch origin main
|
||||
if ! git rebase --strategy-option=theirs origin/main; then
|
||||
echo "[WARN] Rebase conflict, auto-resolving by preferring local digest"
|
||||
git rebase --abort
|
||||
git fetch origin main
|
||||
git reset --hard origin/main
|
||||
echo "$CURRENT_DIGEST" > ${{ env.DIGEST_FILE }}
|
||||
git add ${{ env.DIGEST_FILE }}
|
||||
git commit -m "Force-update base digest to $CURRENT_DIGEST (auto-resolved)"
|
||||
fi
|
||||
|
||||
git push origin HEAD:main
|
||||
echo "changed=true" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Detect changed vintage-story versions
|
||||
id: check_changed_versions
|
||||
run: |
|
||||
BEFORE_COMMIT="${{ github.event.before }}"
|
||||
if [ -z "$BEFORE_COMMIT" ] || ! git cat-file -e "$BEFORE_COMMIT^{commit}" 2>/dev/null; then
|
||||
BEFORE_COMMIT=$(git rev-parse HEAD~1)
|
||||
fi
|
||||
CHANGED=$(git diff --name-only "$BEFORE_COMMIT" HEAD || true)
|
||||
CHANGED_VERSIONS=""
|
||||
for version in $VERSIONS; do
|
||||
echo "$CHANGED" | grep -q "^$version/.*\.\(sh\|Dockerfile\)$" && CHANGED_VERSIONS="$CHANGED_VERSIONS $version"
|
||||
done
|
||||
CHANGED_VERSIONS=$(echo "$CHANGED_VERSIONS" | xargs) # trim whitespace
|
||||
echo "versions_changed=$CHANGED_VERSIONS" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Detect vintage-story versions without build-info
|
||||
id: check_new_versions
|
||||
run: |
|
||||
NEW_VERSIONS=""
|
||||
GIT_CREDENTIAL="${{ secrets.GIT_TOKEN || secrets.GIT_PASSWORD }}"
|
||||
git clone --depth=1 "https://${{ secrets.GIT_USERNAME }}:${GIT_CREDENTIAL}@gitea.fithwum.tech/fithwum/vintage-story.git" upload-repo
|
||||
|
||||
for version in $VERSIONS; do
|
||||
if [ ! -f "upload-repo/$version/build-info.json" ]; then
|
||||
echo "[INFO] No build-info.json for $version → treating as new"
|
||||
NEW_VERSIONS="$NEW_VERSIONS $version"
|
||||
fi
|
||||
done
|
||||
|
||||
echo "new_versions=$NEW_VERSIONS" >> $GITHUB_OUTPUT
|
||||
|
||||
build-vintage-story-images:
|
||||
runs-on: vm-docker-build2
|
||||
needs:
|
||||
- docker-prune
|
||||
- poll-debian-base-and-detect-changes
|
||||
if: |
|
||||
needs.poll-debian-base-and-detect-changes.outputs.digest_changed == 'true' ||
|
||||
needs.poll-debian-base-and-detect-changes.outputs.versions_changed != '' ||
|
||||
needs.poll-debian-base-and-detect-changes.outputs.new_versions != ''
|
||||
needs: docker-prune
|
||||
strategy:
|
||||
matrix:
|
||||
version: [testing]
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
{
|
||||
"version": "latest",
|
||||
"commit": "ed63deec0b6f05adf0c24f5a45590a6d46b4d719",
|
||||
"build_time": "2026-07-28T18:48:03Z",
|
||||
"commit": "bf7e754e81b14116c8c64da4cea285dbb87123bc",
|
||||
"build_time": "2026-07-28T18:55:12Z",
|
||||
"image_tag": "gitea.fithwum.tech/fithwum/vintage-story:latest",
|
||||
"digest": "gitea.fithwum.tech/fithwum/vintage-story@sha256:da5ef4f31635da787248c7065afe1a2e7685cc2123a652d50ac7174c676dfd5e",
|
||||
"digest": "gitea.fithwum.tech/fithwum/vintage-story@sha256:c32c9aa58784c27e1653421d333b596f3f87f53729b17849cd033cb1e275730e",
|
||||
"image_size": "410MB",
|
||||
"image_size_bytes": 430944197
|
||||
"image_size_bytes": 430943709
|
||||
}
|
||||
|
||||
+3
-4
@@ -1,6 +1,5 @@
|
||||
## 2026-07-28T18:55:01Z
|
||||
## 2026-07-29T01:57:03Z
|
||||
|
||||
- update and add testing build (fithwum)
|
||||
- updates (fithwum)
|
||||
- updates (fithwum)
|
||||
- Merge build-info updates (fithwum)
|
||||
- Update build-info on 2026-07-28T18:48:03Z [skip ci] (fithwum)
|
||||
- Merge changelog updates (fithwum)
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"version": "testing",
|
||||
"commit": "2d81ab8f90fd49ded59f6f72482c85ef197fb830",
|
||||
"build_time": "2026-07-28T18:55:15Z",
|
||||
"image_tag": "gitea.fithwum.tech/fithwum/vintage-story:testing",
|
||||
"digest": "gitea.fithwum.tech/fithwum/vintage-story@sha256:db1127041469a4a98fe560d7fbb62be7765de1d8c8b98bc5cc1534fd92d78e93",
|
||||
"image_size": "410MB",
|
||||
"image_size_bytes": 430944198
|
||||
}
|
||||
Reference in New Issue
Block a user