반응형

일반적인 방법

사전 준비

install-essential-packages 빌드 생성 및 실행

  • Build > Execute shell
    apt-get update
    apt-get install wget
    

install-android-sdk 빌드 생성 및 실행

  • Build > Execute shell
    # cmdline-tools 설치
    rm -rf *
    wget https://dl.google.com/android/repository/commandlinetools-linux-6858069_latest.zip
    unzip *.zip
    rm *.zip
    
    # platform-tools 설치
    echo "y" | cmdline-tools/bin/sdkmanager --sdk_root=sdk "platform-tools"
    
    # SDK 경로 출력
    echo "ANDROID_SDK_ROOT : $WORKSPACE/sdk"
    
  • SDK 경로
    ANDROID_SDK_ROOT : /var/jenkins_home/workspace/install-android-sdk/sdk
    

SDK 경로를 환경변수로 설정

  • Jenkins 관리 > 시스템 설정 > Global properties > Environment variables 체크
  • 이름
    • ANDROID_SDK_ROOT
    • /var/jenkins_home/workspace/install-android-sdk/sdk

build-android-example 빌드 생성 및 실행

  • 소스 코드 관리 > Git
    • 사전 준비 단계 내용을 참고하여 Repository URL, Credentials 값 설정
  • Build > Execute shell
    # 실행 가능 파일로 변경
    chmod +x gradlew
    
  • Build > Invoke Gradle script
    • Use Gradle Wrapper : 체크
    • Tasks
      # 일반 APK 빌드
      clean assemble
      
      # DEBUG APK 빌드
      # clean app:assembleDebug
      
      # RELEASE APK 빌드
      # clean app:assembleRelease
      
  • Build > Execute shell
    # APK 파일 경로 출력
    find $WORKSPACE -name "*.apk"
    
  • 결과
    /var/jenkins_home/workspace/build-android-example/app/build/outputs/apk/release/app-release-unsigned.apk
    /var/jenkins_home/workspace/build-android-example/app/build/outputs/apk/debug/app-debug.apk
    

jenkins-pipeline을 활용한 방법

install-essential-packages

pipeline {
    agent any

    stages {
        stage('install-essential-packages') {
            steps {
                sh "apt-get update"
                sh "apt-get install wget"
            }
        }
    }
}

install-android-sdk

pipeline {
    agent any

    stages {
        stage('install-android-sdk') {
            steps {
                sh "rm -rf *"
                sh "wget https://dl.google.com/android/repository/commandlinetools-linux-6858069_latest.zip"
                sh "unzip *.zip"
                sh "rm *.zip"
                sh "echo 'y' | cmdline-tools/bin/sdkmanager --sdk_root=sdk 'platform-tools'"
                sh "echo 'ANDROID_SDK_ROOT : $WORKSPACE/sdk'"
            }
        }
    }
}

build-android-example

pipeline {
    agent any

    stages {
        stage('git-clone') {
            steps {
                git(
                    url: "git@github.com:sanggeun-choi/android-example.git",
                    credentialsId: "android-example",
                    branch: "develop"
                )
            }
        }

        stage('build-with-gradle') {
            steps {
                sh "chmod +x gradlew"
                sh "./gradlew clean assemble" // 일반 APK 빌드
                // sh "./gradlew clean app:assembleDebug" // DEBUG APK 빌드
                // sh "./gradlew clean app:assembleRelease" // RELEASE APK 빌드
                sh "find $WORKSPACE -name '*.apk'"
            }
        }
    }
}

참고

반응형

'Development > Android' 카테고리의 다른 글

[Android] 무선으로 빌드하기  (0) 2024.01.07
[Android] NDK  (0) 2021.09.25
[Android] Chromecast  (0) 2021.02.16
[Android] ExoPlayer  (0) 2021.02.10
[Android] ViewTreeObserver  (0) 2021.02.10

+ Recent posts