搭建Jenkins+Sonarqub+Mysql+Android(上篇)

本人阐述的是在Ubuntu16.04系统下搭建jenkins+sonarqub+mysql以实现对Android工程一键自动化打包,上传,邮件通知,代码质量分析全流程

1、 搭建jenkins

  1. JDK配置

    具体参照参见上篇文章

  2. Tomcat配置

    首先下载官网tomcat

    本文选择8.5.x版本用以支持java7android later

    下载完成后为统一管理,在用户目录创建tools文件夹,并将tomcat压缩包移到该目录并解压

    //解压tar.gz文件
    tar zxvf apache-tomcat-8.5.32.tar.gz
  3. 下载Jenkins通用包(.war)

    此处下载2.121.1可维护稳定版本
    将下载的jenkins.war放到apache-tomcat-8.5.32/webapps下

  4. 启动tomcat

    cd ~/tools/apache-tomcat-8.5.32/bin
    ./startup.sh 
  5. 访问jenkins

    打开浏览器并输入http://localhost:8080/jenkins
    首次访问需要输入secret,至于secret是多少图形界面会提示你在哪;输入secret后会提示你安装插件,选择Install suggeted plugins即可

至此说明jenkins成功部署,完成了第一步


2. 配置android sdk

  1. 下载android sdk,此处过程简略,注意本人当时从官网下载的sdk后,发现sdk自带东西太少,导致Android工程无法构建,建议去别的平台下载功能更全的sdk

  2. 配置环境变量

    sudo gedit ~/.bashrc

    在.bashrc文件中追加如下字段

    
    #config androidexport ANDROID_HOME=/home/qwe/tools/android-sdk
    export PATH=${ANDROID_HOME}/platform-tools:$PATH
    export PATH=${ANDROID_HOME}/tools:$PATH
    export PATH=${ANDROID_HOME}/tools/bin:$PATH
  3. jenkins配置android变量

    jenkins -> manger jenkins -> config system


3. 安装git

  1. 安装git

    sudo apt-get update
    sudo apt-get install git
  2. 配置git账号

    git config --global user.name "Your Name"
    git config --global user.email "youremail@domain.com"

4. jenkins 配置

  1. config jenkins url

    jenkins -> manger jenkins -> config system

  2. config JDK, Git

    jenkins -> manger jenkins -> glob config


