1、jenkins配置(准备好要上传oss的文件分别为:二维码图片文件.png、iOS包.ipa、plist文件.plist)
plist文件内容
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<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>https://XXX域名/ios/package/16.ipa</string>
</dict>
<dict>
<key>kind</key>
<string>display-image</string>
<key>url</key>
<string>https://XXX域名/ios/package/1.png</string>
</dict>
<dict>
<key>kind</key>
<string>full-size-image</string>
<key>url</key>
<string>https://XXX域名/ios/package/2.png</string>
</dict>
</array>
<key>metadata</key>
<dict>
<key>bundle-identifier</key>
<string>com.chamet.test</string>
<key>bundle-version</key>
<string>1.0.3</string>
<key>kind</key>
<string>software</string>
<key>title</key>
<string>MateMet</string>
</dict>
</dict>
</array>
</dict>
</plist>
每次只需要修改16.ipa包信息
修改plist文件名
mv *.plist $BUILD_ID.plist
修改plist文件内容
sed -i "s|<string>https://XXX域名/ios/package/.*\.ipa</string>|<string>https://XXX域名/ios/package/$BUILD_ID.ipa</string>|g" $BUILD_ID.plist
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
- 34.
- 35.
- 36.
- 37.
- 38.
- 39.
- 40.
- 41.
- 42.
- 43.
- 44.
- 45.
- 46.
- 47.
- 48.
- 49.
- 50.
- 51.
- 52.
- 53.
2、生成二维码图片文件
脚本执行命令
python /data/scripts/uploadToOss.py "ios/package/$BUILD_ID.ipa" Vamar.ipa
脚本内容:
# -*- coding: utf-8 -*-
import os
import shutil
import sys
import oss2
import qrcode
if len(sys.argv) < 2:
print ('uploadToOss.py oss-save-path local-upload-file')
sys.exit()
print ("oss-save-path:%s" % sys.argv[1])
print ("local-upload-file:%s" % sys.argv[2])
def GetFileNameAndExt(filename):
import os
(filepath,tempfilename) = os.path.split(filename);
(shotname,extension) = os.path.splitext(tempfilename);
return shotname,extension
access_key_id = os.getenv('OSS_TEST_ACCESS_KEY_ID', '阿里云oss-KEY_ID')
access_key_secret = os.getenv('OSS_TEST_ACCESS_KEY_SECRET', '阿里云oss-KEY_SECRET')
bucket_name = os.getenv('OSS_TEST_BUCKET', 'BUCKET-名')
endpoint = os.getenv('OSS_TEST_ENDPOINT', 'ossURL地址.aliyuncs.com')
for param in (access_key_id, access_key_secret, bucket_name, endpoint):
assert '<' not in param, '请设置参数:' + param
bucket = oss2.Bucket(oss2.Auth(access_key_id, access_key_secret), endpoint, bucket_name)
bucket.put_object_from_file(sys.argv[1],sys.argv[2])
apkurl="itms-services://?action=download-manifest&url=https://XXX域名/%s" % sys.argv[1]
print ("如需打渠道包,将此链接输入到打渠道包的jenkins中:%s" % apkurl)
pngurl=apkurl.replace('.ipa','.plist')
print (pngurl)
pngName=GetFileNameAndExt(pngurl)[0]
img=qrcode.make(pngurl)
img.save( "./%s.png" % pngName )
bucket.put_object_from_file(sys.argv[1].replace('.ipa','.png'),"./%s.png" % pngName)
bucket.put_object_from_file(sys.argv[1].replace('.ipa','.plist'),"./%s.plist" % pngName)
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
- 34.
- 35.
- 36.
- 37.
- 38.
- 39.
- 40.
- 41.
- 42.
- 43.
- 44.
- 45.
- 46.
3、图片发送钉钉群
python /data/scripts/send_dingrobot_liaoyu.py 钉钉机器人access_token 构建ios包 https://XXX域名/ios/package/$BUILD_ID.png test
脚本内容:
#!/usr/bin/python
#coding=utf-8
import sys
import time
import requests
import json
import urllib
access_token = sys.argv[1]
title = sys.argv[2]
#git_branch = sys.argv[3]
#build_url = sys.argv[4]
apk_url = sys.argv[3]
apk_env = sys.argv[4]
if apk_env == "test":
env = "测试环境"
elif apk_env == "product":
env = "线上环境"
elif apk_env == "live":
env = "live版本"
md_title = "#### Client:%s \n" %(title)
#md_git_branch = "##### Git分支:%s \n" %(git_branch)
#md_build_url = "##### 构建地址:%s \n" %(build_url)
md_apk_env = "##### 构建环境:%s \n" % (env)
md_apk_url = "iOS包下载二维码:![screenshot](%s)" %(apk_url)
#msg = "Client:{title}\nGit分支:{git_branch}\n构建地址:{build_url}\napk二维码:![screenshot]({apk_url})".format(title=title,git_branch=git_branch,build_url=build_url,apk_url=apk_url)
def Robot_Send(access_token, md_title, md_apk_url, md_apk_env):
url = "https://oapi.dingtalk.com/robot/send?access_token=%s" %(access_token)
headers = {
"Content-Type": "application/json ;charset=utf-8 "
}
data = {
"msgtype": "markdown",
"markdown": {
"title": md_title,
"text": md_title + md_apk_env + md_apk_url
},
"isAtAll": 0
}
format_data = json.dumps(data)
res = requests.post(url, data=format_data, headers=headers)
return res.text
send_statu = str(Robot_Send(access_token, md_title, md_apk_url, md_apk_env))
print (send_statu)
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
- 34.
- 35.
- 36.
- 37.
- 38.
- 39.
- 40.
- 41.
- 42.
- 43.
- 44.
- 45.
- 46.
- 47.
- 48.
- 49.
- 50.
- 51.
- 52.
- 53.