Android自动化打包---Jenkins安装使用

1,229 阅读5分钟

1,背景

Android开发者在平时开发的时候经常会遇到这样的情况

1,开发编译时,想测试一个东西,但是编译得5分钟,影响开发,这个时候,如果有人替我编译就好

2,开发中,测试找你说,这有问题帮我改下呗,然后打断思路,保存提交,切换分支,编译等待,打包验证,然后,很长时间过去了,这个时候,你在回去开发,忘了自己开发到哪了,然后加班吧!

当然还有其他情况了,这个时候,我们就渴望出现一个平台来帮助我们逃离这些事情,这个时候,我们可以使用Jenkins来解决这个问题,我们只需要提交好代码,jenkins可以帮我们编译,打包,上传maven,发消息通知我们和测试安装包

一般公司在做Jenkins使用都是把jenkins装在公司的服务器上,然后我们只需要操作就行,我的云服务器到期了,买不起了,在本机上安装jenkins验证使用吧

我这边采用的Jenkins+Tomcat的方式

2,Jenkins的安装和注册

1,jenkins的安装

Tomcat的安装: juejin.cn/post/703438…

官网安装地址:www.jenkins.io/download/lt…

66B24D58-D24C-47A6-8346-CFA25FB4391E.png

示例命令:

  • 安装最新的 LTS 版本: brew install jenkins-lts
  • 安装特定的 LTS 版本: brew install jenkins-lts@YOUR_VERSION
  • 启动Jenkins服务: brew services start jenkins-lts
  • 重启Jenkins服务: brew services restart jenkins-lts
  • 更新 Jenkins 版本: brew upgrade jenkins-lts

我们按照步骤做就行,如果没有使用brew的可以安装HomeBrew

我这边安装的最新版本,这个跟你自己的jdk版本有关系,我是jdk8支持最新版本

安装:rew install jenkins-lts

启动服务:brew services start jenkins-lts

然后按照步骤在浏览器上输入:https://localhost:8080

然后并没有效果!

原来还需要把jenkins.war包放到Tomcat的webapps包下

A8525FB1-208E-400A-B8E7-1B4345C26DED.png

下载好的jenkins.war包放到tomcat的webapps下

image.png

接下里在iterms中输入

cd  /Users/hydra/Documents/tomcat/apache-tomcat-8.5.72/webapps

进入对应的目录下,然后输入

java -jar jenkins.war —httpPort=1080

执行

其实直接输入下面命令,没出错,也行,上面的命令是因为jenkins的8080端口被占用,会报错,这样就会出问题

java -jar jenkins.war 

0A390891-FCBD-4EA5-9B0E-0EE0DFBCAEB7.png

在浏览器中输入下面网址

http://localhost:1080

老爷爷头终于出现了

96413254-4EB6-424E-8BD7-29889EDD1B8B.png

这个时候,你会发现,初始的账号密码是啥啊?没有注册的地方啊?

果然是一步一坑啊!

2,jenkins的注册

接下来就是获得初始密码

第一步:找到.jenkins文件夹

在使用jenkins的时候不小心把admin密码忘记了,下面来修改找回admin密码

Jenkins专用的用户数据存放在JENKINS_HOME/users目录

6C0CB6F0-06A0-4E6D-9B2F-3A90B5AAD1EC.png

点击上面的config.xml文件打开

79A56070-59AD-4985-9A04-409ADAC203CA.png

把节点的内容(图中黑色的那一串)换成#jbcrypt:2a2a10$DdaWzN64JgUtLdvxWIflcuQu2fgrrMSAMabF5TSrGK5nXitqK9ZMS

(注意前后有木有空格)

保存,重启Jenkins程序

然后输入用户名和密码,就登录成功了,这个估计就是了

jenkins账户和密码

账户:admin

密码:111111

然后终于进来了

image.png

3,Jenkins的使用

Jenkins安装好了,终于到使用Jenkins了

我在配置的时候遇到很多坑,现在就安装步骤写,避免大家踩坑

1,jenkins的各种插件得先安装好

点击manage plugins

比如,git,github,gitlab,gitee,你用的是那个地址就下在那个

然后,比如gradle得下载

F14CD896-4720-4502-9439-58AC44C73BD6.png

缺少那个下载那个,以后有新功能的,也可以在这里查看

