自动化测试

Ubuntu使用Jenkins进行Android自动打包

2017-06-08  本文已影响118人  WhatsID

注1:Jenkins依赖于Java运行环境,所以安装Jenkins之前需要先安装Java
注2:本文使用svn来checkout代码
注3:打包完之后可将生成的apk传输到本机的ftp目录,将本机作为打包服务器
注4:假如本机ip地址为192.168.100.60,那么局域网内其他电脑访问192.168.100.60:8080和ftp://192.168.100.60/可以访问到本机的Jenkins和ftp目录。所以本机适合做一个打包服务器

1. 安装Jenkins

wget -q -O - https://pkg.jenkins.io/debian/jenkins-ci.org.key | sudo apt-key add -
sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
sudo apt-get update
sudo apt-get install jenkins

2. 配置

3. 启动

/etc/init.d/jenkins {start|stop|status|restart|force-reload}

sudo cat /var/lib/jenkins/secrets/initialAdminPassword

9b4e46e0c33e4e99b9bbc916a7adccac

4. 安装插件

安装方式也比较简单,直接在Jenkins的插件管理页面搜索上述插件,点击安装即可。

5. 全局配置

图1

设置完成后保存,进入主面板

6. 新建项目

图3 图4 图5

重点总结基于Build periodically和Poll SCM的日期表写法

  1. 第一个参数代表的是分钟 minute,取值 0~59;
图6 图7

7. 使用命令行创建工作目录

注:这步是我自己在用的,先使用命令行将项目设置好,Jenkins中的项目就可以直接运行,省去了很多构建错误的麻烦。

export PATH=/home/whatsid/Studio/gradle-3.3/bin:$PATH
export ANDROID_HOME=/home/whatsid/Android/Sdk

  1. 上面图3中设置了Jenkins的工作目录,此时这个目录应该还没有被创建(如果已有也可以),顺序执行下面的命令行(有些命令需要改动某些部分,请注意)
    注1:要看懂下面每行命令行的意思,否则容易出错,命令行都不难
    注2:例如svn仓库的地址是svn://xxxxxxxxx/trunk,那么执行svn co命令的时候,check下来的代码会在trunk目录下,所以下面的命令行没有mkdir trunk,这点需要注意
    注3:执行命令行的时候//以及后面的内容不要拷贝,这是注释
    注4:执行完下面的命令后就会在~/Jenkins/launcher/trunk/app/build/outputs/apk下生成apk包

cd ~
mkdir Jenkins
sudo chmod -R 777 ~/Jenkins
cd Jenkins
mkdir launcher //假如有多个Jenkins项目,为了方便管理,每个项目有自己单独的工作目录,如果要创建第二个项目,就可以mkdir launcher2,不至于多个项目混在一起
sudo chmod -R 777 ~/Jenkins/launcher
cd launcher
svn co your_svn_address --username your_svn_username //执行这行后需要输入svn密码
cd trunk
svn upgrade
svn update
sudo chmod -R 777 ~/Jenkins/launcher
gradle clean
gradle assemble
sudo chmod -R 777 ~/Jenkins/launcher

  1. 也可以使用组合命令,一步到位

cd ~;mkdir Jenkins;sudo chmod -R 777 ~/Jenkins;cd Jenkins;mkdir launcher;sudo chmod -R 777 ~/Jenkins/launcher;cd launcher;svn co your_svn_address --username your_svn_username;cd trunk;svn upgrade;svn update;sudo chmod -R 777 ~/Jenkins/launcher;gradle clean;gradle assemble;sudo chmod -R 777 ~/Jenkins/launcher;

8. 执行完上面的命令行后,Jenkins项目面板中点击立即构建即可构建成功

构建过程中有可能遇到以下错误

问题1. the working copy at '/home/whatsid/Jenkins/launcher/trunk' is too old (format 8) to work with client version '1.9.3 (r1718519)' (expects format 31). You need to upgrade the working copy first.

解决办法:在/home/whatsid/Jenkins/launcher/trunk目录下执行svn upgrade

问题2. java.nio.channels.NonWritableChannelException

解决办法:给权限,sudo chmod -R 777 /home/whatsid/Jenkins/launcher/trunk

问题3. org.tmatesoft.svn.core.SVNException: svn: E200030: BUSY

解决办法:删除.svn文件夹再重试,sudo rm -rf /home/whatsid/Jenkins/launcher/trunk/.svn

9. 安装ftp服务(可选)

sudo apt-get install vsftpd

首先执行

sudo gedit /etc/vsftpd.conf

然后添加

#允许匿名访问
anonymous_enable=YES
#接受本地用户
local_enable=YES
#允许上传
write_enable=YES
#用户只能访问限制的目录
chroot_local_user=YES
#设置固定目录,在结尾添加。如果不添加这一行,各用户对应自己的目录,当然这个文件夹自己建
local_root=/home/ftp

调整文件夹权限,避免“500 OOPS: vsftpd: refusing to run with writable root inside chroot()”

sudo chmod 777 /home/ftp

如果要将生成的apk放在/home/ftp/download/launcher中

cd /home/ftp
mkdir download
cd download
mkdir launcher
sudo chmod -R 777 /home/ftp/download

重启vsftpd

sudo service vsftpd restart

这样就可以用ftp://localhost/download/ 来访问本机的ftp文件夹了。看到的是local_root设置的/home/ftp,并且限制在该目录。

10. Jenkins项目自动打包生成的apk传入ftp文件夹下(可选)

图8 图9

#! /bin/bash
datename=$(date +%Y%m%d_%H:%M:%S) #生成20170606_14:20:35格式的时间戳
mkdir -p /home/ftp/download/launcher/$datename #生成时间戳为名称的文件夹
#将生成的apk、logs、mapping三个文件夹拷贝到生成的文件夹中
cp -r /home/whatsid/Jenkins/launcher/trunk/app/build/outputs/apk/ /home/ftp/download/launcher/$datename
cp -r /home/whatsid/Jenkins/launcher/trunk/app/build/outputs/logs/ /home/ftp/download/launcher/$datename
cp -r /home/whatsid/Jenkins/launcher/trunk/app/build/outputs/mapping/ /home/ftp/download/launcher/$datename
#删除生成的文件夹,以免下次重复拷贝
rm -rf /home/whatsid/Jenkins/launcher/trunk/app/build/outputs/apk
rm -rf /home/whatsid/Jenkins/launcher/trunk/app/build/outputs/logs
rm -rf /home/whatsid/Jenkins/launcher/trunk/app/build/outputs/mapping

sudo chmod -R 777 /home/whatsid/launcher.sh

以上

上一篇 下一篇

猜你喜欢

热点阅读