-
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdeploy_github.sh
More file actions
103 lines (82 loc) · 2.73 KB
/
deploy_github.sh
File metadata and controls
103 lines (82 loc) · 2.73 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#!/bin/bash
set -e
# deploy_github.sh - Automates Build, Secrets, and Deployment
# 0. Ensure Secrets are Generated & Synced
if [ -f "./generate_secrets.sh" ]; then
echo "🔐 Syncing Secrets..."
./generate_secrets.sh
else
echo "⚠️ generate_secrets.sh not found. Skipping secrets sync."
fi
# 1. Argument Parsing
IS_FIRST_RELEASE=false
COMMIT_MSG=""
ARGS_FLAGS=""
if [ "$1" == "--first" ]; then
IS_FIRST_RELEASE=true
COMMIT_MSG="$2"
shift 2
ARGS_FLAGS="$@" # Capture remaining flags
else
COMMIT_MSG="$1"
shift 1
ARGS_FLAGS="$@"
fi
if [ -z "$COMMIT_MSG" ]; then
echo "❌ Error: Commit message is required!"
echo "Usage: ./deploy_github.sh \"your commit message\" [flags]"
echo " ./deploy_github.sh --first \"v1.0.0 Initial Release\""
exit 1
fi
BRANCH=$(git rev-parse --abbrev-ref HEAD)
echo "========================================"
echo "🚀 Starting Deployment for $BRANCH"
echo "========================================"
# 2. Build Check
echo "🛠️ Running Build..."
./gradlew assembleDebug
# 3. Deployment Logic
if [ "$IS_FIRST_RELEASE" = true ]; then
echo "☢️ FIRST RELEASE DETECTED: Nuking Git History..."
# 3a. Reset Changelog to single entry
echo "# Changelog" > CHANGELOG.md
echo "" >> CHANGELOG.md
echo "## $(date +%Y-%m-%d) - Initial Release" >> CHANGELOG.md
echo "- $COMMIT_MSG" >> CHANGELOG.md
echo "✅ CHANGELOG.md reset."
echo "📸 Creating Fresh Root Commit..."
# 3b. Orphan Branch Strategy to Nuke History
# Create new orphan branch (clean history)
git checkout --orphan temp_root_branch
# Add all files (respecting .gitignore)
git add -A
# Commit
git commit -m "$COMMIT_MSG"
# Delete old main
git branch -D main
# Rename current to main
git branch -m main
echo "⬆️ Force Pushing Clean History to origin/main..."
git push -f origin main
echo "✅ HISTORY ERASED. Project successfully reset to single commit."
exit 0
else
# 4. Standard Deployment (Append History)
if [[ -n $(git status --porcelain) ]] || [[ "$ARGS_FLAGS" == *"--amend"* ]]; then
echo "📸 Committing changes..."
git add .
if [[ "$ARGS_FLAGS" == *"--amend"* ]]; then
echo "⚠️ Amending previous commit..."
git commit --amend -m "$COMMIT_MSG"
echo "⬆️ Force Pushing to origin/$BRANCH..."
git push origin "$BRANCH" --force
else
git commit -m "$COMMIT_MSG"
echo "⬆️ Pushing to origin/$BRANCH..."
git push origin "$BRANCH"
fi
echo "✅ Deployed successfully!"
else
echo "✨ No changes to commit."
fi
fi