이번에는 Jenkins로 안드로이드 앱을 지속적으로 빌드할 수 있게 환경을 만들어보겠습니다.
안드로이드 SDK 설치
빌드 시 안드로이드 SDK를 사용함으로 Jenkins가 실행되고 있는 환경 내에 안드로이드 SDK를 설치해주어야 합니다.
(작성중) [Android] Linux환경에서 cmd-line tools 설치 및 SDK manager 이용하기
개요 먼저 이 글을 소개하기 앞서, 이 글의 목적을 밝히려 한다. 리눅스 환경에서 Android를 개발하려면 SDK manager와 cmd-line tools를 설치하여 사용해야한다. 이를 위해, (1) cmd-line tools을 직접 설치해
i5i5.tistory.com
안드로이드 SDK 디렉토리 권한 설정
Jenkins 서버가 빌드 시 안드로이드 SDK 디렉토리에 접근하여 읽기, 쓰기 작업을 수행해야하므로 권한 설정을 해주어야합니다.
chmod -R 755 android_sdk
재귀적으로 외부 사용자의 읽기, 쓰기 가능하게 설정해줍니다.
Jenkinsfile 작성
pipeline {
agent any
environment {
ANDROID_HOME = "/home/pdj/android_sdk" //안드로이드 SDK 경로
}
stages {
stage('Checkout') {
steps {
// GitHub에서 최신 소스 코드 체크아웃
checkout scm
}
}
stage('Build APK') {
steps {
// Gradle로 빌드
sh './gradlew clean assembleRelease'
}
}
}
post {
success {
// 빌드 후 APK 파일을 아카이브
archiveArtifacts artifacts: 'app/build/outputs/apk/**/*.apk', allowEmptyArchive: true
}
failure {
// 빌드 실패 시 로그 출력
echo 'Build failed!'
}
}
}
environment 모듈 내에서 빌드를 위한 설정을 진행해줍니다. jenkins가 실행 중인 환경 내에 안드로이드 sdk가 설치되어 있고 jenkins 서버가 안드로이드 sdk를 사용할 수 있게 ANDROID_HOME 변수에 경로를 할당해줍니다.
stages 모듈내에 pipeline의 동작 순서를 정의합니다.
checkout scm
우선 github 안에 최신 소스코드를 받아오기 위해 checkout을 진행해줍니다.
sh './gradlew clean assembleRelease'
빌드 성공 시 위에 명령어가 실행되게 됩니다. 안드로이드 스튜디오에서 프로젝트를 생성하면 gradle 빌드를 위한 'gradlew' 실행파일이 기본적으로 제공해줍니다. 이 실행파일을 실행해줍니다.
clean 인자를 사용하여 기존에 빌드했던 결과물을 삭제하고 새롭게 빌드를 진행할 수 있습니다.
assembleRelease 인자는 release 용 APK를 생성하기 위한 인자입니다.
이후 빌드 성공 혹은 실패에 따라 동작 방식이 달라지게 됩니다.
archiveArtifacts artifacts: 'app/build/outputs/apk/**/*.apk', allowEmptyArchive: true
archiveArtifacts는 Jenkins Pipeline에서 빌드 결과물(artifacts)을 저장하고, Jenkins 웹 인터페이스에서 이 결과물을 다운로드하거나 확인할 수 있도록 하는 기능을 제공합니다.
artifacts: 뒤에 경로는 빌드 결과물(artifact)을 저장할 경로입니다.
allowEmptyArchive:처음 빌드를 포함하여 지정된 경로에 빌드 결과물이 없는 경우에도 아카이브를 시도하도록 설정합니다
빌드 실패 시 "Build failed!"가 출력 콘솔에 출력되게 됩니다.
테스트
이 후 제대로 jenkins가 동작하는지 확인하기 위해 "지금 빌드" 버튼을 눌러 빌드 진행하였습니다.
(추후에 trigger 옵션에 따라 빌드하는 방법도 따로 포스팅해보겟습니다.)
빌드 성공
빌드가 성공하였고 artifact은 지정한 경로에 위치한것을 확인할 수 있습니다.
'Jenkins' 카테고리의 다른 글
Jenkins) Github repo에 위치한 간단한 Jenkinsfile 동작시켜보기 (0) | 2024.09.04 |
---|---|
Jenkins) 설치하는 법 (3) | 2024.09.03 |
Jenkins) Jenkins에 대해서 알아보자 (2) | 2024.09.03 |