5. build android project

  1. new item

    回到jenkins;jenkins -> new item


    输入自己的item名字,默认选择freestyle风格,点击OK

  2. config project

    2.1 配置git 仓库地址

    因为要访问仓库所以需要用户密码,需要配置Credentials,点击Add,进入下图页面;Kind 选择Username with password;输入你git的账号密码即可,返回到上页,credentials中勾选你刚创建到credential即可

    2.2 config build

    选择Invoke Gradle script进行build android project

    考虑到不同工程适用gradle版本不同,所以我们选择User Gradle Wrapper,这样完全依赖工程本身的gradlew,jenkins会自动下载所依赖的gradle;当然你也可以使用固定gradle版本进行build


    在Tasks右边输入框中每行输入对应的task名称即可,通常是clean assembleRelease
    save后点击左侧栏的build now,顺利的话project会构建成功

    构建成功后左侧的build histroy 列表会显示你构建记录,蓝色的点表示成功,红色表示失败

    为了能追踪每次构建的包,我们可以在assembleRelease/Debug任务后添加copy apk 任务,保存到一个备份目录,以便后期查阅


    6. 备份APK文件,jenkins可直接访问

    6.1 添加copy任务

    在你的app build.gradle 添加copy 任务,下面代码添加到和android标签同一级层次

    def jenkinsJobName = System.getenv('JOB_NAME') ?: "local_job"def jenkinsBuild = System.getenv('BUILD_NUMBER') ?: "0"def backPath = '/home/qwe/shared/android_build/' + jenkinsJobName + "/" + jenkinsBuildgradle.projectsEvaluated {assembleRelease.doLast {if (jenkinsJobName != "local_job") {println("==========begain copy apk file===========")copy {from('build/outputs/apk/release')into(backPath + '/apks')include('*.apk', '*.txt')exclude('**/*-unaligined.apk')}println("==========end copy apk file===========")println("==========begain copy mapping file===========")copy {from('build/outputs/mapping/release')into(backPath + '/apks/mapping')include('*.txt')}println("==========end copy mapping file===========")} else {println("==========execute task in local machine===========")}}assembleDebug.doLast {println("=============begin copy apk file==========")copy {from('build/outputs/apk/debug')into(backPath + '/apks')exclude('**/*-unaligined.apk')}println("=============end copy apk file==========")}
    }

    6.2 配置tomcat

    配置tomcat作为文件服务器,以便jenkins可直接访问文件

    cd ~/tools/apache-tomcat-8.5.32/conf
    gedit server.xml
    

    找到Connector标签添加URIEncoding属性设为utf-8

    修改web.xml文件,将listing设为true

    gedit web.xml

    创建download.xml文件
    内容如下

    <?xml version="1.0" encoding="UTF-8"?>
    <Context path="/download" docBase="/home/qwe/shared" crossContext="true">
    </Context>

    将其放到apache-tomcat-8.5.32/conf/Catalina/localhost目录下

    重启tomcat

    cd ~/tools/apache-tomcat-8.5.32/bin/
    ./shutdown.sh
    ./startup.sh

    至此在浏览器中可以通过http://localhost/download/来访问/home/qwe/shared目录的所有文件了

    6.3 配置jenkins,以便通过build history直接访问对应job的备份文件

    安装description setter plugin
    jenkins -> manger jenkins -> mange plugins -> Avliable -> Filter 输入description setter 安装后重启jenkins

    重启jenkins只需要访问http://localhost:8080/jenkins/restart即可

    注意:
    此处非常关键,不设置话点击build histroy链接无法跳转
    jenkins -> mange jenkins -> Configure Global Security -> Markup Formatter 设为Safe HTML

    成功后进入自己创建的Item -> configure -> PostBuild Actions -> set build descriptions

    因为我这里已经添加了,所以显示灰色,填写自己需要访问文件的目录即可,红色横线替换自己ip即可

    配置完毕后点击save,再次构建,顺利话build histroy会显示如下样式

    点击链接地址,就会前往对应job buildNumber的apk目录


至此我们可以已经实现了jenknis 自动打包,并可在线访问对应build 的apk文件;

下一篇将在其基础上继续集成apk的上传,邮件通知功能

