From 06cce689af5eeefa887a3709d265d812fc40cd4d Mon Sep 17 00:00:00 2001 From: fithwum Date: Sat, 5 Jul 2025 20:43:48 -0700 Subject: [PATCH] test --- .gitea/workflows/base-build.yml | 73 +++++++++++++++++++++++---------- 1 file changed, 52 insertions(+), 21 deletions(-) diff --git a/.gitea/workflows/base-build.yml b/.gitea/workflows/base-build.yml index 9bf3349..424a5da 100644 --- a/.gitea/workflows/base-build.yml +++ b/.gitea/workflows/base-build.yml @@ -126,37 +126,41 @@ jobs: uses: actions/checkout@v3 - name: Clone upload repo - run: git clone "${{ env.REPO_URL }}" upload-repo + run: git clone https://${{ secrets.GIT_USERNAME }}:${{ secrets.GIT_TOKEN }}@gitea.fithwum.tech/fithwum/debian-base.git upload-repo - - name: Set authenticated remote URL + - name: Generate per-version changelogs run: | cd upload-repo - git remote set-url origin https://${{ env.GIT_USERNAME }}:${{ secrets.GIT_TOKEN }}@gitea.fithwum.tech/fithwum/debian-base.git - - - name: Generate CHANGES.md files - run: | - cd upload-repo - for version in buster bullseye bookworm docker-build; do - echo "[INFO] Processing $version" + echo "[INFO] Updating changelog for $version" - mkdir -p "$version" changelog="$version/CHANGES.md" + mkdir -p "$(dirname "$changelog")" touch "$changelog" + infofile="$version/build-info.json" + last_commit="" + if [ -f "$infofile" ]; then + last_commit=$(jq -r '.commit' "$infofile") + fi + echo -e "\n## $(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> "$changelog" - git log -n 5 --pretty=format:"- %s (%an)" >> "$changelog" + if [ -n "$last_commit" ]; then + git log "${last_commit}..HEAD" --pretty=format:"- %s (%an)" | head -n 10 >> "$changelog" + else + git log -n 10 --pretty=format:"- %s (%an)" >> "$changelog" + fi done - name: Commit and push changelogs if changed run: | cd upload-repo - git config --global user.name "${{ env.GIT_USERNAME }}" - git config --global user.email "${{ env.GIT_EMAIL }}" + git config user.name "${{ secrets.GIT_USERNAME }}" + git config user.email "${{ secrets.GIT_EMAIL }}" if git status --porcelain | grep .; then git add */CHANGES.md - git commit -m "Update changelogs on $(date -u +'%Y-%m-%dT%H:%M:%SZ')" + git commit -m "Update changelogs on $(date -u +'%Y-%m-%dT%H:%M:%SZ')" --no-verify git push else echo "[INFO] No changelog changes to commit." @@ -174,19 +178,35 @@ jobs: run: | git clone "https://${{ secrets.GIT_USERNAME }}:${{ secrets.GIT_TOKEN }}@gitea.fithwum.tech/fithwum/debian-base.git" upload-repo - - name: Generate build-info.json per version + - name: Generate build-info.json per version with digest run: | cd upload-repo + for version in buster bullseye bookworm docker-build; do echo "[INFO] Generating build-info.json for $version" + + # Try to get digest from Docker registry for the pushed image + IMAGE="gitea.fithwum.tech/fithwum/debian-base:$version" + + # Pull metadata with buildx imagetools inspect (you can also use docker inspect or API) + DIGEST=$(docker buildx imagetools inspect "$IMAGE" --raw | jq -r '.manifests[0].digest' 2>/dev/null || echo "unknown") + mkdir -p "$version" infofile="$version/build-info.json" - echo "{" > "$infofile" - echo " \"version\": \"$version\"," >> "$infofile" - echo " \"commit\": \"$(git rev-parse HEAD)\"," >> "$infofile" - echo " \"build_time\": \"$(date -u +'%Y-%m-%dT%H:%M:%SZ')\"," >> "$infofile" - echo " \"image_tag\": \"gitea.fithwum.tech/fithwum/debian-base:$version\"" >> "$infofile" - echo "}" >> "$infofile" + + jq -n \ + --arg version "$version" \ + --arg commit "$(git rev-parse HEAD)" \ + --arg build_time "$(date -u +'%Y-%m-%dT%H:%M:%SZ')" \ + --arg image_tag "$IMAGE" \ + --arg digest "$DIGEST" \ + '{ + version: $version, + commit: $commit, + build_time: $build_time, + image_tag: $image_tag, + image_digest: $digest + }' > "$infofile" done - name: Commit and push build-info if changed @@ -199,6 +219,17 @@ jobs: git add */build-info.json git commit -m "Update build-info on $(date -u +'%Y-%m-%dT%H:%M:%SZ')" git push + + # Tag the commit for each version + for version in buster bullseye bookworm docker-build; do + TAG="build-$version" + # Delete local tag if exists + git tag -d "$TAG" 2>/dev/null || true + # Create tag on current HEAD + git tag "$TAG" + # Push tag to remote (force in case tag exists) + git push origin "$TAG" --force + done else echo "[INFO] No build-info changes to commit." fi \ No newline at end of file