-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdeploy.sh
More file actions
executable file
·116 lines (95 loc) · 3.79 KB
/
deploy.sh
File metadata and controls
executable file
·116 lines (95 loc) · 3.79 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
104
105
106
107
108
109
110
111
112
113
114
115
116
#!/bin/bash
set -e
echo "🚀 Bootpay Android SDK 배포 시작..."
echo "========================================"
# 프로젝트 루트로 이동
cd "$(dirname "$0")"
# publish.gradle에서 버전 정보 읽기
PUBLISH_VERSION=$(grep "PUBLISH_VERSION = " publish.gradle | sed 's/.*PUBLISH_VERSION = '\''\(.*\)'\''/\1/')
PUBLISH_GROUP_ID=$(grep "PUBLISH_GROUP_ID = " publish.gradle | sed 's/.*PUBLISH_GROUP_ID = '\''\(.*\)'\''/\1/')
PUBLISH_ARTIFACT_ID=$(grep "PUBLISH_ARTIFACT_ID = " publish.gradle | sed 's/.*PUBLISH_ARTIFACT_ID = '\''\(.*\)'\''/\1/')
echo "📋 배포 정보:"
echo " Group ID: $PUBLISH_GROUP_ID"
echo " Artifact ID: $PUBLISH_ARTIFACT_ID"
echo " Version: $PUBLISH_VERSION"
echo "========================================"
echo "📦 Step 1: 기존 빌드 정리..."
rm -rf core/build/repo
rm -f android-bundle.zip
echo "📦 Step 2: 새로운 publication 생성..."
./gradlew core:publishReleasePublicationToLocalRepoRepository
echo "📦 Step 3: 번들 생성..."
cd core/build/repo
zip -r ../../../android-bundle.zip \
${PUBLISH_GROUP_ID//.//}/${PUBLISH_ARTIFACT_ID}/${PUBLISH_VERSION}/
cd ../../../
echo "✅ 번들 생성 완료: $(ls -lh android-bundle.zip)"
echo "🔐 Step 4: 인증 정보 설정..."
OSSRH_USERNAME="i4oDa5"
OSSRH_PASSWORD="uh9Wgv6DYCHET2H8M2XLDIKnP82Eigtdz"
BEARER_TOKEN=$(echo -n "${OSSRH_USERNAME}:${OSSRH_PASSWORD}" | base64)
echo "⬆️ Step 5: Central Portal에 업로드..."
DEPLOYMENT_ID=$(curl --silent --request POST \
--header "Authorization: Bearer ${BEARER_TOKEN}" \
--form bundle=@android-bundle.zip \
https://central.sonatype.com/api/v1/publisher/upload)
if [ -z "$DEPLOYMENT_ID" ]; then
echo "❌ 업로드 실패!"
exit 1
fi
echo "✅ 업로드 성공!"
echo "📋 Deployment ID: $DEPLOYMENT_ID"
echo "⏳ Step 6: 배포 상태 확인 중..."
sleep 5
echo "📊 Step 7: 상태 조회..."
STATUS_RESPONSE=$(curl --silent --request POST \
--header "Authorization: Bearer ${BEARER_TOKEN}" \
"https://central.sonatype.com/api/v1/publisher/status?id=${DEPLOYMENT_ID}")
echo "📄 배포 상태:"
echo "$STATUS_RESPONSE" | jq .
# 상태 확인
DEPLOYMENT_STATE=$(echo "$STATUS_RESPONSE" | jq -r '.deploymentState')
echo ""
echo "========================================"
echo "🎯 현재 상태: $DEPLOYMENT_STATE"
case $DEPLOYMENT_STATE in
"PENDING")
echo "⏳ 검증 대기 중입니다."
;;
"VALIDATING")
echo "🔍 검증 진행 중입니다."
;;
"VALIDATED")
echo "✅ 검증 완료! 수동 배포가 필요합니다."
echo "🚀 자동 배포를 시도합니다..."
PUBLISH_RESPONSE=$(curl --silent --request POST \
--header "Authorization: Bearer ${BEARER_TOKEN}" \
--write-out "HTTPSTATUS:%{http_code}" \
"https://central.sonatype.com/api/v1/publisher/deployment/${DEPLOYMENT_ID}")
HTTP_STATUS=$(echo $PUBLISH_RESPONSE | grep -o "HTTPSTATUS:[0-9]*" | cut -d: -f2)
if [ "$HTTP_STATUS" -eq "204" ]; then
echo "🎉 배포 시작됨! Maven Central에 곧 반영됩니다."
else
echo "⚠️ 수동 배포 실패. Central Portal에서 수동으로 배포하세요."
fi
;;
"PUBLISHING")
echo "🚀 Maven Central에 배포 중입니다."
;;
"PUBLISHED")
echo "🎉 배포 완료! Maven Central에서 사용 가능합니다."
;;
"FAILED")
echo "❌ 배포 실패!"
echo "🔍 오류 내용:"
echo "$STATUS_RESPONSE" | jq '.errors'
;;
*)
echo "❓ 알 수 없는 상태: $DEPLOYMENT_STATE"
;;
esac
echo ""
echo "========================================"
echo "🌐 Central Portal 확인: https://central.sonatype.com/"
echo "📋 Deployment ID: $DEPLOYMENT_ID"
echo "🏁 스크립트 완료!"