Compare commits

..

No commits in common. "main" and "v1.0.3" have entirely different histories.
main ... v1.0.3

3 changed files with 61 additions and 73 deletions

View file

@ -105,60 +105,6 @@ jobs:
echo "New version: $NEW_VERSION" echo "New version: $NEW_VERSION"
echo "Current VERSION file: $(cat VERSION 2>/dev/null || echo 'not found')" echo "Current VERSION file: $(cat VERSION 2>/dev/null || echo 'not found')"
- name: Update Version Files
run: |
VERSION="${{ steps.version.outputs.version }}"
TAG="${{ steps.version.outputs.tag }}"
echo "📝 Updating version files to: $VERSION"
# Configure git
git config user.name "forgebot"
git config user.email "forgebot@forgejo.io"
# Fetch latest changes to avoid conflicts
git fetch origin main || echo "Fetch completed or already up to date"
git checkout main || echo "Already on main"
# Update VERSION file
echo "$VERSION" > VERSION
# Update portainer.yml with new version
sed -i "s|\(image: git.jusemon.com/jusemon/threejs-test:\)[0-9.]*|\1$VERSION|" portainer.yml
# Verify the updates
if grep -q "^$VERSION$" VERSION && grep -q "image: git.jusemon.com/jusemon/threejs-test:$VERSION" portainer.yml; then
echo "✅ Successfully updated VERSION and portainer.yml to $VERSION"
else
echo "❌ Failed to update version files"
exit 1
fi
# Check if there are changes to commit
if git diff --quiet VERSION portainer.yml; then
echo "⚠️ No changes to commit (files already up to date)"
echo "VERSION_COMMIT_HASH=$(git rev-parse HEAD)" >> $GITHUB_ENV
else
# Stage and commit with [skip ci] to prevent infinite loop
# Note: Forgejo Actions should respect [skip ci] in commit messages
git add VERSION portainer.yml
git commit -m "chore: update version to $VERSION [skip ci]" || {
echo "⚠️ Commit failed (may already be committed)"
exit 0
}
# Push to main branch (remote should already be configured with token)
git push origin main || {
echo "⚠️ Push failed (check token permissions)"
exit 0
}
# Get the commit hash of the version update commit
VERSION_COMMIT_HASH=$(git rev-parse HEAD)
echo "VERSION_COMMIT_HASH=$VERSION_COMMIT_HASH" >> $GITHUB_ENV
echo "✅ Successfully committed and pushed version update to $VERSION (commit: $VERSION_COMMIT_HASH)"
fi
- name: Build Docker Image - name: Build Docker Image
run: | run: |
VERSION="${{ steps.version.outputs.version }}" VERSION="${{ steps.version.outputs.version }}"
@ -182,24 +128,20 @@ jobs:
VERSION="${{ steps.version.outputs.version }}" VERSION="${{ steps.version.outputs.version }}"
TAG="${{ steps.version.outputs.tag }}" TAG="${{ steps.version.outputs.tag }}"
IMAGE_NAME="git.jusemon.com/jusemon/threejs-test:$VERSION" IMAGE_NAME="git.jusemon.com/jusemon/threejs-test:$VERSION"
# Use the version update commit hash (which has the correct version in files) COMMIT_HASH=$(git rev-parse HEAD)
COMMIT_HASH="${VERSION_COMMIT_HASH:-$(git rev-parse HEAD)}" COMMIT_SHORT=$(git rev-parse --short HEAD)
COMMIT_SHORT=$(git rev-parse --short "$COMMIT_HASH")
BUILD_DATE=$(date -u +"%Y-%m-%d %H:%M:%S UTC") BUILD_DATE=$(date -u +"%Y-%m-%d %H:%M:%S UTC")
# Get commits since last tag, excluding version update commits # Get commits since last tag
LATEST_TAG=$(git describe --tags --match 'v*.*.*' --abbrev=0 2>/dev/null || echo "") LATEST_TAG=$(git describe --tags --match 'v*.*.*' --abbrev=0 2>/dev/null || echo "")
if [[ -n "$LATEST_TAG" ]]; then if [[ -n "$LATEST_TAG" ]]; then
# Get commits excluding "chore: update version" commits (from previous releases) COMMITS=$(git log ${LATEST_TAG}..HEAD --pretty=format:"- %s (%h)" --no-merges)
# We want commits from the tag to the version update commit (exclusive of the version commit itself)
COMMITS=$(git log ${LATEST_TAG}..${COMMIT_HASH}^ --pretty=format:"- %s (%h)" --no-merges | grep -v "chore: update version")
else else
# Get commits excluding version update commits COMMITS=$(git log --pretty=format:"- %s (%h)" --no-merges -10)
COMMITS=$(git log ${COMMIT_HASH}^ --pretty=format:"- %s (%h)" --no-merges -10 | grep -v "chore: update version")
fi fi
# Get author of the version update commit (or HEAD if no version commit) # Get author of the commit
COMMIT_AUTHOR=$(git log -1 --pretty=format:"%an <%ae>" "$COMMIT_HASH") COMMIT_AUTHOR=$(git log -1 --pretty=format:"%an <%ae>")
# Read template and replace placeholders # Read template and replace placeholders
TEMPLATE_FILE=".forgejo/release-template.md" TEMPLATE_FILE=".forgejo/release-template.md"
@ -243,21 +185,67 @@ jobs:
git config user.name "forgejo-actions" git config user.name "forgejo-actions"
git config user.email "forgejo-actions@forgejo.io" git config user.email "forgejo-actions@forgejo.io"
TAG="${{ steps.version.outputs.tag }}" TAG="${{ steps.version.outputs.tag }}"
# Use the version update commit hash (which has the correct version in files)
VERSION_COMMIT="${VERSION_COMMIT_HASH:-$(git rev-parse HEAD)}"
# Check if tag already exists # Check if tag already exists
if git rev-parse "$TAG" >/dev/null 2>&1; then if git rev-parse "$TAG" >/dev/null 2>&1; then
echo "Tag $TAG already exists, skipping tag creation" echo "Tag $TAG already exists, skipping tag creation"
echo "TAG_CREATED=false" >> $GITHUB_ENV echo "TAG_CREATED=false" >> $GITHUB_ENV
else else
# Create tag pointing to the version update commit (which has correct VERSION file) git tag -a "$TAG" -F /tmp/release_message.txt
git tag -a "$TAG" -F /tmp/release_message.txt "$VERSION_COMMIT"
git push origin "$TAG" git push origin "$TAG"
echo "Created tag $TAG pointing to version update commit $VERSION_COMMIT with detailed release notes" echo "Created tag $TAG with detailed release notes"
echo "TAG_CREATED=true" >> $GITHUB_ENV echo "TAG_CREATED=true" >> $GITHUB_ENV
fi fi
- name: Update Version Files
run: |
VERSION="${{ steps.version.outputs.version }}"
TAG="${{ steps.version.outputs.tag }}"
echo "📝 Updating version files to: $VERSION"
# Configure git
git config user.name "forgebot"
git config user.email "forgebot@forgejo.io"
# Fetch latest changes to avoid conflicts
git fetch origin main || echo "Fetch completed or already up to date"
git checkout main || echo "Already on main"
# Update VERSION file
echo "$VERSION" > VERSION
# Update portainer.yml with new version
sed -i "s|\(image: git.jusemon.com/jusemon/threejs-test:\)[0-9.]*|\1$VERSION|" portainer.yml
# Verify the updates
if grep -q "^$VERSION$" VERSION && grep -q "image: git.jusemon.com/jusemon/threejs-test:$VERSION" portainer.yml; then
echo "✅ Successfully updated VERSION and portainer.yml to $VERSION"
else
echo "❌ Failed to update version files"
exit 1
fi
# Check if there are changes to commit
if git diff --quiet VERSION portainer.yml; then
echo "⚠️ No changes to commit (files already up to date)"
else
# Stage and commit with [skip ci] to prevent infinite loop
# Note: Forgejo Actions should respect [skip ci] in commit messages
git add VERSION portainer.yml
git commit -m "chore: update version to $VERSION [skip ci]" || {
echo "⚠️ Commit failed (may already be committed)"
exit 0
}
# Push to main branch (remote should already be configured with token)
git push origin main || {
echo "⚠️ Push failed (check token permissions)"
exit 0
}
echo "✅ Successfully committed and pushed version update to $VERSION"
fi
- name: Job Summary - name: Job Summary
if: success() if: success()
run: | run: |

View file

@ -1 +1 @@
1.0.4 1.0.2

View file

@ -2,7 +2,7 @@ name: threejs-test
services: services:
app: app:
image: git.jusemon.com/jusemon/threejs-test:1.0.4 image: git.jusemon.com/jusemon/threejs-test:1.0.2
restart: unless-stopped restart: unless-stopped
networks: networks: