Skip to content

Commit 2d859a7

Browse files
committed
Updated release script
1 parent 45e6116 commit 2d859a7

1 file changed

Lines changed: 53 additions & 0 deletions

File tree

release.sh

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,40 @@ print_error() {
2121
echo -e "${RED}[ERROR]${NC} $1"
2222
}
2323

24+
# Track if release completed successfully
25+
RELEASE_SUCCESSFUL=false
26+
27+
# Trap handler for automatic cleanup on failure
28+
cleanup_on_failure() {
29+
local exit_code=$?
30+
31+
# Only clean up if release failed (non-zero exit) and wasn't successful
32+
if [ $exit_code -ne 0 ] && [ "$RELEASE_SUCCESSFUL" = false ]; then
33+
print_error "Release failed! Rolling back changes..."
34+
35+
# Clean up Maven release artifacts
36+
mvn release:clean 2>/dev/null || true
37+
38+
# Delete release tag if it exists
39+
if [ -n "$RELEASE_TAG" ]; then
40+
git tag -d "$RELEASE_TAG" 2>/dev/null || true
41+
fi
42+
43+
# Switch back to develop branch
44+
git checkout develop 2>/dev/null || true
45+
46+
# Delete release branch if it exists
47+
if [ -n "$RELEASE_BRANCH" ]; then
48+
git branch -D "$RELEASE_BRANCH" 2>/dev/null || true
49+
fi
50+
51+
print_status "Rollback complete. You're back on develop branch."
52+
exit $exit_code
53+
fi
54+
}
55+
56+
trap cleanup_on_failure EXIT
57+
2458
# Check if we're on develop branch
2559
CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD)
2660
if [ "$CURRENT_BRANCH" != "develop" ]; then
@@ -40,6 +74,22 @@ if ! git diff-index --quiet HEAD --; then
4074
exit 1
4175
fi
4276

77+
# Check if GPG is installed and configured
78+
if ! command -v gpg &> /dev/null; then
79+
print_error "GPG is not installed. Maven release requires GPG to sign artifacts."
80+
print_error "Install GPG with: brew install gnupg"
81+
exit 1
82+
fi
83+
84+
# Check if GPG has at least one secret key
85+
if ! gpg --list-secret-keys --keyid-format=long 2>/dev/null | grep -q "sec"; then
86+
print_error "No GPG secret key found. You need a GPG key to sign Maven artifacts."
87+
print_error "Generate one with: gpg --gen-key"
88+
exit 1
89+
fi
90+
91+
print_status "GPG check passed"
92+
4393
# Get current version from pom.xml
4494
CURRENT_VERSION=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout)
4595
print_status "Current version: $CURRENT_VERSION"
@@ -123,6 +173,9 @@ if git ls-remote --heads origin "$RELEASE_BRANCH" | grep -q "$RELEASE_BRANCH"; t
123173
fi
124174
fi
125175

176+
# Mark release as successful to prevent rollback
177+
RELEASE_SUCCESSFUL=true
178+
126179
print_status "Release $RELEASE_VERSION completed successfully!"
127180
print_status "- Master branch contains release version $RELEASE_VERSION"
128181
print_status "- Develop branch contains next development version"

0 commit comments

Comments
 (0)