diff --git a/.forgejo/workflows/publish-and-deploy.yaml b/.forgejo/workflows/publish-and-deploy.yaml index 01c787b..3bf30d3 100644 --- a/.forgejo/workflows/publish-and-deploy.yaml +++ b/.forgejo/workflows/publish-and-deploy.yaml @@ -105,60 +105,6 @@ jobs: echo "New version: $NEW_VERSION" 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 run: | VERSION="${{ steps.version.outputs.version }}" @@ -182,24 +128,20 @@ jobs: VERSION="${{ steps.version.outputs.version }}" TAG="${{ steps.version.outputs.tag }}" IMAGE_NAME="git.jusemon.com/jusemon/threejs-test:$VERSION" - # Use the version update commit hash (which has the correct version in files) - COMMIT_HASH="${VERSION_COMMIT_HASH:-$(git rev-parse HEAD)}" - COMMIT_SHORT=$(git rev-parse --short "$COMMIT_HASH") + 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, excluding version update commits + # Get commits since last tag LATEST_TAG=$(git describe --tags --match 'v*.*.*' --abbrev=0 2>/dev/null || echo "") if [[ -n "$LATEST_TAG" ]]; then - # Get commits excluding "chore: update version" commits (from previous releases) - # 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") + COMMITS=$(git log ${LATEST_TAG}..HEAD --pretty=format:"- %s (%h)" --no-merges) else - # Get commits excluding version update commits - COMMITS=$(git log ${COMMIT_HASH}^ --pretty=format:"- %s (%h)" --no-merges -10 | grep -v "chore: update version") + COMMITS=$(git log --pretty=format:"- %s (%h)" --no-merges -10) fi - # Get author of the version update commit (or HEAD if no version commit) - COMMIT_AUTHOR=$(git log -1 --pretty=format:"%an <%ae>" "$COMMIT_HASH") + # 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" @@ -243,21 +185,67 @@ jobs: git config user.name "forgejo-actions" git config user.email "forgejo-actions@forgejo.io" 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 if git rev-parse "$TAG" >/dev/null 2>&1; then echo "Tag $TAG already exists, skipping tag creation" echo "TAG_CREATED=false" >> $GITHUB_ENV else - # Create tag pointing to the version update commit (which has correct VERSION file) - git tag -a "$TAG" -F /tmp/release_message.txt "$VERSION_COMMIT" + git tag -a "$TAG" -F /tmp/release_message.txt 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 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 if: success() run: | diff --git a/VERSION b/VERSION index ee90284..6d7de6e 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.0.4 +1.0.2 diff --git a/portainer.yml b/portainer.yml index 0a2fb84..e20a5a5 100644 --- a/portainer.yml +++ b/portainer.yml @@ -2,7 +2,7 @@ name: threejs-test services: app: - image: git.jusemon.com/jusemon/threejs-test:1.0.4 + image: git.jusemon.com/jusemon/threejs-test:1.0.2 restart: unless-stopped networks: