이전 포스팅에서 Github Actions를 이용하여 안드로이드 Apk 파일을 자동으로 추출하고 업로드하는 방법에 대해서 알아봤다.
이번 포스팅에서는 release까지 자동으로 업로드하는 방법을 다뤄보고자 한다.
해당 기능은 Github Actions의 Release API를 사용한다. 자세한 내용은 여기를 참고하자.
동작 과정
현재 진행 중인 프로젝트는 Git-Flow를 이용하여 관리하고 있다. 따라서, develop으로 pull_request가 들어올 땐 build에 대한 체크를 수행하도록 지정했고, main으로 merge 되는 시점 (배포)에 release apk를 생성함과 동시에 release를 등록하도록 지정했다.
이처럼 .yml을 여러개 작성해놓고 상황에 맞는 동작을 실행시킬 수 있으니 잘 활용하면 좋을 것 같다.
일단 기본 적인 동작 과정은
- Release 모드로 빌드
- Release Apk 추출 & 업로드 (Artifacts에 업로드)
- merge commit 메세지에서 버전 정보 추출 ( 정규 표현식을 이용하여 0.0.0과 같은 형태의 문자열을 추출 )
- Release 생성
으로 이루어져 있다. 배포와 동시에 Apk 추출과 Release를 등록하기 위해서 이전 포스트에서 작성했던 내용과 합쳤다.
필요한 부분만 골라서 쓰면 될 것 같다.
Github Token 생성
Github Actions API를 이용하기 위해 Token이 필요하다. 토큰을 생성한 후 Repository의 Setting으로 들어가서 Secrets에 등록을 해주어야한다.
이런식으로 토큰을 변수로 등록할 수 있다.
auto_release.yml 작성
name: Create Release Tag
on:
push:
branches: [ "main" ]
jobs:
# Release APK 생성
apk:
permissions: write-all
name: Generate APK
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: set up JDK 11
uses: actions/setup-java@v3
with:
java-version: '11'
distribution: 'temurin'
cache: gradle
# Release 빌드
- name: Build Release APK
run: bash ./gradlew assembleRelease --stacktrace
# Release APK 추출
- name: Upload Release APK
uses: actions/upload-artifact@v3
with:
name: app
path: presentation/build/outputs/apk/release
# merge commit에서 release 버전 정보 추출
- name: 버전 정보 추출
run: echo "##[set-output name=version;]$(echo '${{ github.event.head_commit.message }}' | egrep -o '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}')"
id: extract_version_name
# Release/Tag 생성
- name: Release 생성
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ steps.extract_version_name.outputs.version }}
release_name: ${{ steps.extract_version_name.outputs.version }}
body: |
## ${{ steps.extract_version_name.outputs.version }} 버전이 릴리즈 되었습니다.
- 새로운 버전의 Apk가 릴리즈 되면, Apk 파일이 해당 게시글에 업로드 됩니다.
- 만약 해당 게시글에 Apk 파일이 업로드 되어 있지 않다면 아래 절차를 통해 다운로드 받아주세요.
- apk 파일은 .zip 파일로 업로드 됩니다. ( Source code (zip), Source code (tar.gz) 파일은 apk 파일이 아닙니다. )
### Apk 다운로드
1. [Apk Downloads](https://github.com/DEU-Smiley/Smiley-Android-App/actions/workflows/auto_release.yml) 로 이동하세요.
2. release {버전명}으로 된 목록 중 가장 최근에 완료된 항목(초록색 체크 표시)을 클릭하세요.
3. Artifacts 탭에서 apk 파일을 다운로드 할 수 있습니다.
기본적인 구조는 이전 포스팅에서 설명했기 때문에 생략하겠다.
Release를 생성하는 부분에 보면 body 속성으로 release의 본문을 작성할 수 있다. 마크다운으로 생성되기 때문에 마크다운 문법을 사용해주면 된다.
실행 결과
아래와 같이 Release가 등록되면서 본문이 같이 생성된다.
'프로젝트 관리 & 협업 > Github' 카테고리의 다른 글
[ Github ] - Github Actions을 활용하여 apk 자동 업로드하기 (0) | 2023.03.27 |
---|---|
[ Github ] - Github Actions로 안드로이드 APK 자동 생성하기 (0) | 2023.03.24 |
[ Github ] - Github Issue, 프로젝트 개발 과정을 잘 남기는 법 (0) | 2023.02.25 |