Jenkins安装
下载地址:https://www.jenkins.io/download/
最好LTS稳定版,war包和压缩包都可以。
常用指令介绍
1.查看Git安装位置
在命令行中打入which git, 就会显示git的安装位置了
2.查看已安装的jdk位置
/usr/libexec/java_home -V
启动
启动服务
在安装目录下找到jenkins.war包,在cmd命令窗口中输入下方指令进行启动。
java -jar jenkins.war
Jenkins启动的默认端口为8080,如果想要修改可在命令后追加--httpPort=9090进行修改。
java -jar jenkins.war --httpPort=9090
启动之后在浏览器中直接输入:http://localhost:8080/即可打开Jenkins。
解锁
第一次启动Jenkins需要使用初始化密码解锁。初始密码存储位置按照提示查找initialAdminPassword文件读取器中密码即可。
插件安装及管理员密码创建
环境配置
环境配置一般分为系统配置,全局工具配置以及插件安装。
Configure System 系统配置
路径:ManageJenkins->Configure System
基础配置
这里只需要根据自己的电脑性能配置执行者数量即可。
- 主目录
Jenkins储存所有的数据文件在这个目录下. 你可以通过以下几种方式更改:
使用你Web容器的管理工具设置JENKINS_HOME环境参数.
在启动Web容器之前设置JENKINS_HOME环境变量.
(不推荐)更改Jenkins.war(或者在展开的Web容器)内的web.xml配置文件.
这个值在Jenkins运行时是不能更改的. 其通常用来确保你的配置是否生效. - 系统消息
这个信息会显示在首页顶部. 用来向用户发布一些系统范围的通知或公告. 兼容HTML标签格式. - 执行者数量
同时进行构建的数量。 - 标签
- 用法
控制Jenkins如何在这台机器上安排构建.
尽可能的使用这个节点(Use this node as much as possible)
这是默认和常用的设置. 在这种模式下,Jenkins会尽可能的使用这个节点.任何时候如果一个构建能使用这个节点构建,那么Jenkins就会使用它.
只允许运行绑定到这台机器的Job(Only build jobs with label expressions matching this node)
这种模式下,Jenkins只会构建哪些分配到这台机器的Job. 这允许一个节点专门保留给某种类型的Job.例如,在Jenkins上连续的执行测试,你可以设置执行者数量为1,那么同一时间就只会有一个构建, 一个实行者不会阻止其它构建,其它构建会在另外的节点运行. - 静默期
如果设置此选项,一个计划中的构建在开始之前需要等待选项中设置的秒数。 这会对下面的情况非常有用:
合并多封CVS变更通知邮件为一封(当一次提交跨越多个目录时,一些CVS的变更日志邮件发生脚本会接二连三的生成多封通知邮件)。
如果你的编码风格导致你更改一个逻辑需要几次cvs/svn操作,那么设置一个较长时间的等待会防止Jenkins过早的构建而失败。
节省构建。如果你的Jenkins有太多并且高频率的构建,设置长时间的等待会舒缓这些构建。
如果没有在项目级别设置此项,则会使用系统默认值。 - SCM签出重试次数
- 工程命名限制
Jenkins Location配置
这里需要配置系统管理员邮件地址,方便发送通知。
- Jenkins URL
此项是可选的,指定安装Jenkins的HTTP地址,例如http://yourhost.yourdomain/jenkins/. 这个值用来在邮件中生产Jenkins链接.
此项是有必要的,因为Jenkins无法探测到自己的URL地址. - 系统管理员地址
Jenkins将用这个地址发送通知邮件给项目拥有者.这里可以填写"foo@acme.org"或者像"Jenkins Daemon foo@acme.org"形式的内容.
全局属性配置
这里可配置项目在编译过程中用到的工具及环境。如:Android SDK,NDK等,用到什么配置什么
Build Timestamp
需要安装 Build Timestamp Plugin插件。
作用:将BUILD_TIMESTAMP和其他可定制的变量名导出到环境变量和系统属性中。可使用BUILD_TIMESTAMP变量获取时间。
邮件通知(可选)
到此系统配置完成。
Global Tool Configuration 全局工具配置
这里只需要配置JDK,Git,Gradle,其它Maven,Ant等使用默认配置即可。
JDK配置
Gradle配置,这里有一个小细节,路径要配置到/bin前一个目录。
到此全局工具配置完成。
标记格式器配置
Manage Jenkins ->Configure Global Security.
作用:可以使用Html语法并支持预览。
创建项目
新建Item
在Jenkins首页点击新建Item创建项目。
项目类型
项目类型选择及名称填写。
项目配置
如下图共有六大项需要配置
General
主要负责项目的基本配置。比如项目描述,废弃策略,项目参数等等。
This project is parameterized 这是一个很重要的选项,选中后可以添加环境变量。
添加BUILD_TYPE,APK_NAME,VERSION_NAME,BUILD_TIME,IS_JENKINS。这些变量可以在构建中使用,同时jenkins会将这些变量值设置到项目的gradle中,作为项目的全局属性被访问——需要注意的是要在项目的gradle.properties中定义对应的变量——将变量的值替换gradle.properties中相应变量的默认值。
Tips:想要这些值同步到gradle.properties中必须要在下面的【构建】设置中->增加构建步骤->Invoke Gradle Script->高级->勾选[Pass all job parameters as Project properties]才可以生效。
最终效果
gradke.properties配置
IS_JENKINS = false
BUILD_TIME = ''
APK_NAME = JenkinsDemo
VERSION_NAME = 1.0.0
build.gradle
// 定义编译生成的apk名格式
applicationVariants.all { variant ->
variant.outputs.each { output ->
def newName
if ('true'.equals(IS_JENKINS)) {
println("jenkins build ==> $BUILD_TIME")
newName = APK_NAME + "-v${variant.versionName}-$BUILD_TIME-${variant.buildType.name}-unsigned.apk"
} else {
if ('debug' == variant.buildType.name) {
newName = APK_NAME + "-v${variant.versionName}" + "-${variant.versionCode}-debug.apk"
} else {
newName = APK_NAME + "-v${variant.versionName}" + "-${variant.versionCode}-${variant.buildType.name}.apk"
}
}
output.outputFileName newName
}
}
源码管理
源码管理选择Git方式,在Repository URL中输入项目地址,在Branches to build中输入要执行构建的分支。
构建触发器
构建环境
Add timestamps to the Console Output:选中后,在编译时控制台输出的编译log会带有时间。
Set Build Name:需要插件Build Name and Description支持,用于设置编译页面上的信息。
Set jenkins user build variables:需要插件Setter build user vars plugin支持,用于获取${BUILD_USER}信息。
构建
Invoke Gradle Script模式
Gradle相关执行脚本配置:
clean:构建前先清楚一下缓存。
assemblexx:根据在General中配置的BUILD_TYPE来构建release或debug包。
–stacktrace:输出关键性的堆栈信息。
–debug:输出日志级别。
Tips:Pass all job parameters as Project properties.此项必选,作用可参考General中关于此项的说明。
Execute Shell
Shell脚本:
#!/bin/bash
echo "----------------当前打包分支 ${BUILD_BRANCH}----------------"
chmod 777 gradlew
chmod 777 gradlew.bat
#gradle.properties文件相对路径,会修改这里的版本号
PROPERTIES_FILE='jenkinstest1/gradle.properties'
#打包module名称
MODULE_NAME='jenkinstest1'
GROUP_ID='com.study.jenkinstest1'
ARTIFACT_ID='testone'
sed -i -E "s/VERSION=.*/VERSION=${VERSION_NAME}.${BUILD_NUMBER}/g" ${PROPERTIES_FILE}
./gradlew -d :${MODULE_NAME}:clean :${MODULE_NAME}:assemble${BUILD_TYPE} --stacktrace --debug
git add ${PROPERTIES_FILE}
git commit -m "Jenkins:update version ${VERSION_NAME}.${BUILD_NUMBER} by ${BUILD_USER_ID}" --author "${BUILD_USER_ID}"
#发送通知到指定群
构建后配置
Archive the Artifacts 存档构建文件。
Git Publisher 推送修改到到Git。
相关插件
安装方法:Manage Jenkins->Manage Plugins。
Date Parameter:时间插件,安装之后可在General中添加Date Paramter参数,可以使用配置的BUILD_TIME获取时间,日期格式,主要用于在参数化编译时格式化输出日期时间,例如:yyyyMMdd_HHmmss。
Build Timestamp:时间插件,安装之后可在Manage Jenkins->Configure System中进行配置并导出BUILD_TIMESTAMP变量。
Build Name and Description Setter 在“构建环境”块中添加“set build name”设置在编译时"build history"中显示构建信息。
build user vars plugin 安装之后可以使用BUILD_USER,BUILD_USER_ID获取用户信息。