今天终于把jenkins搞通了,记录一下自己使用的历程
先上一张成功图
这是用jenkins 定时构建成功的.
安装软件
第一步:安装java
由于我是在项目已经完善的时候,才决定使用jenkins的,所以是有java 环境
如果你的电脑上没有java,请先安装java.
java有两个版本 Open JDK 和 Oracle JDK
请酌情选择自己需要的版本
Ubuntu18.04是自带OpenJDK的,我使用的是Oracle JDK,开发更稳定一些
如果要安装,请自行查找java的具体安装方法,这里就简单介绍两种安装方法
Open JDK安装命令
sudo apt install default-jdk
检查安装版本
javac -version
Oracle JDK安装命令
sudo add-apt-repository ppa:webupd8team/java
sudo apt update
sudo apt install oracle-java8-installer
第二步:安装Jenkins
wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
sudo apt-get update
sudo apt-get install jenkins
第三步:启动jenkins
sudo systemctl start jenkins
注意:第一次启动,这句必须要执行,不然会出现jenkins 登录后白屏
第四步:设置Jenkins
1.>输入地址访问jenkins
注意 :1:如果你的jenkins装在服务器上,就用服务器的域名或者ip地址访问Jenkins.默认端口号:8080
2,如果你只是想我一样装在自己的电脑上,使用http://localhost:8080/访问
>2.输入密码
输入地址后,进入到密码输入界面
密码所在的路径,图上说的很清楚,打开复制就好
查看密码命令
sudo vi /var/lib/jenkins/secrets/initialAdminPassword
输入后可看到密码,复制出来,粘贴到密码框
3:输入密码后,跳转到建议安装插件界面
直接选择建议安装的插件,安装就可以了
我在这一步出现了一个问题:由于不清楚到底该安装什么插件,我选成了手动选择安装,
然后我就变成了这样.
会有人奇怪,为什么明明不知道安装什么插件,还要偏偏选择手动安装插件?
恩,我也不知道当时我脑子里想的啥,别问我是为何,就让我忘了这一切
选择插件之后,我就出现了一个问题:
白屏
搜索了一大圈,最后发现,是因为没有启动jenkins 导致的.
如何启动,请看第三步,启动jenkins
解决完白屏的问题,重新输入url.我就看到了如下界面
安装就算告一段落了.
你以为这就结束了?不,不可能!
接下来的配置,会更让你崩溃
Jenkins 配置gitlab
第一步:安装插件
在菜单中选择 Manage Jenkins -> Manage Plugins
看到图片左边的Manage Jenkins没? 看到图片最下边中间的Manage Plugins没?
之所以特别说明,是因为,我在网上查教程的时候,有些是显示的中文,有些是显示的英文.估计是跟插件有关,我特意贴图,如果你的是中文,对应不上Manage Jenkins 和 Manage Plugins ,你可以对应图标,看到文字前边的图了吧,是的没错.图标对上,就差不多了
进入到如下界面
这里有四个菜单可以选择,
Update : 可升级的插件
Available : 可安装的插件
Installde:已安装的插件
Advanced:可配置代理,可通过上传文件安装插件.由于网络原因,无法正常安装插件,就可以先去下载插件,在通过这里选择文件安装
插件列表
- Git plugin
- Gradle Plugin
- Email Extension Plugin
- description setter plugin
- build-name-setter
- user build vars plugin
- Post-Build Script Plug-in
- Branch API Plugin
- SSH plugin
- Scriptler
- Dynamic Parameter Plug-in
- Git Parameter Plug-In
我是在Available中一个一个手动搜索,然后勾选,在统一下载安装的.非常麻烦.可是我实在没有好的办法啊,谁让当初选插件的,脑子抽筋了呢
这个列表,是在网上搜索的,有一些是搜索不到的,本着宁可多下载,不可错过的原则,长得差不多的都给下载了.万一漏了一个,到后续步骤不行了咋办?男人,怎么能关键时刻不行呢!
下载完成后重启,然后就是配置了
第二步:配置
在Manage Jenkins -> Global Tool Configuration中
配置Git ,JDK,Gradle
说明一下,的JAVA_HOMER RADLE_HOME 中的路径必须跟系统环境变量中的路径一致,
- JDK:别名=任意,JAVA_HOME=JDK目录
- Git:别名=任意, Path to Git executable=Git安装目录\bin\git.exe
- Gradle:别名=任意,GRADLE_HOME=Gradle下载目录\Gradle\gradle-2.xx
Gradle尽量配置多个,因为项目的gradle版本可能不一样,所以需要选择不同的Gradle版本进行编译 - 我使用的Gradle 是Android studio自带的,所以路径不太常规,如果觉得不太好看,可以自行下载配置,不过要保证版本统一.
另外 在Manage Jenkins -> Configure System ->Global properties 选项中 勾选 Environment variables
需要注意,这里的name: ANDROID_HOME 一定要跟 环境变量中的 ANDROID_HOME 一致, value:也要保持一致
接下来就是
创建项目
点击首页的 New Job 或者左边菜单的New item 创建新项目
选择Freestyle Project 如果你的显示的是中文,应该显示的是"构建一个自由风格的软件项目"
给自己的项目起个名字,一般就用apk的名字就好,省的以后项目多了,搞混
我用的是中文,也没什么问题.
点击下边的ok 进入到项目设置界面
注意看上边的那一栏菜单,可以直接点击跳转到制定菜单,也可以向下滚动到你想要的菜单位置
点击Source Code Management (中文版显示 源码管理)
Repository URL :项目的地址,我这里是gitlab的SSH地址,也可以用http地址,但是不建议使用,因为我在用http地址的时候,构建会出现没有权限的问题
Credentials:秘钥,也叫通行证,点击添加,进入添加秘钥界面
Kind:秘钥类型,这里要跟上一步的Repository URL对应,
1>如果你用的是http地址,就选择Username with password
username :你的gitlab账号
password:密码
2>如果你用的是SSH地址,就要选择 :SSH Username with private key
id:gitlab账号
Username:用于显示的秘钥名称
Private key :私钥 必须选中Enter directly
然后,在输入框里点击add ,添加私钥,注意了,一定是私钥,你在gitlab上添加的是公钥,不能拿gitlab上的公钥来用
私钥的位置 ~/.ssh/id_rsa ,公钥是~/.ssh/id_rsa.pub,我们在这里用的是私钥,
sudo gedit ~/.ssh/id_rsa
打开以后全部复制粘贴,一个字符串的都不少的全部复制粘贴,千万不要觉得开头的----和结尾的----- 没用,千万千万,要全部复制.因为他们也是秘钥的一部分,一个过来人的血与泪的经验劝告你
然后点击ADD添加
在Gredentials 中选择我们刚刚添加的通行证
Branch Specifier: 是选择构建的版本.你如果没有版本切换的需求,就可以直接写你需要的版本,千万,不要把版本名字写错了,千万.不然,会找不到版本,构建失败.因为你手写的.跟正确的版本号往往只差一个字母,非常难发现问题在哪.建议你用git命令输出版本,然后复制粘贴,不容易出错.
实际应用中,你的项目往往会有很多个版本,你需要构建时选择制定的版本.这个我们在后边单独讲吧.
接下来,点击或者滚动到Build (中文"构建")
选中Invoke Gradle
1>Gradle Version: 选中你前边全局配置里配置的Gradle 版本,如果你配置了多个Gradle,一定要用你项目中使用的Gradle版本.因为Gradle是不向下兼容的,如果版本不一致,GG思密达
项目中Gradle版本查看,在 根目录/gradle/wrapper/gradle-wrapper.properties中
请务必保证,android studio 的gradle版本,和jenkins中所指定的版本一致.
2>Taks:Gradle命令,用于构建apk
我的命令是:clean assembleRelease --stacktrace --debug
图中我用的不太一样: ${BUILD_TYPE}
这个是用来构建时选择版本的,我手动选择构建Release 版本,还是Debug版本
这个也放到后边讲
点击保存按钮,就可以手动打包了
开始构建
点击保存后会进入项目界面
点击左侧菜单的 Build with Parameters 就开始构建了
下边的Build History就是构建历史,
蓝色的圆圈代表构建成功,如果是红色就是构建失败,点击后可以进入看到构建的一些信息
点击左侧的Console Output
可以查看控制台输出的日志,如果构建失败,就可以从这里找原因
如果你看到Finish :Success那么恭喜你,构建成功.生成的apk在你的jenkins安装目录下 ~/jenkins/workspace/*job名称*/app/build/output/apk/中.
我用的是ubuntu18.04 路径就是这个.其实这个 workspace 就是对应你的jen工作空间,里边的项目是从你gitlab上clone下来的,想必小伙伴们看到workspace里的内容,就会有一种恍然大明白的感觉了
定制想要的功能
1:参数化构建.如果使用任何一个参数化构建功能,请务必勾选Build ->Invoke Gradle script ->Pass all job parameters as Project properties 如果不勾选,将会不生效
选择git分支
上边我们提到,如果我的项目有很多人同时开发,有非常多的版本,我怎么选择打包自己想要的版本?
1>在项目的Configure-> General中 选中 This project is parameterized (中文显示:参数化构建过程)
点击Add Parameter -> Git parameter
name:branch
Description:说明
Parameter Type:选择Branch or Tag
Default Value : 默认分支(gitlab 里的分支),千万不要写错分支号了
这样Build项目的时候,就会出现选择分支
选择构建Release 还是Debug版
点击Add Parameter -> Git parameter ->Choice Parameter
将Build 中Tasks:内容修改成如下
就可以选择Release 和Debug版本 了