From 3ac719cfb190c533b22bb681bbcb239780104627 Mon Sep 17 00:00:00 2001 From: Juan Sebastian Montoya Date: Tue, 25 Nov 2025 17:31:18 -0500 Subject: [PATCH] Add release notes template with enhanced tag information --- .forgejo/release-template.md | 24 ++++++++++++++ .forgejo/workflows/ci.yaml | 63 +++++++++++++++++++++++++++++++++++- 2 files changed, 86 insertions(+), 1 deletion(-) create mode 100644 .forgejo/release-template.md diff --git a/.forgejo/release-template.md b/.forgejo/release-template.md new file mode 100644 index 0000000..d1c2326 --- /dev/null +++ b/.forgejo/release-template.md @@ -0,0 +1,24 @@ +Release {{VERSION}} + +Docker Image: {{IMAGE_NAME}} +Commit: {{COMMIT_SHORT}} ({{COMMIT_HASH}}) +Build Date: {{BUILD_DATE}} +Author: {{COMMIT_AUTHOR}} + +## Changes + +{{COMMITS}} + +## Docker Image + +``` +docker pull {{IMAGE_NAME}} +``` + +## Deployment + +The image is also available as `latest`: +``` +docker pull git.jusemon.com/jusemon/threejs-test:latest +``` + diff --git a/.forgejo/workflows/ci.yaml b/.forgejo/workflows/ci.yaml index d3be3cf..2689a1e 100644 --- a/.forgejo/workflows/ci.yaml +++ b/.forgejo/workflows/ci.yaml @@ -16,6 +16,16 @@ jobs: - name: Checkout uses: actions/checkout@v4 + - name: Check Docker availability + run: | + set -e + docker --version + docker info + + - name: Setup Docker Buildx + run: | + docker buildx create --use || true + - name: Build Docker Image run: | docker build -t threejs-test:test . @@ -38,6 +48,16 @@ jobs: with: fetch-depth: 0 # Fetch all history for tags + - name: Check Docker availability + run: | + set -e + docker --version + docker info + + - name: Setup Docker Buildx + run: | + docker buildx create --use || true + - name: Login to Registry run: | echo "${{ secrets.REGISTRY_PASSWORD }}" | docker login git.jusemon.com -u "${{ secrets.REGISTRY_USERNAME }}" --password-stdin @@ -85,6 +105,46 @@ jobs: docker tag "$IMAGE_NAME" "git.jusemon.com/jusemon/threejs-test:latest" docker push "git.jusemon.com/jusemon/threejs-test:latest" + - name: Generate Release Notes + id: release_notes + run: | + VERSION="${{ steps.version.outputs.version }}" + TAG="${{ steps.version.outputs.tag }}" + IMAGE_NAME="git.jusemon.com/jusemon/threejs-test:$VERSION" + COMMIT_HASH=$(git rev-parse HEAD) + COMMIT_SHORT=$(git rev-parse --short HEAD) + BUILD_DATE=$(date -u +"%Y-%m-%d %H:%M:%S UTC") + + # Get commits since last tag + LATEST_TAG=$(git describe --tags --match 'v*.*.*' --abbrev=0 2>/dev/null || echo "") + if [[ -n "$LATEST_TAG" ]]; then + COMMITS=$(git log ${LATEST_TAG}..HEAD --pretty=format:"- %s (%h)" --no-merges) + else + COMMITS=$(git log --pretty=format:"- %s (%h)" --no-merges -10) + fi + + # Get author of the commit + COMMIT_AUTHOR=$(git log -1 --pretty=format:"%an <%ae>") + + # Read template and replace placeholders + TEMPLATE_FILE=".forgejo/release-template.md" + if [[ ! -f "$TEMPLATE_FILE" ]]; then + echo "Error: Template file not found: $TEMPLATE_FILE" + exit 1 + fi + + # Replace placeholders in template + sed -e "s|{{VERSION}}|$VERSION|g" \ + -e "s|{{IMAGE_NAME}}|$IMAGE_NAME|g" \ + -e "s|{{COMMIT_HASH}}|$COMMIT_HASH|g" \ + -e "s|{{COMMIT_SHORT}}|$COMMIT_SHORT|g" \ + -e "s|{{BUILD_DATE}}|$BUILD_DATE|g" \ + -e "s|{{COMMIT_AUTHOR}}|$COMMIT_AUTHOR|g" \ + -e "s|{{COMMITS}}|$COMMITS|g" \ + "$TEMPLATE_FILE" > /tmp/release_message.txt + + echo "Release notes generated from template" + - name: Create Git Tag run: | git config user.name "forgejo-actions" @@ -94,7 +154,8 @@ jobs: if git rev-parse "$TAG" >/dev/null 2>&1; then echo "Tag $TAG already exists, skipping tag creation" else - git tag -a "$TAG" -m "Release ${{ steps.version.outputs.version }}" + git tag -a "$TAG" -F /tmp/release_message.txt git push origin "$TAG" + echo "Created tag $TAG with detailed release notes" fi