feat: Phase 1 mobile tablet — Jenkins APK, PC tab, in-app update
Capacitor 확장으로 git push 시 Mobile Jenkins 빌드, PC 탭 Android/iPad 다운로드, 앱 내 APK 업데이트, iOS TestFlight API 및 Capacitor ios 프로젝트를 추가한다. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -15,4 +15,8 @@ public class MobileAppReleaseInfoDto {
|
||||
private String downloadUrl;
|
||||
/** 모바일 설치 안내 페이지 URL */
|
||||
private String installPageUrl;
|
||||
/** iPad TestFlight 초대 URL (App Store 정책상 ipa 직접 배포 불가) */
|
||||
private String iosTestFlightUrl;
|
||||
/** TestFlight 링크 제공 여부 */
|
||||
private boolean iosAvailable;
|
||||
}
|
||||
|
||||
@@ -36,13 +36,19 @@ public class MobileAppReleaseService {
|
||||
@Value("${goldenchart.mobile-app.public-base-url:}")
|
||||
private String configuredPublicBaseUrl;
|
||||
|
||||
@Value("${goldenchart.mobile-app.ios-testflight-url:}")
|
||||
private String iosTestFlightUrl;
|
||||
|
||||
public MobileAppReleaseInfoDto getInfo(String requestBaseUrl) {
|
||||
String publicBaseUrl = resolvePublicBaseUrl(requestBaseUrl);
|
||||
boolean iosAvailable = iosTestFlightUrl != null && !iosTestFlightUrl.isBlank();
|
||||
Optional<Path> apk = resolveApkPath();
|
||||
if (apk.isEmpty()) {
|
||||
return MobileAppReleaseInfoDto.builder()
|
||||
.available(false)
|
||||
.installPageUrl(buildInstallPageUrl(publicBaseUrl))
|
||||
.iosAvailable(iosAvailable)
|
||||
.iosTestFlightUrl(iosAvailable ? iosTestFlightUrl.trim() : null)
|
||||
.build();
|
||||
}
|
||||
Path file = apk.get();
|
||||
@@ -61,12 +67,16 @@ public class MobileAppReleaseService {
|
||||
.updatedAt(DT_FMT.format(updated))
|
||||
.downloadUrl(downloadUrl)
|
||||
.installPageUrl(buildInstallPageUrl(publicBaseUrl))
|
||||
.iosAvailable(iosAvailable)
|
||||
.iosTestFlightUrl(iosAvailable ? iosTestFlightUrl.trim() : null)
|
||||
.build();
|
||||
} catch (IOException e) {
|
||||
log.warn("[mobile-app] stat failed: {}", e.getMessage());
|
||||
return MobileAppReleaseInfoDto.builder()
|
||||
.available(false)
|
||||
.installPageUrl(buildInstallPageUrl(publicBaseUrl))
|
||||
.iosAvailable(iosAvailable)
|
||||
.iosTestFlightUrl(iosAvailable ? iosTestFlightUrl.trim() : null)
|
||||
.build();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -112,6 +112,14 @@ goldenchart:
|
||||
version: ${GC_MOBILE_APP_VERSION:}
|
||||
# QR·APK 다운로드 절대 URL (로컬 개발 시에도 exdev 서버 APK 사용)
|
||||
public-base-url: ${GC_MOBILE_APP_PUBLIC_BASE_URL:http://exdev.co.kr}
|
||||
ios-testflight-url: ${GC_MOBILE_APP_IOS_TESTFLIGHT_URL:}
|
||||
jenkins:
|
||||
enabled: ${GC_MOBILE_JENKINS_ENABLED:true}
|
||||
url: ${GC_MOBILE_JENKINS_URL:http://127.0.0.1:8090}
|
||||
job: ${GC_MOBILE_JENKINS_JOB:goldenChart-Mobile-Pipeline}
|
||||
user: ${GC_MOBILE_JENKINS_USER:}
|
||||
token: ${GC_MOBILE_JENKINS_TOKEN:}
|
||||
trigger-token: ${GC_MOBILE_JENKINS_TRIGGER_TOKEN:goldenchart-mobile-build}
|
||||
desktop-app:
|
||||
release-dir: ${GC_DESKTOP_APP_RELEASE_DIR:data/desktop-releases}
|
||||
version: ${GC_DESKTOP_APP_VERSION:}
|
||||
|
||||
Reference in New Issue
Block a user