Files
goldenChart/scripts/jenkins-mobile-pipeline.sh
T
Macbook c840e09885 feat: Android 폰·태블릿 다운로드·앱 내 업데이트 완료
CI에서 APK 버전 자동 bump, 앱 복귀 시 업데이트 확인·시스템 다운로드,
프론트 Android 전용 UI 정리(iPad는 향후).

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-14 17:03:10 +09:00

70 lines
2.6 KiB
Bash
Executable File

#!/usr/bin/env bash
# Jenkins goldenChart-Mobile-Pipeline — Android APK 빌드·배포
set -euo pipefail
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
WORK_TREE="${WORK_TREE:-/Users/aidev/apps/goldenChart}"
export PATH="/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:${PATH:-/usr/bin:/bin}"
for prefix in "$HOME/homebrew" /opt/homebrew; do
[[ -x "$prefix/bin/brew" ]] && eval "$("$prefix/bin/brew" shellenv)"
done
if [[ -z "${ANDROID_HOME:-}" ]]; then
export ANDROID_HOME="/Users/aidev/Library/Android/sdk"
fi
if [[ -z "${JAVA_HOME:-}" ]] && [[ -x "/opt/homebrew/opt/openjdk@21/libexec/openjdk.jdk/Contents/Home/bin/java" ]]; then
export JAVA_HOME="/opt/homebrew/opt/openjdk@21/libexec/openjdk.jdk/Contents/Home"
fi
log() { echo "[mobile-pipeline $(date '+%H:%M:%S')] $*"; }
log "=== goldenChart Mobile Pipeline #${BUILD_NUMBER:-local} ==="
log "WORK_TREE=$WORK_TREE"
cd "$WORK_TREE"
if [[ -d "${GIT_DIR:-/Volumes/ADATA/git/goldenChart.git}" ]]; then
git --git-dir="${GIT_DIR:-/Volumes/ADATA/git/goldenChart.git}" \
--work-tree="$WORK_TREE" checkout -f main 2>/dev/null || true
fi
chmod +x "$ROOT/scripts/"*.sh 2>/dev/null || true
if [[ "${BUMP_VERSION:-}" == "0" ]]; then
log "version bump 스킵 (BUMP_VERSION=0)"
elif [[ -n "${BUILD_NUMBER:-}" && "${MOBILE_BUMP_ON_CI:-1}" == "1" ]]; then
ENV_FILE="$WORK_TREE/.env"
log "CI Android version bump (.env 기준)..."
NEW_VER="$("$ROOT/scripts/bump-android-version.sh")"
log "Android version → $NEW_VER"
elif [[ -n "${BUMP_VERSION:-}" ]]; then
log "CI Android version bump..."
NEW_VER="$("$ROOT/scripts/bump-android-version.sh")"
log "Android version → $NEW_VER"
fi
"$ROOT/scripts/build-mobile-apk.sh"
VERSION_NAME="$(grep -E 'versionName[[:space:]]+"' "$ROOT/app/android/app/build.gradle" | head -1 | sed -E 's/.*versionName[[:space:]]+"([^"]+)".*/\1/' || true)"
if [[ -n "$VERSION_NAME" ]]; then
log "APK version → $VERSION_NAME"
ENV_FILE="$WORK_TREE/.env"
if [[ -f "$ENV_FILE" ]]; then
{ grep -v '^GC_MOBILE_APP_VERSION=' "$ENV_FILE" || true; echo "GC_MOBILE_APP_VERSION=${VERSION_NAME}"; } > "${ENV_FILE}.tmp"
mv "${ENV_FILE}.tmp" "$ENV_FILE"
else
echo "GC_MOBILE_APP_VERSION=${VERSION_NAME}" >> "$ENV_FILE"
fi
fi
if [[ -x "$WORK_TREE/scripts/restart-backend-if-running.sh" ]]; then
WORK_TREE="$WORK_TREE" "$WORK_TREE/scripts/restart-backend-if-running.sh" || true
elif docker compose -f "$WORK_TREE/docker-compose.yml" ps -q backend 2>/dev/null | grep -q .; then
log "backend 재시작 (APK 볼륨 반영)"
(cd "$WORK_TREE" && docker compose up -d --no-deps backend) || true
fi
log "Artifacts: $WORK_TREE/data/mobile-releases/"
log "Pipeline complete."