之前已经实现了Android的持续集成,并在项目中应用了一段时间。恰逢现在有几分钟时间,把之前的一些零散的点滴记录和整理一下,供有需要的朋友参考,或后续复用。

需要的准备知识:gitlab、Jenkins、各种plugins、shell等;

另外,推荐一个seafiles,相当于云存储网盘,大家可以把构建的apk包,发送至,供团队内部使用;

当然,你也可以采用ftp为team共享也可以。

一.总体的全局配置:

配置相关plugin,如果需要进行代码检测的话,也需要安装Sonar,部分配置如下:

Sonar installations:

Name :sonar

Server URL:http://192.168.0.100:9000/

Sonar account login:admin

Sonar account password:*****

Database URL:jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true

Database login:root

Database password:****

邮件通知
     SMTP服务器        smtp.exmail.qq.com        
     用户默认邮件后缀    @aituyou.com

二.单个Project中的配置:

触发构建器:

Build after other projects are built

Projects to watch:TSD-Common

源码管理:

Git Repositories: http://121.201.13.32:9000/xiaobao/tsd-navigation.git

Build periodically:日程表

# H -/ * * -

Pull SCM:

# H -/ * * -

Command Shell:

echo `pwd`
echo "buld start time:`date`"
echo '******************* Start build *************************'
##cd /var/lib/jenkins/;./env.sh
cd /var/lib/jenkins/jobs/TSD-Nav/workspace/
#### dos2unix files
dos2unix `find . -name "*.java"` /opt/Android/adt-bundle-linux-x86_64-/sdk/tools/android update project -t -p . -n TSD-Nav
sed -i '$d' project.properties
sed -i '$d' project.properties
sed -i '$a target=android-19' project.properties
sed -i '$a android.library.reference.1=../../TSD-Common/workspace/' project.properties
#sed -i '$a android.library.reference.1=../../TSD-Thirdparty/workspace/qiniu-sdk/' project.properties # change key
sed -i 's/r1Em7hxaGvUmbu3Te5Mne508/0TC6r2T1uTX9xgdUSyQuV5Lo/g' /var/lib/jenkins/jobs/TSD-Nav/workspace/AndroidManifest.xml /opt/ANT/apache-ant-1.9./bin/ant clean
/opt/ANT/apache-ant-1.9./bin/ant debug
/opt/ANT/apache-ant-1.9./bin/ant release # signer
#jarsigner -verbose -keystore /home/tuyou/HAO/TuYouDemoKeyStore -signedjar /var/lib/jenkins/jobs/TSD-Nav/workspace/bin/TSD-Nav-release-signed.apk /var/lib/jenkins/jobs/TSD-Nav/workspace/bin/TSD-Nav-release-unsigned.apk 'tuxiaobao' -storepass 'tuxiaobao'
jarsigner -verbose -sigalg MD5withRSA -digestalg SHA1 -keystore /home/tuyou/HAO/tuyou_android.keystore -signedjar /var/lib/jenkins/jobs/TSD-Nav/workspace/bin/TSD-Nav-release-signed.apk /var/lib/jenkins/jobs/TSD-Nav/workspace/bin/TSD-Nav-release-unsigned.apk tuyou_android.keystore -storepass 'tuxiaobao' # get version number
#HAO = `cat AndroidManifest.xml | grep versionName= | awk -F "=" '{print $2}' |awk -F "\"" '{print $2}'`
#echo ${HAO}
#cd /var/lib/jenkins/jobs/TSD-Nav/workspace/bin
#mv TSD-Nav-debug.apk TSD-Nav-+${HAO}.apk
#ls -la
#cd /var/lib/jenkins/jobs/TSD-Nav/workspace/ #get date
# date -d now +%Y%m%d%H%M%S cd /var/lib/jenkins/jobs/TSD-Nav/workspace/bin
#mv TSD-Nav-debug.apk TSD-Nav-`cat /var/lib/jenkins/jobs/TSD-Nav/workspace/AndroidManifest.xml | grep versionName= | awk -F "=" '{print $2}' |awk -F "\"" '{print $2}'`.apk
mv TSD-Nav-release-signed.apk TSD-Nav-Release-`cat /var/lib/jenkins/jobs/TSD-Nav/workspace/AndroidManifest.xml | grep versionName= | awk -F "=" '{print $2}' |awk -F "\"" '{print $2}'`-`date -d now +%Y%m%d%H%M%S`.apk
cd /var/lib/jenkins/jobs/TSD-Nav/workspace/ #FTP directory :/var/ftp/anonymous/upload
cp /var/lib/jenkins/jobs/TSD-Nav/workspace/bin/TSD-Nav-Re*.apk /var/ftp/anonymous/upload/tsd-app-Release/Nav/ #copy to seafiles
cp /var/lib/jenkins/jobs/TSD-Nav/workspace/bin/TSD-Nav-Re*.apk /home/tuyou/Seafile/Seafile/发布/AutoBuild
echo '******************* Finish build *************************'
echo "buld end time:`date`"

其实没有过多解释,如果需要了解细节的朋友,可以联系我。

CI实践_Android持续集成的更多相关文章

  1. 【持续集成】GitLab CI + Docker 实现持续集成

    GitLab CI + Docker 实现持续集成 一.持续集成(Continuous Integration, CI)的基本概念 概述 在传统软件的开发中,代码的集成工作通常是在所有人都将工作完成后 ...

  2. 利用Travis CI+GitHub实现持续集成和自动部署

    前言 如果你手动部署过项目,一定会深感持续集成的必要性,因为手动部署实在又繁琐又耗时,虽然部署流程基本固定,依然容易出错. 如果你很熟悉持续集成,一定会同意这样的观点:"使用它已经成为一种标 ...

  3. CI / CD /CD 持续集成 持续交付 持续部署

    CI / CD /CD 持续集成 持续交付 持续部署 CI CD 是啥?干了啥? CI continuous integration 持续集成 CD continuous delivery 持续交付 ...

  4. Travis CI用来持续集成你的项目

    这里持续集成基于GitHub搭建的博客为项目 工具: zqz@ubuntu:~$ node --version v4.2.6 zqz@ubuntu:~$ git --version git versi ...

  5. 【下一代核心技术DevOps】:(五)微服务CI与Rancher持续集成

    1. 引言 DevOps的核心魅力是快速的持续集成交付,降低研发和实施运维之间的交互,使得传统的各种扯皮现象统统消失.最重要的是降低成本 保障产品交付可靠性. 使用Rancher作为持续集成的关键环节 ...

  6. GitLab CI/CD 进行持续集成

    简介 从 GitLab 8.0 开始,GitLab CI 就已经集成在 GitLab 中,我们只要在项目中添加一个 .gitlab-ci.yml 文件,然后添加一个 Runner,即可进行持续集成. ...

  7. DevOps实践之持续集成Jenkins(最新版本测试)

    一.安装Jenkins (1)下载并安装配置Java Development Kit 8 [root@localhost ~]# rpm -ivh jdk-8u161-linux-x64.rpm Pr ...

  8. fir.im weekly - 「 持续集成 」实践教程合集

    我们常看到许多团队和开发者分享他们的持续集成实践经验,本期 fir.im Weekly 收集了 iOS,Android,PHP ,NodeJS 等项目搭建持续集成的实践,以及一些国内外公司的内部持续集 ...

  9. CI Weekly #20 | 从持续集成的角度看 “云” 的价值

    很多移动开发工程师对 fastlane 耳熟能详,最近 flow.ci 的 iOS 工作流「编译」这步已采用 fastlane gym 工具(iOS 应用打包签名自动化),进一步优化了构建打包速度.快 ...

随机推荐

  1. Linux 进程状态【转】

    转自:http://www.cnblogs.com/itech/p/3208261.html 来自: http://blog.csdn.net/tianlesoftware/article/detai ...

  2. 【原创】JDK动态代理,此次之后,永生难忘。

    动态代理,这个词在Java的世界里面经常被提起,尤其是对于部分(这里强调“部分”二字,因为有做了一两年就成大神的,实力强的令人发指,这类人无疑是非常懂动态代理这点小伎俩的)做了一两年新人来说,总是摸不 ...

  3. 【JQGRID DOCUMENTATION】.学习笔记.1.安装jqGrid

    前面介绍了怎么使用其MVC方式,很好用.不过,觉得还是只使用前段比较好. 1.1 如何安装 到http://www.trirand.com/blog/?page_id=6 下载. </html& ...

  4. Hibernate,JPA注解@PrimaryKeyJoinColumn

    一对一(One-to-one),主键关联 用例代码如下: 数据库DDL语句 1,CAT表 create table CAT ( id CHAR) not null, create_time ), up ...

  5. node-webkit 新建实例窗口间通信问题解决办法

    终于弄明白这问题了,只要在js文件里加上段代码,就可解决两窗口间通信问题. var str = { username: User.name, userrole: User.role }; var ne ...

  6. word 排版问题

    1.wps word为何设置了页边距后下面的页边距不变呢 在章节选项卡中,查看章节导航,有可能是文档分节了,光标所在的节已经调整,而你看到页是另一节 2.分栏 选中你要进行分栏的内容,进行分栏,也可以 ...

  7. ArrayList集合的实现原理

    一. ArrayList概述: ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长,类似于C语言中的动态申请内存,动态增长内存. ArrayList不是线程安全的,只能用在单线程环境 ...

  8. Oracle数据库的启动与停止

    oracle linux下开启与关闭 .启动ORACLE监听 首先要登录用户oracle:su - oracle oracle@localhost bin]$ lsnrctl --启动oracle监听 ...

  9. out 传值

    public void Out(out int a, out int b) {//out相当于return返回值 //可以返回多个值 //拿过来变量名的时候,里面默认为空值 a=1; b=2; } s ...

  10. grails的layouts模板页面使用

    使用方式1: layouts文件夹下新建文件,名称和Controller名称相同,例如UserController,layouts下面创建user.gsp,此时,user站点下所有的页面都将套用 us ...