搭建Jenkins+Sonarqub+Mysql+Android(上篇)相关推荐

  1. 【安卓开发系列 -- 开发环境】Unbuntu 下 Android 持续集成打包环境搭建 -- Jenkins 构建工具安装(gradle + git + android 工具)

    [安卓开发系列 -- 开发环境]Unbuntu 下 Android 持续集成打包环境搭建 -- Jenkins 构建工具安装(gradle + git + android 工具) [1]Unbuntu ...

  2. 【php + MySQL + Android】本地实验环境搭建

    前言 自己要做一个Android App,涉及到服务器端的用户数据管理,而网络上的的资源往往是只讲一个方面.所以自己每完成一段工作,会将开发过程记录下来,并供大家参考,相关文章放在专栏 [php + ...

  3. Linux下搭建jenkins+svn+http+maven自动化部署

    Linux下搭建jenkins+svn+http+maven自动化部署 服务器设置: 卸载redhat的yum,安装centos的yum,配置第三方yum 1.删除redhat原有的rpm -qa | ...

  4. java+spring+mysql配置_JAVA后台搭建(springboot+mybatis+mysql)项目搭建

    前言 上篇文章写了基本环境配置的搭建,接下来我们需要搭建项目了,项目搭建使用的IDEA,springboot项目的搭建非常快只需要几分钟,然后介绍MyBatis以及MySql的基本配置以及项目的Hel ...

  5. 这可能是东半球最详细的Linux下搭建Jenkins服务器实现自动打包的教程(下)

    上一篇我们从零开始,在Linux环境下配置了Jenkins的Android构建环境,但也仅仅是搭建环境,至于参数化构建.输出apk .定时构建.邮件发送等功能因为篇幅的原因没有介绍,本篇博客就来介绍介 ...

  6. 这可能是东半球最详细的Linux下搭建Jenkins服务器实现自动打包的教程(上)

    前言:作为开发者,我们都遇到过这样一个问题,项目在测试期的时候,测试总会找我们打各个环境的包,什么生产包.prd包.pre包,每次都是我们打完包再发给测试.可是打包是要时间的啊,项目小还好,项目大的话 ...

  7. 服务器搭建快速入门——适用于Android应用服务器、微信小程序服务器(一)

    目录 服务器搭建快速入门--适用于Android应用服务器.微信小程序服务器 适用人群 使用方案 准备工作 硬件方面 软件方面 开始搭建 服务器搭建快速入门--适用于Android应用服务器.微信小程 ...

  8. php7搭建平台,在windows7中搭建Apache+PHP+MySQL平台

    在windows7中搭建Apache+PHP+MySQL平台 今天搞了一下午,在电脑上搭建了APM平台 系统:Windows7 Professional EN Apache2.2.9:http://a ...

  9. android 模拟器 device disconnect,Jenkins上的Android模拟器错误:设备离线

    我已经为Jenkins安装了 Android Emulator插件.我可以构建和测试Android项目.我的Jenkins在Ubuntu服务器上运行(仅限终端访问).该项目是从Github撤出的.现在 ...

最新文章

  1. ZH PROPERTIES
  2. 分布式之系统底层原理
  3. can通讯bdc_宝马总线K-CAN3和K-CAN4常见案例
  4. 单身汪的电梯之旅(洛谷P1897题题解,Java语言描述)
  5. 浅谈Hibernate中的几个查询
  6. ARMv8体系结构基础04:算术和移位指令
  7. Struts2的文件上传
  8. 转:GCC,LLVM,Clang编译器对比
  9. 潜流式人工湿地计算_「环保技术」农村混合污水人工湿地处理
  10. 20行Python代码爬取王者荣耀全皮肤
  11. ecshop二次开发之电子票
  12. Pluralistic Image Completion—多元图像补全—摘要翻译—测试教程(附源码)——CVPR 2019
  13. 说一下<黑暗之魂2>的缺点
  14. SQL Server LEFT函数
  15. 基于Python、scrapy爬取软考在线题库
  16. spring boot 源码解析15-spring mvc零配置
  17. iOS基础 UIWindow
  18. Django ORM查询之外键、关系的反向引用
  19. Pycharm生成可执行程序exe
  20. 2021年高教杯数学建模国赛C题生产企业原材料的订购与运输

热门文章

  1. php数组的值传递给另一个数组,如何把一个固定数组的值传递给另外一个数组
  2. 处理之后的图像句柄传到显示框_深度学习目标检测与预处理模块
  3. form select multiple 某个字段是数组_Hive取非Group by字段数据的方法
  4. 三十七、深入Vue.js组件Component(下篇)
  5. 十一、练习:爬取图虫网付费图片
  6. 六十一、Python中的smtplib和email实现邮件发送
  7. 二十二、statsmodels库的使用
  8. 计算机语言是人们设计用于人与计算机交互,计算机语言是人们设计的用于人与计算机交互,计算机能够______与执行的一套规约和语法的集...
  9. 可逆神经网络(Invertible Neural Networks)详细解析:让神经网络更加轻量化
  10. 博士申请 | 澳大利亚悉尼科技大学招收人工智能/软件工程方向全奖博士生