如过你的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/ 目录下,无需独立安装。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| // Android SDK Tools Dockerfile FROM 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
1 2
| // 安装Android sdk工具 sdkmanager --install XXX
|
1.3 Android SDK更新
Cronjob更新稳定性不是很好,如果没有成功安装SDK工具,则可进入容器中,直接执行sdkmanager更新命令(cluster: cluster_pro 内网正式, namespace:jenkins,pod:androidsdk-xxxxx)
1 2 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命令即可。
1 2 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}" } } }
|