Jenkins Android项目编译配置

本文详细介绍了Jenkins的安装过程,包括下载地址、启动命令以及修改默认端口的方法。接着,文章讲解了系统配置,如查看Git和JDK位置,以及环境变量设置。在解锁Jenkins后,介绍了插件安装、管理员密码创建、系统管理员邮件地址配置等。此外,还阐述了全局工具配置,如JDK和Gradle的设置。在项目配置部分,涉及源码管理、构建触发器、构建环境、构建和构建后操作,包括Gradle脚本配置、Shell脚本以及ArchivetheArtifacts和GitPublisher的使用。最后提到了一些相关插件的安装和用途。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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
系统配置

基础配置

这里只需要根据自己的电脑性能配置执行者数量即可。
在这里插入图片描述

  1. 主目录
    Jenkins储存所有的数据文件在这个目录下. 你可以通过以下几种方式更改:
    使用你Web容器的管理工具设置JENKINS_HOME环境参数.
    在启动Web容器之前设置JENKINS_HOME环境变量.
    (不推荐)更改Jenkins.war(或者在展开的Web容器)内的web.xml配置文件.
    这个值在Jenkins运行时是不能更改的. 其通常用来确保你的配置是否生效.
  2. 系统消息
    这个信息会显示在首页顶部. 用来向用户发布一些系统范围的通知或公告. 兼容HTML标签格式.
  3. 执行者数量
    同时进行构建的数量。
  4. 标签
  5. 用法
    控制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,那么同一时间就只会有一个构建, 一个实行者不会阻止其它构建,其它构建会在另外的节点运行.
  6. 静默期
    如果设置此选项,一个计划中的构建在开始之前需要等待选项中设置的秒数。 这会对下面的情况非常有用:
    合并多封CVS变更通知邮件为一封(当一次提交跨越多个目录时,一些CVS的变更日志邮件发生脚本会接二连三的生成多封通知邮件)。
    如果你的编码风格导致你更改一个逻辑需要几次cvs/svn操作,那么设置一个较长时间的等待会防止Jenkins过早的构建而失败。
    节省构建。如果你的Jenkins有太多并且高频率的构建,设置长时间的等待会舒缓这些构建。
    如果没有在项目级别设置此项,则会使用系统默认值。
  7. SCM签出重试次数
  8. 工程命名限制
Jenkins Location配置

这里需要配置系统管理员邮件地址,方便发送通知。
Jenkins Location

  1. Jenkins URL
    此项是可选的,指定安装Jenkins的HTTP地址,例如http://yourhost.yourdomain/jenkins/. 这个值用来在邮件中生产Jenkins链接.
    此项是有必要的,因为Jenkins无法探测到自己的URL地址.
  2. 系统管理员地址
    Jenkins将用这个地址发送通知邮件给项目拥有者.这里可以填写"foo@acme.org"或者像"Jenkins Daemon foo@acme.org"形式的内容.
全局属性配置

这里可配置项目在编译过程中用到的工具及环境。如:Android SDK,NDK等,用到什么配置什么
全局属性配置

Build Timestamp

需要安装 Build Timestamp Plugin插件。
作用:将BUILD_TIMESTAMP和其他可定制的变量名导出到环境变量和系统属性中。可使用BUILD_TIMESTAMP变量获取时间。
Build Timestamp

邮件通知(可选)

邮件通知
到此系统配置完成。

Global Tool Configuration 全局工具配置

这里只需要配置JDK,Git,Gradle,其它Maven,Ant等使用默认配置即可。
全局工具配置
JDK配置
JDK配置
Gradle配置,这里有一个小细节,路径要配置到/bin前一个目录。
Gradle配置
到此全局工具配置完成。

标记格式器配置

Manage Jenkins ->Configure Global Security.
作用:可以使用Html语法并支持预览。
标记格式器

创建项目

新建Item

在Jenkins首页点击新建Item创建项目。
新建Item

项目类型

项目类型选择及名称填写。
项目类型选择及名称填写

项目配置

如下图共有六大项需要配置
在这里插入图片描述

General

主要负责项目的基本配置。比如项目描述,废弃策略,项目参数等等。
项目描述及回收策略

This project is parameterized 这是一个很重要的选项,选中后可以添加环境变量。
General
添加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]才可以生效。
BUILD_TYPE,APK_NAME
VERSION_NAME<BUILD_TIME
IS_JENKINS
最终效果
最终效果
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中关于此项的说明。
Invoke Gradle Script

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}" 

#发送通知到指定群

Execute Shell

构建后配置

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 TImestamp
Build Name and Description Setter 在“构建环境”块中添加“set build name”设置在编译时"build history"中显示构建信息。
build user vars plugin 安装之后可以使用BUILD_USER,BUILD_USER_ID获取用户信息。
Build Name and Description Setter,build user vars plugin

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值