如过你的Jenkins是部署在K8s集群中的,那需要支持Android打包的情况。Android SDK安装与更新怎么做呢?
本文将介绍在K8s集群中如何安装和更新 Android SDK
 1. K8s集群中Android SDK安装与更新方案设计
Android在Jenkins中构建打包,只需要命令行工具即可(Command line tools only)。
只需安装Android SDK Tools,这是 Android SDK 的一个组件。它包含了 Android 的全套开发和调试工具,在Android studios首页即可下载(位置:Command line tools only),点击进入。
使用 Android 的 sdkmanager 命令行工具进行查看、安装、更新和卸载 Android SDK 的软件包,sdkmanager工具介绍说明,点击进入
注:sdkmanager工具在 Android SDK Tools 软件包(25.2.3 及更高版本)中提供,并位于 android_sdk/tools/bin/ 目录下,无需独立安装。
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 
 | // Android SDK Tools DockerfileFROM harbor.demo.com/base/jre_centos:8u202_7.8
 USER root
 
 ENV SDK_TOOLS_URL="https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip" \
 ANDROID_HOME="/opt/app/android-sdk"
 
 RUN yum install -y zip unzip
 RUN mkdir -p "$ANDROID_HOME" .android \
 && cd "$ANDROID_HOME" \
 && curl -o sdk-tools.zip $SDK_TOOLS_URL \
 && unzip sdk-tools.zip \
 && rm sdk-tools.zip
 RUN yes | $ANDROID_HOME/tools/bin/sdkmanager --licenses \
 && $ANDROID_HOME/tools/bin/sdkmanager --update
 
 #RUN $ANDROID_HOME/tools/bin/sdkmanager --install "build-tools;29.0.1" "platforms;android-29"
 
 CMD ["/bin/bash"]
 
 | 
 1.2 将Android sdk作为PVC挂载出来
- 
k8s中申请50G的pvc挂载点 
- 
Android SDK Tools镜像挂载PVC 
| 12
 
 | // 安装Android sdk工具sdkmanager --install XXX
 
 | 
 1.3 Android SDK更新
Cronjob更新稳定性不是很好,如果没有成功安装SDK工具,则可进入容器中,直接执行sdkmanager更新命令(cluster: cluster_pro 内网正式, namespace:jenkins,pod:androidsdk-xxxxx)
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 
 | // cronjob的部署示例:jobs:
 - name: androidsdk-job
 # job运行环境集群,和 global.env 的值对应
 runEnv:
 - dev
 - test
 - pdt
 image:
 repository: harbor.demo.com/cicd/android-sdk-tools
 tag: v0.0.1
 pullPolicy: Always
 command:
 - "/opt/app/android-sdk-v/tools/bin/sdkmanager"
 - "--install"
 args:
 #### ./sdkmanager --list sdk包 ####
 #  - "build-tools;19.1.0"
 #  - "build-tools;20.0.0"
 #  - "build-tools;21.1.2"
 #  - "build-tools;22.0.1"
 #  - "build-tools;23.0.1"
 #  - "build-tools;23.0.2"
 ...
 
 | 
 1.4 K8s集群中Android SDK安装与更新
- 使用Helm进行部署和更新,此处我们使用的是Helm方式部署的(有关Helm的部署,将后续分享……)
 2 Jenkins slave节点使用Android SDK工具
添加一个环境变量和挂载卷

直接使用对应Jenkins slave节点,执行gradle命令即可。
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 
 | pipeline {// 全局执行代理
 agent {
 kubernetes {
 cloud 'kubernetes'
 label 'label-gradle'
 }
 }
 stages {
 stage ("gradle构建") {
 steps {
 sh "./gradlew clean " +
 "channelRelease --stacktrace " +
 "-PBUILD_NUMBER=${env.BUILD_NUMBER}"
 }
 }
 }
 
 |