记录之前做过的一些东西,避免忘了。。。
自动打包的流程
Jenkins配置项目
源码管理
构建触发器
查询Git服务器的代码是否有提交
Android Gradle编译
-Plog_enable_cmd='true' 是否开启log开关(线上设置的false)-Pserver_environment_cmd='测试' 传一个全局属性,编译指定的环境-q config 执行config任务,使上面两个全局属性生效
iOS xcodebuild编译
xcodebuild先编译成.app文件-workspace 工程的.xcworkspace路径-scheme 在工程目录下,xcodebuild -list查询-configuration 在xcode新建三个configuration,用以区分测试、仿真、线上环境-derivedDataPath build目录xcrun把.app文件编译成.ipa文件-sdk iOS sdk,iphoneos是真机-v 要编译的.app文件路径-o .ipa输出路口
构建后操作
执行Python脚本,做以下的事情:
1. 拿到此次编译的环境和版本号(到项目文件查询)2. 修改安装包名字,格式:项目名_版本号_环境_时间戳.apk3. 生成下载地址二维码和下载页(每个app都有自己的二维码下载地址和下载页,类似蒲公英,扫描二维码跳转app下载页)4. iOS每个安装包需要配置一个plist文件,配置app信息,用于下载 (下面有模板)5. 上传二维码图片、下载页和安装包到下载服务器6. 保存安装包数据到数据库
iOS的安装命令(在下载页的“下载安装”按钮里配置的此命令)
下面的命令可以在线安装iOS的ipa安装包,url后面跟plist文件地址
plist文件里面要配置你的安装包的一些信息,下面有模板。每次执行python脚本的时候生成一个plist文件用于下载itms-services://?action=download-manifest&url=plist文件url
plist文件模板
items assets kind software-package url 此处填写ipa文件的下载地址,如http://xxx.xxx/xxxx.ipa metadata bundle-identifier 此处填写工程的bundle-identifier bundle-version 此处填写工程的版本号 kind software title 得
生成二维码
def gen_qrcode(install_app, config_info, file_name, ftp_url, project_path): qr = qrcode.QRCode( version=1, error_correction=qrcode.constants.ERROR_CORRECT_L, box_size=4, border=1 ) image_name = file_name.replace(".ipa", "") + ".png" qr.add_data(install_app) qr.make(fit=True) img = qr.make_image() img.save(project_path + image_name)
编译失败发送报警邮件
用的Editable Email Notification插件
下载页面
数据库表
CREATE TABLE `app_info` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `app_name` varchar(150) DEFAULT NULL COMMENT '安装包名称', `os_name` varchar(50) DEFAULT NULL COMMENT '手机系统(Android, IOS)', `config` varchar(50) DEFAULT NULL COMMENT '环境(测试-1,仿真-2,线上-3)', `versions` varchar(50) DEFAULT NULL COMMENT '版本号', `app_path` varchar(200) DEFAULT NULL COMMENT '安装包地址', `qrcode_path` varchar(150) DEFAULT NULL COMMENT '二维码图片地址', `app_time` datetime DEFAULT NULL COMMENT '安装包生成时间', PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=1624 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;
APP下载主页
扫描二维码下载页
def create_html(file_path, html_name, install_app): print "生成html文件" file = open(file_path + "html/" + html_name, 'w') file.write(u'\ \ \ \安装APP \ \ \ \\\ \ \ ') file.close()\ \\