Android Github action

안드로이드 Github action을 알아보겠습니다.


Github(깃허브) action(액션)은 CI/CD를 제공해 줍니다.
https://docs.github.com/en/actions


또한 Github에 적용하기 쉽게 만들어졌는데요. Public(오픈된) Repository(저장소)의 경우 무료로 제공해 줍니다.
오늘 한 번 적용해 봅시다. 적용할 제 repository는 여기입니다.


Github에 Actions를 누릅니다. 아래의 Simple workflow의 Config를 눌러줍니다.





그러면, 이러한 창이 나옵니다.







Github action은 YAML을 읽고 실행합니다.
기본적인 뼈대가 작성되어 있는 상태네요.


이 파일은 .github/workflows에 생성됩니다.
파일 이름을 Build.yml로 3번째 줄의 name은 Build Demo로 변경했습니다.







이렇게 표시됩니다.







run-name은 workflows run에 사용될 이름입니다.






이렇게 표시됩니다.







on은 언제 github action을 작동시킬지를 정합니다. 여기서는 push와 pull request에 작동을 하는데, 그 목표가 main 일 때입니다.





jobs는 현재 action flow에서 실행될 모든 작업들의 집합입니다.
jobs 아래에 이름을 추가할 수도 있습니다.
build_apk로 지어줬습니다.







runs-on은 실행할 장비를 선택합니다. 저는 ubuntu 최신 버전을 사용합니다.






steps에는 이제 실행될 작업들을 나눠서 적어줍니다. 각각의 내용들은 독립된 스크립트로 실행됩니다.
uses는 github action이 repository의 code(코드)에 접근할 수 있게 해줍니다.






실행되면 이렇게 보입니다.





이것은 예제 코드이고, 여기서 이제 진짜 build(빌드)를 하도록 만들어봅시다.

Android instrumentation test를 위한 KVM을 설정해 줍니다.







Checkout과 Gradle Wrapper Validation을 해줍니다.
actions/checkout@v4
gradle/actions/wrapper-validation@v3.3.2







Java와 Gradle을 설정해 줍니다.
actions/setup-java@v4
gradle/actions/setup-gradle@v3






unit test와 instrumentation test를 실행합니다.
reactiveCircus/android-emulator-runner@v2.30.1
api-level은 34로 설정했습니다. arch는 x86_64로 설정해 줍니다.







그리고 Build를 추가해 줍니다.






자, build 한 것을 다운로드해 봐야겠지요?
actions/upload-artifact@v4
path의 **와 *는 Wildcard입니다. **는 어떠한 경로이고, *는 어떠한 파일명입니다.





하지만, 문제가 있네요. 제 Github는 경로가 좀 다릅니다. 그리고 실행 권한 오류도 있네요.
working-directory로 시작 지점을 변경합니다.
chmod로 실행 권한을 줍니다.






오류를 확인하고 싶다면 오류 파일을 업로드해야 합니다.






Github action이 잘 작동합니다.








끝.


카테고리: Android

댓글

이 블로그의 인기 게시물

Python urllib.parse.quote()

KiCad 시작하기 4 (기존 회로도 수정 및 추가)

Android Compose Coil library

KiCad 시작하기 1 (회로도 만들기)

Android Notification with Full Screen

iOS Swift callAsFunction

Forensics .pyc 파일 .py로 복구하기

iOS Error Undefined symbol Testing.Trait

Android Custom IME(Input method editor) 만들기

Android Compose automation for getting localized images to use on Play Store app image