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.