記錄之前做過的一些東西,避免忘了。。。
自動打包的流程

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. 修改安裝包名字,格式:項目名_版本號_環境_時間戳.apk 3. 生成下載地址二維碼和下載頁(每個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文件模板
<plist version="1.0"> <dict> <key>items</key> <array> <dict> <key>assets</key> <array> <dict> <key>kind</key> <string>software-package</string> <key>url</key> <string>此處填寫ipa文件的下載地址,如http://xxx.xxx/xxxx.ipa</string> </dict> </array> <key>metadata</key> <dict> <key>bundle-identifier</key> <string>此處填寫工程的bundle-identifier</string> <key>bundle-version</key> <string>此處填寫工程的版本號</string> <key>kind</key> <string>software</string> <key>title</key> <string>得</string> </dict> </dict> </array> </dict> </plist>
生成二維碼
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;
下載頁源碼
Eclipse可直接導入
APP下載主頁

掃描二維碼下載頁
def create_html(file_path, html_name, install_app): print "生成html文件" file = open(file_path + "html/" + html_name, 'w') file.write(u'\ <html lang=zh-cmn-Hans> \ <head> \ <meta charset="utf-8"> \ <title>安裝APP</title> \ <link href="index.css" rel="stylesheet" type="text/css" /> \ </head> \ <body> \ <div id="" class="view row" style="margin-top:30px;"> \ <div class="span12 margin-bottom-20" style="text-align:center;"> \ <div class="spinner"> \ <div id="showtext"><font size="7" color="red">請用瀏覽器打開</font></div> \ <div id="showtext"><font size="7" color="red">點擊安裝后,請按 Home 鍵在桌面查看</font></div> \ <a href="' + install_app + '" id="down_load" class="btn-u btn-u-lg btn-u-green"><i class="fa fa-download"></i> 點擊安裝</a> \ </div> \ </div> \ </div> \ </body> \ </html> \ ') file.close()
