This is an automated email from the ASF dual-hosted git repository. wusheng pushed a commit to branch fix/pre-release-skip-snapshot-bump in repository https://gitbox.apache.org/repos/asf/skywalking-graalvm-distro.git
commit 89ad9857e5507c5cdce9438b6c282f445f4acf53 Author: Wu Sheng <[email protected]> AuthorDate: Tue Mar 17 20:28:29 2026 +0800 Fix release scripts when main already has next SNAPSHOT version --- release/full-release.sh | 65 +++++++++++++++++++++++++++++++------------------ release/pre-release.sh | 42 ++++++++++++++++++++------------ 2 files changed, 68 insertions(+), 39 deletions(-) diff --git a/release/full-release.sh b/release/full-release.sh index d1aee1f..6bc9805 100755 --- a/release/full-release.sh +++ b/release/full-release.sh @@ -76,49 +76,66 @@ echo "" "${SCRIPT_DIR}/pre-release.sh" # ─── Step 3: Extract versions from what pre-release.sh created ─────────────── -# After pre-release.sh: HEAD is "Bump version to X.Y.Z-SNAPSHOT", HEAD~1 is tagged "Release X.Y.Z" +# After pre-release.sh, find the tag that was just created. +# If main already had the next SNAPSHOT version, HEAD was not changed; +# otherwise HEAD is the "Bump version to X.Y.Z-SNAPSHOT" commit. NEXT_VERSION=$(sed -n 's/.*<version>\(.*\)<\/version>.*/\1/p' "${REPO_ROOT}/pom.xml" | head -1) -TAG=$(git describe --tags --abbrev=0 HEAD~1) + +# Find the most recent release tag reachable from the release branch +# The tag is always on the release branch, not necessarily on main +LATEST_RELEASE_BRANCH=$(git branch --list 'release/v*' --sort=-creatordate | head -1 | tr -d ' ') +TAG=$(git describe --tags --abbrev=0 "${LATEST_RELEASE_BRANCH}") RELEASE_VERSION="${TAG#v}" -SNAPSHOT_BRANCH="version/${NEXT_VERSION}" log "Detected: release=${RELEASE_VERSION}, tag=${TAG}, next=${NEXT_VERSION}" -# ─── Step 4: Move snapshot commit to PR branch ────────────────────────────── -# Current state: main has [Release X.Y.Z] -> [Bump version to X.Y.Z-SNAPSHOT] -# We want: main stays at [Release X.Y.Z], PR branch has [Bump version to X.Y.Z-SNAPSHOT] +# ─── Step 4: Handle snapshot version bump on main ──────────────────────────── +# Check if pre-release.sh created a snapshot bump commit on main +HEAD_MSG=$(git log -1 --format=%s) -log "Moving snapshot commit to branch ${SNAPSHOT_BRANCH}..." +if [[ "${HEAD_MSG}" == "Bump version to ${NEXT_VERSION}" ]]; then + # Main has a new snapshot bump commit — move it to a PR branch + SNAPSHOT_BRANCH="version/${NEXT_VERSION}" + log "Moving snapshot commit to branch ${SNAPSHOT_BRANCH}..." -# Create PR branch from current HEAD (which includes the snapshot bump) -git checkout -b "${SNAPSHOT_BRANCH}" + git checkout -b "${SNAPSHOT_BRANCH}" + git checkout main + git reset --hard "${TAG}" -# Reset main back to the release commit (the tagged one) -git checkout main -git reset --hard "${TAG}" + NEEDS_SNAPSHOT_PR=true +else + # Main already had the correct SNAPSHOT version — no bump needed + log "Main already at ${NEXT_VERSION} — no version bump PR needed" + NEEDS_SNAPSHOT_PR=false +fi -# ─── Step 5: Push tag and PR branch ───────────────────────────────────────── +# ─── Step 5: Push tag (and PR branch if needed) ───────────────────────────── log "Pushing tag ${TAG}..." git push origin "${TAG}" -log "Pushing branch ${SNAPSHOT_BRANCH}..." -git push -u origin "${SNAPSHOT_BRANCH}" +log "Pushing release branch ${LATEST_RELEASE_BRANCH}..." +git push origin "${LATEST_RELEASE_BRANCH}" + +if [[ "${NEEDS_SNAPSHOT_PR}" == "true" ]]; then + log "Pushing branch ${SNAPSHOT_BRANCH}..." + git push -u origin "${SNAPSHOT_BRANCH}" -log "Creating PR for version bump..." -PR_URL=$(gh pr create \ - --repo "${REPO}" \ - --title "Bump version to ${NEXT_VERSION}" \ - --body "$(cat <<EOF + log "Creating PR for version bump..." + PR_URL=$(gh pr create \ + --repo "${REPO}" \ + --title "Bump version to ${NEXT_VERSION}" \ + --body "$(cat <<EOF Automated version bump after release ${RELEASE_VERSION}. - Bumps all pom.xml from \`${RELEASE_VERSION}\` to \`${NEXT_VERSION}\` - Created by \`release/full-release.sh\` EOF )" \ - --base main \ - --head "${SNAPSHOT_BRANCH}" \ - 2>&1) -log "PR created: ${PR_URL}" + --base main \ + --head "${SNAPSHOT_BRANCH}" \ + 2>&1) + log "PR created: ${PR_URL}" +fi # ─── Step 6: Wait for CI on tag ────────────────────────────────────────────── log "Waiting for CI workflow on tag ${TAG}..." diff --git a/release/pre-release.sh b/release/pre-release.sh index 4a64187..e840270 100755 --- a/release/pre-release.sh +++ b/release/pre-release.sh @@ -107,17 +107,23 @@ git tag "v${RELEASE_VERSION}" log "Switching back to main..." git checkout main -log "Bumping version to ${NEXT_VERSION}..." - -find "${REPO_ROOT}" -name pom.xml -not -path '*/skywalking/*' \ - -exec sed -i '' "s/${CURRENT_VERSION}/${NEXT_VERSION}/g" {} \; - -VERIFY_VERSION=$(sed -n 's/.*<version>\(.*\)<\/version>.*/\1/p' "${REPO_ROOT}/pom.xml" | head -1) -[[ "${VERIFY_VERSION}" == "${NEXT_VERSION}" ]] || error "Version bump failed. pom.xml shows '${VERIFY_VERSION}'" - -log "Committing next development version..." -git add $(find . -name pom.xml -not -path '*/skywalking/*') -git commit -m "Bump version to ${NEXT_VERSION}" +MAIN_NEEDS_BUMP=true +if [[ "${CURRENT_VERSION}" == "${NEXT_VERSION}" ]]; then + log "Main already at ${NEXT_VERSION} — skipping version bump" + MAIN_NEEDS_BUMP=false +else + log "Bumping version to ${NEXT_VERSION}..." + + find "${REPO_ROOT}" -name pom.xml -not -path '*/skywalking/*' \ + -exec sed -i '' "s/${CURRENT_VERSION}/${NEXT_VERSION}/g" {} \; + + VERIFY_VERSION=$(sed -n 's/.*<version>\(.*\)<\/version>.*/\1/p' "${REPO_ROOT}/pom.xml" | head -1) + [[ "${VERIFY_VERSION}" == "${NEXT_VERSION}" ]] || error "Version bump failed. pom.xml shows '${VERIFY_VERSION}'" + + log "Committing next development version..." + git add $(find . -name pom.xml -not -path '*/skywalking/*') + git commit -m "Bump version to ${NEXT_VERSION}" +fi # ─── Summary ───────────────────────────────────────────────────────────────── echo "" @@ -127,13 +133,19 @@ echo "Created:" echo " - Branch: ${RELEASE_BRANCH}" echo " - Commit: Release ${RELEASE_VERSION}" echo " - Tag: v${RELEASE_VERSION}" -echo " - On main:" -echo " - Commit: Bump version to ${NEXT_VERSION}" +if [[ "${MAIN_NEEDS_BUMP}" == "true" ]]; then + echo " - On main:" + echo " - Commit: Bump version to ${NEXT_VERSION}" +else + echo " - Main: already at ${NEXT_VERSION} (no changes)" +fi echo "" echo "Next steps:" -echo " 1. Review: git log --oneline -2 && git log --oneline ${RELEASE_BRANCH} -1" +echo " 1. Review: git log --oneline ${RELEASE_BRANCH} -1" echo " 2. Push tag: git push origin v${RELEASE_VERSION}" echo " 3. Push release: git push origin ${RELEASE_BRANCH}" -echo " 4. Push main: git push origin main" +if [[ "${MAIN_NEEDS_BUMP}" == "true" ]]; then + echo " 4. Push main: git push origin main" +fi echo " 5. Wait for CI release workflow to complete" echo " 6. Run: release/release.sh ${RELEASE_VERSION}"
