공통 의존성 버전 관리 라이브러리 (지그재그, 포스티, 패바카 공용)
이 레포지토리는 KakaoStyle의 모든 Android 프로젝트에서 사용하는 라이브러리 버전을 중앙에서 관리합니다.
nexus repository : Nexus Repository
catalog 변경 후 매번 퍼블리시 필요:
# aos-shared-version-catalog 프로젝트에서
./gradlew publishToMavenLocal -Pversion=1.2.3앱 프로젝트 settings.gradle.kts:
dependencyResolutionManagement {
repositories {
mavenLocal() // 추가
}
}앱 프로젝트 gradle.preperties:
sharedCatalog.version=1.0.0-SNAPSHOT // SNAPSHOT일 경우 SNAPSHOT 추가 아닐 경우 1.0.0실시간으로 변경사항 반영, 퍼블리시 불필요:
local.properties로 조건부 includeBuild:
local.properties:
enableCatalogDebug=true
catalogProjectPath=../aos-shared-version-catalog퍼블리시:
# aos-shared-version-catalog 프로젝트에서
# 버전 직접 지정
./gradlew publish -Pversion=1.2.3
# → 1.2.3-SNAPSHOT배포 위치:
- URL:
https://nexus.development.croquis.com/repository/maven-snapshot/ - 좌표:
com.kakaostyle.shared:aos-shared-version-catalog:1.0.0-SNAPSHOT
앱 프로젝트 gradle.preperties:
sharedCatalog.version=1.0.0-SNAPSHOT // 변경퍼블리시:
# 버전 직접 지정
./gradlew publish -Pversion=1.2.3 -PisRelease=true
# → 1.2.3배포 위치:
- URL:
https://nexus.development.croquis.com/repository/maven-release/ - 좌표:
com.kakaostyle.shared:aos-shared-version-catalog:1.0.0
앱 프로젝트 gradle.preperties:
sharedCatalog.version=1.0.0-SNAPSHOT // 변경앱 프로젝트의 build.gradle.kts에서 다음과 같이 사용:
dependencies {
implementation(sharedLibs.lifecycle)
implementation(sharedLibs.coroutine)
implementation(sharedLibs.retrofit)
implementation(sharedLibs.compose.material)
}특정 프로젝트에서 일부 라이브러리만 다른 버전을 사용해야 할 경우, 기존 libs.versions.toml과 sharedLibs를 함께 사용할 수 있습니다.
build.gradle.kts:
dependencies {
// 공통 라이브러리 (sharedLibs 사용)
implementation(sharedLibs.kotlin)
implementation(sharedLibs.coroutine)
implementation(sharedLibs.compose.material)
// 프로젝트별 다른 버전 필요 시 (libs 사용)
implementation(libs.retrofit.custom) // sharedLibs.retrofit 대신
implementation(libs.custom.library) // 프로젝트 전용
}gradle/libs.versions.toml수정- Local 테스트 (includeBuild 또는 mavenLocal)
- 필요 시 SNAPSHOT 배포:
./gradlew publish - feature → develop PR 생성 및 리뷰
- PR Merge
-
develop에 feature PR merge 완료
-
Release PR 생성
- GitHub Actions 탭 → "Create Release PR" 선택
- "Run workflow" 클릭
- 버전 입력 (예:
1.1.0) - workflow 실행 →
release/v1.1.0브랜치와 PR 자동 생성
-
Release PR 리뷰 및 Merge
- PR에서 변경사항 확인
- 체크리스트 검토
- main으로 Merge
-
자동 배포 실행 (PR merge 시 자동)
- ✅ Git 태그
v1.1.0생성 및 push - ✅ Nexus Release Repository에 배포
- ✅ GitHub Release 생성
- ✅ Release 브랜치 자동 삭제
- ✅ main → develop back-merge (버전 동기화)
- ✅ Git 태그
-
앱 프로젝트에서 버전 업그레이드
# gradle.properties sharedCatalog.version=1.1.0
방법 1: gradle.properties 사용
- PR Merge
gradle.properties의module.version업데이트 (예:1.0.0→1.1.0)- Release 퍼블리시:
./gradlew publish -PisRelease=true - Git 태그:
git tag v1.1.0 && git push origin v1.1.0 - 각 앱 프로젝트에서 필요할 때 버전 업그레이드
방법 2: 명령줄에서 버전 지정
- PR Merge
- Release 퍼블리시:
./gradlew publish -Pversion=1.1.0 -PisRelease=true - Git 태그:
git tag v1.1.0 && git push origin v1.1.0 - 각 앱 프로젝트에서 필요할 때 버전 업그레이드
- 파일:
.github/workflows/create-release-pr.yml - 트리거: 수동 (workflow_dispatch)
- 역할: Release PR 생성 및 버전 업데이트
- 파일:
.github/workflows/deploy-release.yml - 트리거: Release PR이 main에 merge될 때
- 역할: Nexus 배포, Git 태그 생성, GitHub Release 생성
필수 Secrets 설정:
Repository Settings → Secrets and variables → Actions에서 다음 secrets 추가:
NEXUS_USER: Nexus 사용자명NEXUS_PASSWORD: Nexus 비밀번호