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:
Macbook
2026-06-14 16:31:55 +09:00
parent 36c06b55ea
commit f34104b721
38 changed files with 1468 additions and 15 deletions
@@ -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();
}
}