前言:目前市面上iOS開發持續集成的方案不少,在主流的分發平臺fir、蒲公英都有相應的方案介紹(Fastlane,Jenkins,實用又強大);但就實際需求來講仍是不夠友好;在前面使用Python爲公司開發兩個自動化腳本之餘,產生使用Python開發一個徹底傻瓜式的自動化腳本,並知足自身需求,在公司另外一臺Mac mini上進行自動打包上傳,測試人員可HTTP調起打包上傳、自動通知產品、測試相關人員。html
本人Python新手,該腳本小工具、小工具、小工具目前自學自用,許多不足之處,大神見諒指教。若是您有更好的建議,能夠一塊兒學習交流。🤓python
python3 Andromeda.py (暫不考慮兼容 Python 2)
複製代碼
/*
// 經過瀏覽器內網訪問
/*
target(可選) 項目Target
type(可選) 參數 構建 的IPA類型 0:appstore / 1:adhoc / 2:enterprise / 3:development
pod (可選) 執行pod 指令 install update update MJRefresh ....
*/
http://192.168.0.190:8989/ipa
or
http://192.168.0.190:8989/ipa?target='TargetA'&type=0&pod=update MJRefresh
複製代碼
文檔(難找,自行問度娘、谷哥《xcodebuild》)ios
def __clean(self):
clean = '-workspace %s.xcworkspace' % (self.target) if self.is_workspace else '-project %s.xcodeproj'%(self.target)
s = 'cd %s;' \
'xcodebuild clean %s ' \
'-scheme %s ' \
'-configuration %s' \
% (self.path, clean, self.target, self.build_type)
ok = os.system(s)
if ok > 0:
raise Exception("Clean Error !")
else:
pass
def __build(self):
build = "-workspace %s.xcworkspace" % self.target if self.is_workspace else "-project %s.xcodeproj" % self.target
s = "cd %s;" \
"xcodebuild archive %s " \
"-scheme %s " \
"-archivePath %s/%s " \
% (self.path, build, self.target, self.archive_path, self.archive_name)
ok = os.system(s)
if ok > 0:
raise Exception("Archive Error !")
else:
pass
def __ipa(self):
s = "cd %s;" \
"xcodebuild -exportArchive -archivePath %s/%s.xcarchive" \
" -exportPath %s" \
" -exportOptionsPlist '%s'" \
% (self.path, self.archive_path, self.archive_name, self.ipa_path, self.export_plist)
print('----------> self.archive_path', self.archive_path)
print('----------> self.archive_name', self.archive_name)
print('----------> self.ipa_path', self.ipa_path)
print('----------> self.export_plist', self.export_plist)
ok = os.system(s)
if ok > 0:
raise Exception("Export Error !")
else:
pass
複製代碼
文檔git
def upload_to_appstore(path, name, pwd, altool_path):
print('----- 驗證App----->')
s = '%s ' \
'--validate-app -f %s ' \
'-u %s ' \
'-p %s ' \
'-t ios --output-format xml' % (altool_path, path, name, pwd)
v = os.system(s)
print('----------> ', v)
if v == 0:
print('----- 上傳App----->')
ss = '%s ' \
'--upload-app -f %s ' \
'-u %s ' \
'-p %s ' \
'-t ios --output-format xml' % (altool_path, path, name, pwd)
u = os.system(ss)
if u == 0:
print('----- 上傳App 成功----->')
pass
else:
raise Exception("上傳 App Store 失敗 !")
else:
raise Exception("驗證 App 失敗 !")
複製代碼
文檔github
文檔flask
pip install flask
pip install flask_restful
or
pip3 install flask
pip3 install flask_restful
複製代碼
不過該腳本尚未徹底開發完畢,可是完成第一版的開發和測試,可投入實際運用api
若是你感興趣,可移駕GitHub - iOS 持續集成方案傻瓜式一鍵全自動化打包、上傳!xcode