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…
示例命令:
- 安装最新的 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包下
下载好的jenkins.war包放到tomcat的webapps下
接下里在iterms中输入
cd /Users/hydra/Documents/tomcat/apache-tomcat-8.5.72/webapps
进入对应的目录下,然后输入
java -jar jenkins.war —httpPort=1080
执行
其实直接输入下面命令,没出错,也行,上面的命令是因为jenkins的8080端口被占用,会报错,这样就会出问题
java -jar jenkins.war
在浏览器中输入下面网址
老爷爷头终于出现了
这个时候,你会发现,初始的账号密码是啥啊?没有注册的地方啊?
果然是一步一坑啊!
2,jenkins的注册
接下来就是获得初始密码
第一步:找到.jenkins文件夹
在使用jenkins的时候不小心把admin密码忘记了,下面来修改找回admin密码
Jenkins专用的用户数据存放在JENKINS_HOME/users目录
点击上面的config.xml文件打开
把节点的内容(图中黑色的那一串)换成#jbcrypt:10$DdaWzN64JgUtLdvxWIflcuQu2fgrrMSAMabF5TSrGK5nXitqK9ZMS
(注意前后有木有空格)
保存,重启Jenkins程序
然后输入用户名和密码,就登录成功了,这个估计就是了
jenkins账户和密码
账户:admin
密码:111111
然后终于进来了
3,Jenkins的使用
Jenkins安装好了,终于到使用Jenkins了
我在配置的时候遇到很多坑,现在就安装步骤写,避免大家踩坑
1,jenkins的各种插件得先安装好
点击manage plugins
比如,git,github,gitlab,gitee,你用的是那个地址就下在那个
然后,比如gradle得下载
缺少那个下载那个,以后有新功能的,也可以在这里查看
2,就是配置各种变量
配置jdk
配置git
配置gradle,可以配置多个
配置android_home
3,Jenkins新建任务的配置和运行
新建任务
然后配置git链接
配置编译的gradle版本和编译的步骤
接着点击运行就可以了
在控制台可以查看他的task步骤
运行成功以后就可以在workspace中查看打出来的apk
那么怎么让打出来的包直接看出来呢?
在项目中配置归档,
这样在打出来的包中就可以看到打出来的包
这样一套全部打包流程就整出来了
4,jenkins打aar包
新建项目,配置流程跟apk一样,但是lib需要做些东西
但是点击运行,会各种报错
这个是因为单个libray没有配置对应的工程gradle,所以找不到plugin
把工程的gradle配置的buildscript放到这就可以
运行依然报错
这个是因为我这边依赖的包是androidx的,那么怎么才能在library中引用的androidx呢?
把工程的gradle.properties给copy到libray中
这样jenkin打包就可以找到
android.useAndroidX=true
这样最终打包aar成功
总结下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.0。0"
artifactId 'liblog'
groupId 'com.hydra.component'
packaging 'aar'
description 'update version 1.0.0'
}
}
}
}
然后点击gradle的uploadArchives即可
这样就上传到自己的maven私服,
jenkins只是把步骤搬到了远端的服务器,这样,我们就知道怎么修改了
修改上面aar打包的任务task就可以
把原来的assemble修改成uploadArchives就可以,
然后点击运行
jenkins运行成功
在查看下maven私服,上传成功
6,接下来还有一些在研究
上面都是自由风格的打包,那么如何定制自己的私人服务呢?
这个使用就要用到pipeline来指定每个步骤
1,pipeline研究