티스토리 뷰
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 이렇게 만들어서 저장했다.
확장자는 없어야 하는게 원칙 !
그리고 출시 이름 ( 이건 유저에게 보이지 않고 오직 개발자만 볼 수 있음 )
문제는 .. 저 코드는 코드넘버를 갖고오지 못하는 워크 플로우다 .. 왜 못가져오는지 몰겠지만.. 이건 쓰지 마시길 ..
'Android > CICD' 카테고리의 다른 글
| [ CICD #4 ] Github Actions - local.properties (0) | 2025.06.11 |
|---|---|
| [ CICD #2 ] GitHub Actions Firebase Distribution -2 (0) | 2025.05.28 |
| [ CICD #1 ] GitHub secrets 등록 -1 (1) | 2025.05.28 |
- Total
- Today
- Yesterday
- 오브제썬스틱
- 풀배열 키보드
- local.properties
- github
- 쏘렌토 하이브리드
- 폴더블 이벤트 받기
- github actions
- firebase distribution
- aos img url bitmap
- 폴더블 상태 유지
- widget 만들기
- 쏘렌토 하이브리드 시그니처
- wear os
- 안드로이드 플립 대응
- 갤럭시 워치
- Android
- widget 이미지 로딩
- android widget 만들기
- api key 관리
- 기름잡아주는
- widget onreceive
- github secrets
- 테스트 앱 배포
- widget glide
- 안드로이드 폴드 대응
- 맥 전용
- 웨어러블
- widget onupdate
- 테스트 배포
- flutter web
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |