Skip to content
This repository was archived by the owner on Feb 20, 2026. It is now read-only.

croquiscom/aos-shared-versionnig-catalog

Repository files navigation

AOS Shared Version Catalog

공통 의존성 버전 관리 라이브러리 (지그재그, 포스티, 패바카 공용)

개요

이 레포지토리는 KakaoStyle의 모든 Android 프로젝트에서 사용하는 라이브러리 버전을 중앙에서 관리합니다.

개발툴

nexus repository : Nexus Repository

배포 방법

Local 배포

1. mavenLocal 방식

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

2. includeBuild 방식 (권장)

실시간으로 변경사항 반영, 퍼블리시 불필요:

local.properties로 조건부 includeBuild: local.properties:

enableCatalogDebug=true
catalogProjectPath=../aos-shared-version-catalog

Remote 배포 (Nexus)

1. SNAPSHOT 배포 (개발/테스트용)

퍼블리시:

# 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 // 변경

2. Release 배포 (프로덕션용)

퍼블리시:

# 버전 직접 지정
./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)
}

프로젝트별 버전 Override

특정 프로젝트에서 일부 라이브러리만 다른 버전을 사용해야 할 경우, 기존 libs.versions.tomlsharedLibs를 함께 사용할 수 있습니다.

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)   // 프로젝트 전용
}

버전 업그레이드 절차

개발 과정

  1. gradle/libs.versions.toml 수정
  2. Local 테스트 (includeBuild 또는 mavenLocal)
  3. 필요 시 SNAPSHOT 배포: ./gradlew publish
  4. feature → develop PR 생성 및 리뷰
  5. PR Merge

릴리즈 배포 (GitHub Actions 자동화 - 권장)

  1. develop에 feature PR merge 완료

  2. Release PR 생성

    • GitHub Actions 탭 → "Create Release PR" 선택
    • "Run workflow" 클릭
    • 버전 입력 (예: 1.1.0)
    • workflow 실행 → release/v1.1.0 브랜치와 PR 자동 생성
  3. Release PR 리뷰 및 Merge

    • PR에서 변경사항 확인
    • 체크리스트 검토
    • main으로 Merge
  4. 자동 배포 실행 (PR merge 시 자동)

    • ✅ Git 태그 v1.1.0 생성 및 push
    • ✅ Nexus Release Repository에 배포
    • ✅ GitHub Release 생성
    • ✅ Release 브랜치 자동 삭제
    • ✅ main → develop back-merge (버전 동기화)
  5. 앱 프로젝트에서 버전 업그레이드

    # gradle.properties
    sharedCatalog.version=1.1.0

수동 릴리즈 배포 (필요 시)

방법 1: gradle.properties 사용

  1. PR Merge
  2. gradle.propertiesmodule.version 업데이트 (예: 1.0.01.1.0)
  3. Release 퍼블리시: ./gradlew publish -PisRelease=true
  4. Git 태그: git tag v1.1.0 && git push origin v1.1.0
  5. 각 앱 프로젝트에서 필요할 때 버전 업그레이드

방법 2: 명령줄에서 버전 지정

  1. PR Merge
  2. Release 퍼블리시: ./gradlew publish -Pversion=1.1.0 -PisRelease=true
  3. Git 태그: git tag v1.1.0 && git push origin v1.1.0
  4. 각 앱 프로젝트에서 필요할 때 버전 업그레이드

GitHub Actions 워크플로우

1. Create Release PR (수동 실행)

  • 파일: .github/workflows/create-release-pr.yml
  • 트리거: 수동 (workflow_dispatch)
  • 역할: Release PR 생성 및 버전 업데이트

2. Deploy Release (자동 실행)

  • 파일: .github/workflows/deploy-release.yml
  • 트리거: Release PR이 main에 merge될 때
  • 역할: Nexus 배포, Git 태그 생성, GitHub Release 생성

GitHub Actions 설정

필수 Secrets 설정:

Repository Settings → Secrets and variables → Actions에서 다음 secrets 추가:

  • NEXUS_USER: Nexus 사용자명
  • NEXUS_PASSWORD: Nexus 비밀번호

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors