From b70fbf7a64bf3f0854fe48368974c6daf83bdf22 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 11 Feb 2025 19:36:08 +0000 Subject: [PATCH 1/7] chore(@tutur3u/supabase): bump version to 0.0.6 --- packages/supabase/.checksum | 2 +- packages/supabase/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/supabase/.checksum b/packages/supabase/.checksum index f5a01f4736..6e4471345d 100644 --- a/packages/supabase/.checksum +++ b/packages/supabase/.checksum @@ -1 +1 @@ -bc9ff7c34b97903033b4f7c841fd9dc3535157330f0d799cbb6bc2cc28df7d5d +3994352638900055380a765c8ef25d559b4566e60fe3944245490f4bbe14e069 diff --git a/packages/supabase/package.json b/packages/supabase/package.json index a1d0f1b3bb..6c8e7f7797 100644 --- a/packages/supabase/package.json +++ b/packages/supabase/package.json @@ -1,7 +1,7 @@ { "name": "@tutur3u/supabase", "license": "MIT", - "version": "0.0.5", + "version": "0.0.6", "publishConfig": { "access": "public" }, From fa4e00f2cae2a1a569d5dd19bbe6e06c07ea1020 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 11 Feb 2025 19:40:25 +0000 Subject: [PATCH 2/7] chore(@tutur3u/supabase): bump version to 0.0.7 --- packages/supabase/.checksum | 2 +- packages/supabase/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/supabase/.checksum b/packages/supabase/.checksum index 6e4471345d..4a876326d9 100644 --- a/packages/supabase/.checksum +++ b/packages/supabase/.checksum @@ -1 +1 @@ -3994352638900055380a765c8ef25d559b4566e60fe3944245490f4bbe14e069 +df5b4e6be50bbd6ed95a95c7b4048180a202f42732addf46f3acc70eae5875dc diff --git a/packages/supabase/package.json b/packages/supabase/package.json index 6c8e7f7797..d860fe627e 100644 --- a/packages/supabase/package.json +++ b/packages/supabase/package.json @@ -1,7 +1,7 @@ { "name": "@tutur3u/supabase", "license": "MIT", - "version": "0.0.6", + "version": "0.0.7", "publishConfig": { "access": "public" }, From b3acd5ea429c461ae66db20cfa4c6893ebf16813 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 11 Feb 2025 19:40:27 +0000 Subject: [PATCH 3/7] chore(@tutur3u/types): bump version to 0.1.5 --- packages/types/.checksum | 2 +- packages/types/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/types/.checksum b/packages/types/.checksum index f72dd84c44..9207aaa721 100644 --- a/packages/types/.checksum +++ b/packages/types/.checksum @@ -1 +1 @@ -923117d60c2cbfe0f6efd185056f81cf9777e2be4aba7ed82cfb87680db9c2d1 +26e833f9763b5c3068ec93e1631e408a8c07f387658a1d73067aef4cf0b95969 diff --git a/packages/types/package.json b/packages/types/package.json index 802162b899..932412e108 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,7 +1,7 @@ { "name": "@tutur3u/types", "license": "MIT", - "version": "0.1.4", + "version": "0.1.5", "publishConfig": { "access": "public" }, From 8c84a640181867751e384ac3b53a0dfdc7ba16f5 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 12 Feb 2025 12:26:08 +0000 Subject: [PATCH 4/7] chore(@tutur3u/supabase): bump version to 0.0.8 --- packages/supabase/.checksum | 2 +- packages/supabase/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/supabase/.checksum b/packages/supabase/.checksum index 4a876326d9..bd5ab8d2e5 100644 --- a/packages/supabase/.checksum +++ b/packages/supabase/.checksum @@ -1 +1 @@ -df5b4e6be50bbd6ed95a95c7b4048180a202f42732addf46f3acc70eae5875dc +9cbf3632188207267fbc27ba24f7b07ce9f26f1887aad1871a089f5ea10d9d30 diff --git a/packages/supabase/package.json b/packages/supabase/package.json index d860fe627e..6c7e0739f9 100644 --- a/packages/supabase/package.json +++ b/packages/supabase/package.json @@ -1,7 +1,7 @@ { "name": "@tutur3u/supabase", "license": "MIT", - "version": "0.0.7", + "version": "0.0.8", "publishConfig": { "access": "public" }, From fd888098a1e11c5ad02ed40affa18ed5870fa9b0 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 12 Feb 2025 12:26:11 +0000 Subject: [PATCH 5/7] chore(@tutur3u/types): bump version to 0.1.6 --- packages/types/.checksum | 2 +- packages/types/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/types/.checksum b/packages/types/.checksum index 9207aaa721..725c2fe0c7 100644 --- a/packages/types/.checksum +++ b/packages/types/.checksum @@ -1 +1 @@ -26e833f9763b5c3068ec93e1631e408a8c07f387658a1d73067aef4cf0b95969 +4dd90552007cb4ed77906f9b79c2fe95752782fac6e16b353b63f02edeb60d8f diff --git a/packages/types/package.json b/packages/types/package.json index 932412e108..05f56527b3 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,7 +1,7 @@ { "name": "@tutur3u/types", "license": "MIT", - "version": "0.1.5", + "version": "0.1.6", "publishConfig": { "access": "public" }, From 5c4ce9a4902cc0b4b4c2fda6f1545cae9edfa1fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=B5=20Ho=C3=A0ng=20Ph=C3=BAc?= Date: Wed, 12 Feb 2025 19:30:57 +0700 Subject: [PATCH 6/7] chore: improve version bump check and update checksum handling --- .../workflows/check-and-bump-versions.yaml | 24 +++++++++++++++---- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/.github/workflows/check-and-bump-versions.yaml b/.github/workflows/check-and-bump-versions.yaml index 1cba867821..3bda1b0ed0 100644 --- a/.github/workflows/check-and-bump-versions.yaml +++ b/.github/workflows/check-and-bump-versions.yaml @@ -269,12 +269,19 @@ jobs: DIFF=$(git diff HEAD~1 HEAD -- package.json) fi - # Count number of changed lines that aren't the version field - NON_VERSION_CHANGES=$(echo "$DIFF" | grep -v '"version":' | grep '^[+-]' | wc -l) + # Extract the changes, excluding whitespace-only changes + CHANGES=$(echo "$DIFF" | grep '^[+-]' | grep -v '^[+-]$' | grep -v '^[+-]\s*$') - # If there are no non-version changes, return true (1) + # Count lines that aren't the version field or the final newline + NON_VERSION_CHANGES=$(echo "$CHANGES" | grep -v '"version":' | grep -v '^[+-]$' | wc -l | tr -d ' ') + + # If there are no non-version changes, return success (0) if [ "$NON_VERSION_CHANGES" -eq 0 ]; then - return 0 + # Double check that version field is the only thing that changed + VERSION_CHANGES=$(echo "$CHANGES" | grep '"version":' | wc -l | tr -d ' ') + if [ "$VERSION_CHANGES" -eq 2 ]; then # One line removed, one line added + return 0 + fi fi return 1 } @@ -299,8 +306,15 @@ jobs: if check_package_json_changes; then echo "Only version field changed in package.json, skipping version bump" SHOULD_BUMP=false + # Update checksum without bumping version + echo "$NEW_CHECKSUM" > .checksum + if [ -n "$(git status --porcelain .checksum)" ]; then + git add .checksum + git commit -m "chore(@tutur3u/${package}): update checksum [skip ci]" + git push origin HEAD + fi else - echo "Package.json has meaningful changes" + echo "Package.json has meaningful changes beyond version" SHOULD_BUMP=true fi else From a7cdbd81c974622050c07c8ebcc7e2a38a3cf18a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=B5=20Ho=C3=A0ng=20Ph=C3=BAc?= Date: Wed, 12 Feb 2025 19:48:11 +0700 Subject: [PATCH 7/7] chore: update dependencies and optimize build process --- .../workflows/check-and-bump-versions.yaml | 201 +++++++++++------- 1 file changed, 126 insertions(+), 75 deletions(-) diff --git a/.github/workflows/check-and-bump-versions.yaml b/.github/workflows/check-and-bump-versions.yaml index 3bda1b0ed0..2842421e9c 100644 --- a/.github/workflows/check-and-bump-versions.yaml +++ b/.github/workflows/check-and-bump-versions.yaml @@ -261,28 +261,44 @@ jobs: echo "• New checksum (${#NEW_CHECKSUM} chars): $NEW_CHECKSUM" echo "• Match status: $([ "$OLD_CHECKSUM" = "$NEW_CHECKSUM" ] && echo "identical" || echo "different")" - # Add function to check if only version changed in package.json + # Enhanced function to check if only version changed in package.json check_package_json_changes() { if [ "${{ github.event_name }}" = "pull_request" ]; then DIFF=$(git diff "${{ github.event.pull_request.base.sha }}" "${{ github.event.pull_request.head.sha }}" -- package.json) else DIFF=$(git diff HEAD~1 HEAD -- package.json) fi + + # If no diff found, return false (changes exist) + if [ -z "$DIFF" ]; then + return 1 + fi + + # First, capture all non-whitespace changes + CHANGES=$(echo "$DIFF" | grep '^[+-]' | grep -v '^[+-]\s*$' | grep -v '^[+-]\s*{*}*$') - # Extract the changes, excluding whitespace-only changes - CHANGES=$(echo "$DIFF" | grep '^[+-]' | grep -v '^[+-]$' | grep -v '^[+-]\s*$') + # Remove any line with just braces, commas, or whitespace + CHANGES=$(echo "$CHANGES" | grep -v '^[+-]\s*[{},]*\s*$') - # Count lines that aren't the version field or the final newline - NON_VERSION_CHANGES=$(echo "$CHANGES" | grep -v '"version":' | grep -v '^[+-]$' | wc -l | tr -d ' ') + # Get all lines except version changes + NON_VERSION_LINES=$(echo "$CHANGES" | grep -v '"version":\s*"[0-9][0-9.]*"' || true) - # If there are no non-version changes, return success (0) - if [ "$NON_VERSION_CHANGES" -eq 0 ]; then - # Double check that version field is the only thing that changed - VERSION_CHANGES=$(echo "$CHANGES" | grep '"version":' | wc -l | tr -d ' ') - if [ "$VERSION_CHANGES" -eq 2 ]; then # One line removed, one line added - return 0 + # If we have no non-version changes + if [ -z "$NON_VERSION_LINES" ]; then + # Verify we have exactly one version removal and one addition + VERSION_LINES=$(echo "$CHANGES" | grep '"version":\s*"[0-9][0-9.]*"' || true) + if [ -n "$VERSION_LINES" ]; then + VERSION_REMOVED=$(echo "$VERSION_LINES" | grep '^-' | wc -l | tr -d ' ') + VERSION_ADDED=$(echo "$VERSION_LINES" | grep '^+' | wc -l | tr -d ' ') + + if [ "$VERSION_REMOVED" -eq 1 ] && [ "$VERSION_ADDED" -eq 1 ]; then + echo "✓ Verified: Only version field was changed" + return 0 + fi fi fi + + echo "✗ Other changes detected besides version" return 1 } @@ -293,7 +309,7 @@ jobs: echo "New package detected, will create initial version" SHOULD_BUMP=true else - # Improved source file detection + # Enhanced source file detection with better filtering if [ "${{ github.event_name }}" = "pull_request" ]; then SOURCE_FILES_CHANGED=$(git diff --name-only "${{ github.event.pull_request.base.sha }}" "${{ github.event.pull_request.head.sha }}" | grep "^packages/$package/" | grep -E "\.(ts|tsx|js|jsx|json|css|scss|md)$" || true) else @@ -303,9 +319,12 @@ jobs: if [ -n "$SOURCE_FILES_CHANGED" ]; then # If only package.json changed, check if it's only version changes if [ "$(echo "$SOURCE_FILES_CHANGED" | wc -l)" -eq 1 ] && [ "$(echo "$SOURCE_FILES_CHANGED" | grep "package.json$")" ]; then + echo "Only package.json changed. Checking if changes are version-only..." if check_package_json_changes; then - echo "Only version field changed in package.json, skipping version bump" + echo "✅ Confirmed: Only version field changed in package.json" + echo "⏭️ Skipping version bump, updating checksum only" SHOULD_BUMP=false + # Update checksum without bumping version echo "$NEW_CHECKSUM" > .checksum if [ -n "$(git status --porcelain .checksum)" ]; then @@ -314,17 +333,18 @@ jobs: git push origin HEAD fi else - echo "Package.json has meaningful changes beyond version" + echo "⚠️ Package.json contains meaningful changes beyond version" SHOULD_BUMP=true fi else - echo "Source files changed:" + echo "Multiple source files changed:" echo "$SOURCE_FILES_CHANGED" SHOULD_BUMP=true fi else - echo "No source files changed" - # Update checksum even if we don't bump version, but only if not on default branch + echo "No relevant source files changed" + SHOULD_BUMP=false + # Update checksum without version bump for PRs if [ "${{ github.event_name }}" = "pull_request" ]; then echo "$NEW_CHECKSUM" > .checksum if [ -n "$(git status --porcelain .checksum)" ]; then @@ -333,90 +353,121 @@ jobs: git push origin HEAD fi fi - SHOULD_BUMP=false fi fi # If changes detected, bump version and create PR if [ "$SHOULD_BUMP" = true ]; then - # Version bump logic and PR creation - NEW_VERSION=$(echo "$CURRENT_VERSION" | awk -F. '{$NF = $NF + 1;} 1' | sed 's/ /./g') - echo "Meaningful changes detected, bumping version to: $NEW_VERSION" + # Enhanced version bump logic with validation + if [[ "$CURRENT_VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then + NEW_VERSION=$(echo "$CURRENT_VERSION" | awk -F. '{$NF = $NF + 1;} 1' | sed 's/ /./g') + echo "📈 Bumping version: $CURRENT_VERSION → $NEW_VERSION" + else + echo "⚠️ Invalid version format: $CURRENT_VERSION" + echo "Using default increment..." + NEW_VERSION="0.0.1" + fi - sed -i "s/\"version\": \"$CURRENT_VERSION\"/\"version\": \"$NEW_VERSION\"/" package.json + # Safely update package.json + if ! sed -i "s/\"version\": \"$CURRENT_VERSION\"/\"version\": \"$NEW_VERSION\"/" package.json; then + echo "❌ Failed to update version in package.json" + exit 1 + fi + + # Update checksum with verification echo "$NEW_CHECKSUM" > .checksum + if [ "$(cat .checksum)" != "$NEW_CHECKSUM" ]; then + echo "❌ Checksum verification failed" + exit 1 + fi + # Create branch with retry mechanism BRANCH_NAME="bump-${package}-${NEW_VERSION}" - git checkout -b "$BRANCH_NAME" + MAX_RETRIES=3 + RETRY_COUNT=0 + + while [ $RETRY_COUNT -lt $MAX_RETRIES ]; do + if git checkout -b "$BRANCH_NAME" 2>/dev/null; then + break + fi + RETRY_COUNT=$((RETRY_COUNT + 1)) + if [ $RETRY_COUNT -lt $MAX_RETRIES ]; then + echo "⚠️ Branch creation failed, attempt $RETRY_COUNT of $MAX_RETRIES" + sleep 2 + else + echo "❌ Failed to create branch after $MAX_RETRIES attempts" + exit 1 + fi + done + # Stage and commit changes git add package.json .checksum git commit -m "chore(@tutur3u/${package}): bump version to ${NEW_VERSION}" - git push origin "$BRANCH_NAME" - - # Create PR with enhanced description - PR_BODY="## 📦 Automated Version Bump

" - if [ -n "$OLD_CHECKSUM" ]; then - if [ "$OLD_CHECKSUM" = "$NEW_CHECKSUM" ]; then - PR_BODY="${PR_BODY}> ✅ **Status:** No changes in package content

" - else - PR_BODY="${PR_BODY}> 🔄 **Status:** Package content modified

" - fi - else - PR_BODY="${PR_BODY}> 🆕 **Status:** New package

" + # Push with error handling + if ! git push origin "$BRANCH_NAME"; then + echo "❌ Failed to push branch" + exit 1 fi - # Add package information summary - SUMMARY="### 📊 Package Information
" - SUMMARY="${SUMMARY}" - SUMMARY="${SUMMARY}" - SUMMARY="${SUMMARY}" - SUMMARY="${SUMMARY}" - SUMMARY="${SUMMARY}
DetailValue
Package@tutur3u/${package}
Current Version${CURRENT_VERSION}
New Version${NEW_VERSION}

" + # Enhanced PR description + PR_BODY="## 📦 Automated Version Bump - PR_BODY="${PR_BODY}${SUMMARY}" + ### Overview + - 📝 Package: \`@tutur3u/${package}\` + - 🔄 Version: \`${CURRENT_VERSION}\` → \`${NEW_VERSION}\` + - 🕒 Updated: $(date -u +"%Y-%m-%d %H:%M UTC") - # Add changed files section - if [ -n "$SOURCE_FILES_CHANGED" ]; then - PR_BODY="${PR_BODY}### 📝 Changed Files
" - PR_BODY="${PR_BODY}
Modified files in this update
" - while IFS= read -r file; do - if [ -n "$file" ]; then - cleaned_path=$(echo "$file" | sed "s|packages/$package/||g") - PR_BODY="${PR_BODY}• \`$cleaned_path\`
" - fi - done <<< "$SOURCE_FILES_CHANGED" - PR_BODY="${PR_BODY}

" - fi + ### Changes +
+ Modified Files - # Add checksum information - PR_BODY="${PR_BODY}### 🔐 Package Integrity
" - PR_BODY="${PR_BODY}
View checksums
" - PR_BODY="${PR_BODY}**New Checksum:**
\`\`\`
$NEW_CHECKSUM
\`\`\`

" + \`\`\`diff" - if [ -n "$OLD_CHECKSUM" ]; then - PR_BODY="${PR_BODY}**Previous Checksum:**
\`\`\`
$OLD_CHECKSUM
\`\`\`
" - if [ "$OLD_CHECKSUM" = "$NEW_CHECKSUM" ]; then - PR_BODY="${PR_BODY}
✅ Checksums match exactly
" - else - PR_BODY="${PR_BODY}
⚠️ Checksums differ
" + while IFS= read -r file; do + if [ -n "$file" ]; then + PR_BODY="${PR_BODY} + + ${file}" fi - else - PR_BODY="${PR_BODY}> 📝 No previous checksum available - new package or first tracking
" - fi - PR_BODY="${PR_BODY}
" + done <<< "$SOURCE_FILES_CHANGED" + + PR_BODY="${PR_BODY} + \`\`\` +
+ + ### Integrity Check +
+ Checksums + + \`\`\` + Previous: ${OLD_CHECKSUM:-N/A} + Current: ${NEW_CHECKSUM} + \`\`\` +
- # Create PR - gh pr create \ + ___ + > 🤖 This PR was automatically generated by the version bump workflow. + > Please review the changes before merging." + + # Create PR with enhanced error handling + if ! gh pr create \ --title "chore(@tutur3u/${package}): bump version to ${NEW_VERSION}" \ --body "$PR_BODY" \ --base "${GITHUB_BASE_REF:-main}" \ --head "$BRANCH_NAME" \ - --repo "$GITHUB_REPOSITORY" || { - echo "Failed to create PR for $BRANCH_NAME. This may be because a PR already exists." - } + --repo "$GITHUB_REPOSITORY" 2>/dev/null; then + + # Check if PR already exists + EXISTING_PR=$(gh pr list --head "$BRANCH_NAME" --json number --jq '.[0].number') + if [ -n "$EXISTING_PR" ]; then + echo "ℹ️ PR already exists (#$EXISTING_PR)" + else + echo "❌ Failed to create PR" + exit 1 + fi + fi else - echo "No meaningful source file changes detected, skipping version bump" + echo "ℹ️ No version bump needed" fi fi