본문 바로가기

Jenkins

Jenkins) 안드로이드 앱 프로젝트 빌드하기

이번에는 Jenkins로 안드로이드 앱을 지속적으로 빌드할 수 있게 환경을 만들어보겠습니다.

 

안드로이드 SDK 설치

빌드 시 안드로이드 SDK를 사용함으로 Jenkins가 실행되고 있는 환경 내에 안드로이드 SDK를 설치해주어야 합니다.

https://i5i5.tistory.com/1192

 

(작성중) [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은 지정한 경로에 위치한것을 확인할 수 있습니다.