自动打包Jenkins集成以Android为例

本文将介绍Jenkins的安装(包括少许的配置),集成例子使用svn+gradle来集成android。
目录送给你

下载安装

官方下载 ,可以选择下载安装包。也可以使用war包。
war包可以放到tomcat的webapps目录,来通过tomcat来启动jenkins。
这里写图片描述
安装:
安装包直接安装,最后打开http://localhost:8080
war包开启tomcat服务后,打开http://localhost:8080/jenkins来进行安装。
安装中需要输入密钥,war包安装是从控制台复制,安装包是在xml文件中(页面有提示)

插件列表

除了默认安装的外android还需要,可以直接搜索
Android Lint Plugin
Gradle Plugin
Subversion Plug-in(SVN)
description setter plugin(构建完毕后显示的设置)—如果想显示html格式的,则需要设置 全局安全设置(Markup Formatter 为 Safe HTMLs)
Git plugin(Git插件)
Subversion Plug-in(SVN插件)
安装插件的时候可能出错无法安装,没有关系,我们可以先跳过,等jenkins安装完成后再处理

插件安装失败的处理

找到Jenkins下的hudson.model.UpdateCenter.xml
修改url为:http://mirror.xmission.com/jenkins/updates/update-center.json
再次打开即可重新选择插件安装

Jenkins的系统配置

下面我就我修改的系统配置做一下说明

全局安全配置

1.Markup Formatter 选择为 Safe HTMLs。用来html格式的内容(我构建后显示的文字写成了html格式)

全局工具配置

  1. JDK,选择jdk的目录(这个没什么好说的)
  2. Git
    SVN好像不用配置。
  3. gradle (这里是重点了~~~)
    首先我项目中使用的是jenkins配置的gradle,所以我需要配置在全局工具中。如果你使用的是gradlew也就是你的svn或者git中有gradle,那这个配置可以不用。
    但是我实验gradlew的时候老是出错,所以选择了jenkins的gradle,因为我还一个eclipse项目(┬_┬)
    另一点,我电脑没有设置gradle全局变量(其实没什么用,而且gradle一直在升级)
    下面是我配置的gradle,是不是有点多,你只配置你项目打包需要的就行。
    这里写图片描述

新建项目

终于进入正题:新建–>起名字–>构建一个自由风格的项目
下面说一下项目的参数配置

项目配置

如果不懂的可以点开每个条目后面的?(问号),解释的还是很清楚的

General

我这里只说2个
1. 参数化构建过程
这里可以放置打包的参数,比如我打release或者debug包。也可以放一些特殊参数,直接可以在build.gradle通过 $参数名 来获取到。当然我每个项目都添加了一个String的params,用来说明这次打包的版本说明,比如我打包的用途,来做区分。
2. 使用自定义的工作空间
默认的使用jenkins的工作空间,我用的war包 所以在C:\Users\a.jenkins\workspace
使用自定义的会单独在C:\Users\a.jenkins\自定义的空间。构建是会新建一个 工程名称的文件夹下,其实影响并不大。

源码管理

如果我们把git插件和svn插件下载好后,可以远程下载代码。
git或者svn的帐号是通过add 添加的
说几个经验把:
1. 我们开始测试阶段可以先使用none来通过本地构建,成功后在使用远程来后去源码。
2. 我们可能需要下载多个模块来构建,这里可以先写一个模块的地址,然后把脚本写到某个文件,再后面的构建阶段把其他的下载下来。具体后面还会提及。

构建

构建之前还一个构建触发器,可以使用定时构建,也可以每提交一次就构建。由于我选择的是手动构建,所以我怕误导大家,说错话。
回归正题。构建的时候我们可以选择gradle、ant等。我以gradle为例子来说明。
1. 构建之前,你可能需要有一些准备,那么可能用到Execute shell比如刚才说的下载其他的模块。我的eclipse的项目就是把build.gradle等跟gradle有关的都写到了一个文件中,正常还是用eclipse开发,构建的时候把文件赋值到根目录。
2. 构建,gradle使用Invoke Gradle script 我推荐使用全局配置的gradle版本(我使用gradlew老是出错),下面直接写gradle task,这里我们可以添加params,比如assemble${BUILD_TYPE},根据参数可以打包debug、release。
3. 构建完后,我这里需要把apk放到蒲公英中,蒲公英官网有文档说明如何集成用jenkins访问蒲公英。也是用到了Execute shell
我项目中都是把脚本放到代码中了,也可以直接在jenkins中写。
这里写图片描述
我的clone的脚本主要是把文件放到根目录

#!/bin/bash

echo "====================== COPY INIT FILE ==========================="
cd $WORKSPACE
cd 项目
cd jenkins
cd init
for fileItem in `ls` ; do
    cp -rp $fileItem $WORKSPACE/$fileItem
done

我的uploa脚本主要是把打好的包发布到蒲公英

#!/bin/bash

filename=""

if [ $BUILD_TYPE == "Release" ]; then
    filename=$WORKSPACE/market/build/outputs/apk/market-release.apk
    else
    filename=$WORKSPACE/market/build/outputs/apk/market-develop.apk
fi

#创建json日志文件
postfiledir=$WORKSPACE/tmp
postfilename=$postfiledir/upload_app.txt
if [ ! -e "$postfiledir" ]; then
    mkdir $postfiledir
    echo "创建了日志文件夹"
fi
if [ ! -e "$postfilename" ]; then
    touch $postfilename
    echo "创建了日志文件"
fi

curl -F "file=@${filename}" -F "uKey=蒲公英的userkey" -F "_api_key=蒲公英的apikey" http://www.pgyer.com/apiv1/app/upload >${postfilename}
url=$(cat ${postfilename}|awk -F'"' '{print $(NF-1)}'|sed 's#\\##g')
echo "appQRCodeURL:<a>$BUILD_TYPE</a><br><img src=$url>"

文章最后对一些用到的简单的shell脚本说明一下。

构建后操作

构建完后,我用来显示二维码,和该版本的信息。这里说明2点
1. 正则表达式的匹配 构建后我们可以使用正则表达式来匹配控制台的输出来。我这里匹配的是我刚才脚本的二维码地址 appQRCodeURL:(.)。支持多个正则,appQRCodeURL:(.),(.*)
2. deccription中可以写我们的构建参数、正则(使用\n,表示第几个正则)等。
这里写图片描述
3. 展示的乱码问题,我由于使用的war包没找到jenkins.xml文件。所以我在构建参数中添加了一个String parameter 在description中写成$BUILD_CONTENT \1,来展示构建的说明。

好了,基本就这些,最后写一下shell脚本的简单语法,我原来并没有用过。

Shell 脚本

开始使用#!/bin/bash声明文件属性
1.   echo ""    打印
2.   变量声明中间没有空格:APP_GIT_NAME=
3.  复制文件:
cp -rp $filename $path/$filename
4. 遍历文件夹下的文件:
for fileItem in `ls` ;do
cp -rp $fileItem $filepath/$fileItem
done
5.  if语句,需要使用fi来结束,[] 之间要有空格
if [ -e "$CURR_PATH/lib" ]; then
rm -rf $CURR_PATH/lib
fi
最后有一个git clone的好办法,可以在地址中加入用户名和密码,例:
https://用户名:密码@gitee.com/xxx/xxx.git
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值