EFA76462-85D5-41EC-BA08-C3807FC703F2.png

2,就是配置各种变量

D6768DDC-17E3-4581-8CE9-51EFECF996B6.png

配置jdk

4C6FC34D-2201-4E41-9FCF-3B53E7FD04F2.png

配置git

438BF63A-4E5C-4660-B321-3F53C3192E02.png

配置gradle,可以配置多个

2B9C72E5-2D66-4DFD-B2C0-62678F2B4B17.png

配置android_home

B607EB5D-B7AB-4780-8F37-E2360054D547.png

3,Jenkins新建任务的配置和运行

新建任务

AD8A60D9-FB2C-4E7C-8BD2-A097A4E3BD54.png

然后配置git链接

461A84BA-4E7F-4FD0-828D-AF2193105B6D.png

配置编译的gradle版本和编译的步骤

74E0A4AB-A371-4797-9293-7D8555C092E0.png

接着点击运行就可以了

172BAE38-43E3-418D-97CC-127F587CFD1F.png

在控制台可以查看他的task步骤 CB4237ED-FE54-41FF-A014-7184A918C8BA.png

运行成功以后就可以在workspace中查看打出来的apk

285981E8-4420-4E79-B28A-56CADC68B68E.png

那么怎么让打出来的包直接看出来呢?

1CFC9013-1B87-4217-8EAD-E3DAE0807C02.png

在项目中配置归档,

这样在打出来的包中就可以看到打出来的包

5E214B6A-6C3D-443F-8304-2394504F1B6D.png

这样一套全部打包流程就整出来了

4,jenkins打aar包

新建项目,配置流程跟apk一样,但是lib需要做些东西

B0E2ECD2-B296-4887-9DC8-2B3837D00B15.png

但是点击运行,会各种报错

F1663B97-C593-4349-9886-5A3EFBB010E9.png

这个是因为单个libray没有配置对应的工程gradle,所以找不到plugin

把工程的gradle配置的buildscript放到这就可以

52C6EB89-915E-4562-8D1A-31AF7BB707FF.png

运行依然报错

92EF6032-73DB-494D-A5F7-6C8538E28AEE.png

这个是因为我这边依赖的包是androidx的,那么怎么才能在library中引用的androidx呢?

6DD58307-DE2E-4F96-97CD-F2FFCD061806.png

把工程的gradle.properties给copy到libray中

839900B1-7A00-4F57-BF10-EAB0D781FDED.png

这样jenkin打包就可以找到

android.useAndroidX=true

这样最终打包aar成功

42CEEB84-0119-4E66-9D90-4C75FC139944.png

总结下aar在jenkins打包的关键在于———得把libray单独当成application运行的配置给配全

5,jenkins打包aar上传到maven私服

接下来就遇到一个问题,就是自己打包出来的aar一般情况下,不可能自己copy出来,然后放到项目中使用,一般情况下是上传的自己的maven私服上

那么应该怎么做呢?

我们想下,假如没有jenkins是如何上传到maven私服

在gradle中配置上传


apply plugin: 'maven'

def NEXUS_REPOSITORY_URL='http://localhost:8081/repository/news/'

uploadArchives {
    repositories {
        mavenDeployer {
            repository(url: NEXUS_REPOSITORY_URL) {
                authentication(userName: 'admin', password: 'aaaa')
            }

            pom.project {
                version “1.00"
                artifactId 'liblog'
                groupId 'com.hydra.component'
                packaging 'aar'
                description 'update version 1.0.0'
            }
        }
    }
}

然后点击gradle的uploadArchives即可

745FBB2E-7136-4EBA-AE7C-5A4802B3FB11.png

这样就上传到自己的maven私服,

jenkins只是把步骤搬到了远端的服务器,这样,我们就知道怎么修改了

修改上面aar打包的任务task就可以

E8EBE1CD-3181-44F5-AAB5-D366CF314AC2.png

把原来的assemble修改成uploadArchives就可以,

然后点击运行

A4660A11-7411-4CD9-987D-58FBC29E7EDE.png

jenkins运行成功

在查看下maven私服,上传成功

9509ABCA-3833-4836-9EB2-DF1256FEDD34.png

6,接下来还有一些在研究

上面都是自由风格的打包,那么如何定制自己的私人服务呢?

这个使用就要用到pipeline来指定每个步骤

1,pipeline研究