티스토리 뷰

반응형
SMALL

 

반응형

 

SMALL

 

 

2025.05.28 - [Android/CICD] - [ CICD #1 ] GitHub secrets 등록 -1

 

[ CICD #1 ] GitHub secrets 등록 -1

예전부터 해보고 싶었던 빌드, 테스트, 배포 과정을 자동화에 대해서 시도해 보고 최종적으로 성공한 것에 대해 기록하고자 한다.CI/CD 도구로 여러가지가 있다는 건 알고만 있었다 1. Github Actions2

jihunstudy.tistory.com

2025.05.28 - [Android/CICD] - [ CICD #2 ] GitHub Actions Firebase Distribution -2

 

[ CICD #2 ] GitHub Actions Firebase Distribution -2

이전 글에서 Github Secrets 를 등록 하는 방법을 정리했다. 2025.05.28 - [Android/CICD] - [ CICD #1 ] GitHub secrets 등록 -1 [ CICD #1 ] GitHub secrets 등록 -1예전부터 해보고 싶었던 빌드, 테스트, 배포 과정을 자동화

jihunstudy.tistory.com

 

 

이전에 Github secrets 등록과 Firebase 테스트 앱 배포를 해보고 

이제 조금만 수정 하면 Play Store 에 자동으로 앱을 출시 하는 컨트롤을 할 수 있겠구나 라는 생각이 든다 

그래서 아래 부분만 수정 해서 

플레이 스토어 비공개 테스트 Alpha 트랙에 업로드 하는 Github actions 워크 플로우를 적어 둔다

 

name: Android Release Build and Upload to Play Alpha

on:
  push:
    tags:
      - 'UPAv*' # 태그가 'UPAv'로 시작하는 경우에만 워크플로우 실행됨 (예: UPAv1.0.4)

jobs:
  build:
    name: Build Release AAB and Upload to Google Play Alpha
    runs-on: ubuntu-latest

    steps:
    # 리포지토리의 코드를 체크아웃 (다운로드)
      - name: Checkout code
        uses: actions/checkout@v3

    # JDK 17 설치 (Android 빌드 도구 사용을 위해 필요)
      - name: Set up JDK 17
        uses: actions/setup-java@v3
        with:
          distribution: 'zulu'
          java-version: '17'

    # keystore 파일 디코딩 (base64 → 바이너리) 후 저장, 앱 서명에 사용됨
      - name: Decode keystore.jks
        run: |
          mkdir -p app/jks
          echo "${{ secrets.RELEASE_KEYSTORE_BASE64 }}" | base64 -d > app/jks/saveurlkey.jks

    # Firebase 연동을 위한 google-services.json 파일 디코딩 및 저장
      - name: Decode google-services.json
        run: |
          mkdir -p app
          echo "${{ secrets.GOOGLE_SERVICES_JSON }}" | base64 -d > app/google-services.json

    # gradlew 스크립트 실행 권한 부여 (gradle 빌드 도구 실행을 위함)
      - name: Grant execute permission to gradlew
        run: chmod +x ./gradlew

    # Release AAB 빌드 (앱 번들 생성), keystore 정보는 환경변수로 전달
      - name: Build Release AAB
        env:
          KEYSTORE_PASSWORD: ${{ secrets.RELEASE_KEYSTORE_PASSWORD }}
          KEY_ALIAS: ${{ secrets.RELEASE_KEYSTORE_ALIAS }}
          KEY_PASSWORD: ${{ secrets.RELEASE_KEY_PASSWORD }}
        run: ./gradlew clean bundleRelease

    # Play Console 배포를 위한 서비스 계정 JSON 파일 디코딩 및 저장
      - name: Decode Play Store Service Account
        run: |
          echo "${{ secrets.PLAY_STORE_SERVICE_ACCOUNT_JSON }}" | base64 -d > service-account.json

    # build.gradle에서 versionName 추출하여 GitHub Actions 변수로 저장 (예: v1.0.4)
      - name: Extract versionName from build.gradle
        id: version
        run: |
          VERSION_NAME=$(grep versionName app/build.gradle | head -n 1 | sed -E 's/.*"([^"]+)".*/\1/')
          echo "name=v$VERSION_NAME" >> "$GITHUB_OUTPUT"

    # Google Play 콘솔의 Alpha 트랙으로 AAB 업로드 (릴리스 노트 포함, draft 상태로 업로드됨)
      - name: Upload AAB to Google Play (Alpha Track)
        uses: r0adkll/upload-google-play@v1
        with:
          serviceAccountJson: service-account.json                         # 인증용 서비스 계정 JSON
          packageName: com.jinscompany.saveurl                             # 앱의 패키지 이름
          releaseFiles: app/build/outputs/bundle/release/app-release.aab   # 업로드할 AAB 파일 경로
          whatsNewDirectory: distribution/whatsnew                             # 릴리스 노트 경로
          releaseName: ${{ steps.version.outputs.name }}                   # versionName 기반 릴리스 이름 (예: v1.0.4)
          track: alpha                                                     # 배포 트랙 (alpha)
          status: completed                                                    # 배포 상태 (completed - 자동 배포,  draft - 임시 저장, 직접 승인 필요, inProgress - 점진적 배포 userFraction: 0.2  # 20% 사용자에게만 배포 )

 

앱을 배포할 때 출시 노트도 같이 작성이 가능하다 
whatsNewDirectory 이며 아래는 원칙적인 내용이란다. 각 언어별도 셋팅할 수 있다.

아래는 출시 노트 언어별 경로이다

 

나는 한국어만 지원하므로 whatsnew-ko-KR 이렇게 만들어서 저장했다.

확장자는 없어야 하는게 원칙 ! 

 

 

그리고 출시 이름 ( 이건 유저에게 보이지 않고 오직 개발자만 볼 수 있음 )

문제는 .. 저 코드는 코드넘버를 갖고오지 못하는 워크 플로우다 .. 왜 못가져오는지 몰겠지만.. 이건 쓰지 마시길 .. 

반응형
LIST
댓글