手把手教你 搭建Android Jenkins 环境及一键自动构建打包

7,223 阅读3分钟

前言: 之前看到后端的同事,在服务器上刷刷的敲命令觉得很酷,给我的感觉是Linux很难上手。自从公司给我配了台服务器后,操作了一下,感觉和想的不是那么一回事,所以还是得多动手,不要空想。

正文开始:

看到网上说Linux安装软件基本是用yum,所以这边也是使用yum,从0-1搭建Linux Jenkins,实现Android 一键自动化构建部署打包。

步骤一:安装JDK环境

1.查看jdk的版本:

# yum -y list java*

2.选择要安装的JDK版本(带devel是JDK)

# yum install -y java-1.8.0-openjdk-devel.x86_64

3.安装完后,查看是否安装成功(看到版本号表示安装成功,不需要像Windows配置java_home环境变量)

# java -version

image.png

步骤二:安装Jenkins

1.yum安装Jenkins

# yum install jenkins

如果没有Jenkins的repos,按照官网提示再操作:

# sudo wget -O /etc/yum.repos.d/jenkins.repo  https://pkg.jenkins.io/redhat-stable/jenkins.repo
# sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key

2.修改Jenkins默认的配置(怕端口冲突,改成你想要名字和端口):

# cd /etc/sysconfig/
# vi jenkins 

image.png

3.启动Jenkins

# service jenkins start

按照提示,到指定目录复制密码,下一步是选择安装默认的插件(推荐),注册一个账户,最后就会来到这个界面,表示Jenkins安装成功。

image.png

步骤三:安装gradle

1.安装gradle gradle.org/releases/

image.png 拿到安装包的下载链接: 创建一个安装的目录,我在新建了一个文件夹/opt/gradle/下 下载

# cd /opt
# mkdir gradle
# cd /opt/gradle
# wget https://downloads.gradle-dn.com/distributions/gradle-6.5-all.zip
# unzip /opt/gradle gradle-6.5-all.zip

步骤四:command tools 下载

  1. Command line tools only linux版本 developer.android.com/studio
# cd /opt
# mkdir android
# cd /opt/android
# wget https://dl.google.com/android/repository/commandlinetools-linux-7302050_latest.zip
# unzip /opt/android commandlinetools-linux-7302050_latest.zip

步骤五:配置gradle和Android SDK 环境变量

# cd /etc
# /etc/profile

image.png 在最后追加环境变量,保存

export ANDROID_HOME="/opt/android"
export GRADLE_HOME="/opt/gradle"
export PATH="$ANDROID_HOME/tools:$ANDROID_HOME/tools/bin:$ANDROID_HOME/platform-tools:$GRADLE_HOME/gradle-4.9/bin:$PATH"

刷新当前的shell环境

# source /etc/profile

配置gradle全局代理

def repoConfig = {
    all { ArtifactRepository repo ->
        if (repo instanceof MavenArtifactRepository) {
            def url = repo.url.toString()
            if (url.contains('repo1.maven.org/maven2') || url.contains('jcenter.bintray.com')) {
                println "gradle 初始化: (${repo.name}: ${repo.url}) 移除"
                remove repo
            }
        }
    }
    maven { url 'https://maven.aliyun.com/repository/central' }
    maven { url 'https://maven.aliyun.com/repository/public' }
    maven { url 'https://maven.aliyun.com/repository/jcenter' }
    maven { url 'https://maven.aliyun.com/repository/google' }
    maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
	mavenLocal()
    mavenCentral()
}

allprojects {
    buildscript {
        repositories repoConfig
    }

    repositories repoConfig
}

这里因为项目里面配了一个google的maven地址,导致一直gradle构建超半个小时,排查了很久。

项目builid.gradle里面千万不要配google的maven地址
项目builid.gradle里面千万不要配google的maven地址
项目builid.gradle里面千万不要配google的maven地址
就是他,浪费了我几天时间排查,正常用
google()
jcenter()
就可以了

image.png

查看gradle是否配置成功
# gradle -version

image.png

步骤六:sdkmanager方式安装SDK

因为是sdkmanager访问的是google,所以配置了谷歌代理才可以访问,当时折腾了很久才找到的dl.google.com代理

# cd /etc/
# vi hosts

203.208.40.36 dl.google.com

image.png

# cd /opt/android/cmdline-tools

在里面创建一个latest,将文件夹里面文件全部放到latest里面。

# cd /opt/android/cmdline-tools/latest/bin

查看版本
# ./sdkmanager --list
安装想要的SDK版本
# ./sdkmanager --install "platforms;android-29" 
# ./sdkmanager --install "build-tools;29.0.2" 

步骤六:安装git

1.下载最新的git github.com/git/git/rel…

2.我通过xftp copy在/root目录下,解压

安装依赖库
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker

# cd /root/git-2.32.0
make prefix=/usr/local all
make prefix=/usr/local install

最后测试下git clone 你的git地址试试能不能拉代码

步骤七:最后一步,Jenkins上创建项目

1.在plugins.jenkins.io/ 下载插件

构建化插件:extended-choice-parameter

image.png

点击高级-上传插件-等待安装成功即可

image.png

2.新建任务

image.png

构建化参数添加参考

image.png

我这个教程,Jenkins里面是零配置,直接执行shell脚本,很方便

具体的脚本自己根据实际需求来编写,我这里就不举例了。

gradle clean
gradle assembleRelease--stacktrace -info

结语: 搭建Jenkins的服务,我深有体会,由于没有服务器,首先在自己电脑搭建了一套Windows的Jenkins,也是遇到了各种疑难问题,最后还是解决了。然后,在Linux上部署这套Jenkins环境,就变得很轻松。这次最大的收获就是熟悉了Linux的操作,实现了Android 一键自动打包上传到服务器,减少了打包,上传服务器繁琐的操作。

如果本文对你有帮助,请帮忙对个赞或者留言,你的鼓励是我分享的动力。

本文发布自juejin.cn/post/698722… 文章未经授权禁止任何形式的转载