Commit 7a6c1524 by app.developer

初始化

parents
#iOS-Auto-Package
#!/bin/bash
# 使用 fastlane gym 自动打包 ipa
# echo util
COLOR_Cyan='\033[0;36m'
COLOR_Red='\033[41;37m'
COLOR_Default='\033[0;m'
# todo: 打包前先执行 pod install
# 计时
SECONDS=0
# DIR path
readonly CURRENT_DIR=$(cd "$(dirname "$0")"; pwd)
readonly PROJECT_DIR=$(dirname $(cd "$(dirname "$0")"; pwd))
# readonly OUTPUT_DIR=${PROJECT_DIR}/fastlane_build/${NOW}
readonly OUTPUT_DIR=${PROJECT_DIR}/fastlane_build
# project scheme name
readonly EBIZ_SCHEME=$1
readonly EBIZ_WORKSPACE=$1
# project workspace name
readonly EBIZ_WORKSPACE_PATH="${PROJECT_DIR}/${EBIZ_WORKSPACE}.xcworkspace"
readonly EBIZ_BUILD_ENV=$2
readonly EBIZ_BUILD_NUMBER=$3
readonly EBIZ_ENV_COPY_PATH="${PROJECT_DIR}/${EBIZ_SCHEME}/Config/Config-${EBIZ_BUILD_ENV}.plist"
readonly EBIZ_ENV_PATH="${PROJECT_DIR}/${EBIZ_SCHEME}/Config/Config.plist"
# product
readonly EBIZ_ARCHIVE_PATH="${OUTPUT_DIR}/${EBIZ_SCHEME}.xcarchive"
readonly EBIZ_IPA_NAME="${EBIZ_SCHEME}.ipa"
readonly EBIZ_IPA_PATH="${OUTPUT_DIR}/${EBIZ_IPA_NAME}"
# 打包方式 Debug 、Release
readonly EBIZ_BUILD_CONFIGURATION="Debug"
# 指定打包所使用的输出方式
# 目前支持app-store, package, ad-hoc, enterprise, development, 和developer-id,即xcodebuild的method参数
# -----------------------------
readonly EBIZ_EXPORT_METHOD="development" # demo 项目没有 app id,打包方式选择 development 才能打出 ipa
# readonly EBIZ_EXPORT_METHOD="ad-hoc" # 正常开发阶段选择 ad-hoc 打包,发布目前是手动打包
# -----------------------------
readonly PGY_API_KEY=$4
readonly PGY_USER_KEY=$5
readonly DD_HOST_URL=$6
readonly DD_ICON_URL=$7
readonly DD_DOWN_URL=$8
readonly DD_MESSAGE=$9
function echo_log() {
echo "${COLOR_Cyan}$1${COLOR_Default}"
}
function echo_error() {
echo "${COLOR_Red}$1${COLOR_Default}"
}
if [ ! -n "${EBIZ_BUILD_ENV}" ] ;then
echo_error "auto-package 入参 'env' 有误!"
exit 1
fi
# 修改打包环境
# 清理打包路径
rm -rf ${PROJECT_DIR}/fastlane_build
#输出设定的变量值
echo_log "============ config list =============="
echo_log "1 build configuration = ${EBIZ_BUILD_ENV} ${EBIZ_BUILD_CONFIGURATION}"
echo_log "2 export method = ${EBIZ_EXPORT_METHOD}"
echo_log "3 workspace path = ${EBIZ_WORKSPACE_PATH}"
echo_log "4 scheme name = ${EBIZ_SCHEME}"
echo_log "5 archive path = ${EBIZ_ARCHIVE_PATH}"
echo_log "6 ipa path = ${EBIZ_IPA_PATH}"
echo_log "7 ipa name = ${EBIZ_IPA_NAME}"
echo_log "======================================="
# 强制更新证书 (非必须)
# readonly APPLE_ID="xxxxxx@xxxx.com"
# fastlane sigh download_all -u
${APPLE_ID} --adhoc --force
# fastlane increment_build_number
# 先清空前一次build
fastlane gym --workspace ${EBIZ_WORKSPACE_PATH} \
--scheme ${EBIZ_SCHEME} --clean \
--configuration ${EBIZ_BUILD_CONFIGURATION} \
--archive_path ${EBIZ_ARCHIVE_PATH} \
--export_method ${EBIZ_EXPORT_METHOD} \
--output_directory ${OUTPUT_DIR} \
--output_name ${EBIZ_IPA_NAME}
if [ "$?" -ne "0" ]; then
echo "build error 停止自动构建"
exit 1
fi
# 清理打包文件
echo_log "===== 打包耗时:${SECONDS}s ====="
echo "===== 包路径:${EBIZ_IPA_PATH} ====="
# open ${OUTPUT_DIR}
# 上传到蒲公英 (以上调试完成后,再打开以下注释)
if [ "yes" == "$DD_MESSAGE" ]; then
sh ${PROJECT_DIR}/ipa_script/auto_upload_pgy.sh ${EBIZ_IPA_PATH} ${EBIZ_SCHEME} ${EBIZ_BUILD_ENV} ${EBIZ_BUILD_NUMBER} ${PGY_API_KEY} ${PGY_USER_KEY} ${DD_HOST_URL} ${DD_ICON_URL} ${DD_DOWN_URL}
else
sh ${PROJECT_DIR}/ipa_script/auto_upload_pgy.sh ${EBIZ_IPA_PATH} ${EBIZ_SCHEME} ${EBIZ_BUILD_ENV} ${EBIZ_BUILD_NUMBER} ${PGY_API_KEY} ${PGY_USER_KEY}
fi
#!/usr/bin/env python
#-*- coding: utf-8 -*-
import urllib2
import json
import sys
def get_app_version():
return sys.argv[1]
pass
def get_app_name():
return sys.argv[2]
pass
def get_app_env():
return sys.argv[3]
pass
def get_dd_icon():
return sys.argv[4]
pass
def get_dd_url():
return sys.argv[5]
pass
def get_dd_host():
return sys.argv[6]
pass
def get_pgy_pwd():
return sys.argv[7]
pass
def get_request_params_str():
app_env = get_app_env()
app_pwd = get_pgy_pwd()
message = app_env + " 已更新" + " 密码:" + app_pwd
print "版本信息 " + message
print "密码 " + app_pwd
app_version = get_app_version()
app_name = get_app_name()
# ipa_dir = "fastlane_build/"
# app_patch = ipa_dir + "/#{ipa_name}.ipa"
# app_name = get_ipa_info_plist_value(ipa: app_patch, key: "CFBundleDisplayName")
print app_env + " " + app_version
title = "iOS " + app_name + " " + app_env + " " + app_version
dd_icon = "https://appicon.pgyer.com/image/view/app_icons/" + get_dd_icon()
dd_url = "https://www.pgyer.com/" + get_dd_url()
params = {
"msgtype": "link",
"link": {
"title": title,
"text": message,
"picUrl": dd_icon,
"messageUrl": dd_url
}
}
return json.dumps(params) #python obj to json(str)
pass
def send_ding_talk_request():
# NOTE: host_url 来自钉钉群的设置
#host_url = "https://oapi.dingtalk.com/robot/send?access_token=fdbcec56ec4e6066a6ebb76b5c5cb0ba017d3db67adb7d04cdda9d25beea2d56"
host_url = "https://oapi.dingtalk.com/robot/send?access_token=" + get_dd_host()
req = urllib2.Request(host_url)
req.add_header('Content-Type', 'application/json')
params_str = get_request_params_str()
# print params_str
response = urllib2.urlopen(req, params_str)
# print response.read()
pass
send_ding_talk_request()
#!/bin/bash
# 上传 ipa 到蒲公英
# echo util
readonly COLOR_Cyan='\033[0;36m'
readonly COLOR_Red='\033[41;37m'
readonly COLOR_Default='\033[0;m'
function echo_log() {
echo "${COLOR_Cyan}$1${COLOR_Default}"
}
function echo_error() {
echo "${COLOR_Red}$1${COLOR_Default}"
}
echo_log "===== 打包完成,开始上传到蒲公英 ====="
NOW=$(date +"%Y_%m_%d_%H_%M_%S")
EBIZ_IPA_PATH=$1
EBIZ_SCHEME=$2
EBIZ_ENV=$3
EBIZ_BUILD_NUMBER=$4
CURRENT_DIR=$(cd "$(dirname "$0")"; pwd)
PROJECT_PATH=$(dirname $(cd "$(dirname "$0")"; pwd))
if [ ! -n "${NOW}" ] ;then
echo_error "auto-upload 入参 'now' 有误!"
exit 1
else
echo "构建时间: ${NOW}"
fi
if [ ! -n "${EBIZ_IPA_PATH}" ] ;then
echo_error "auto-upload 入参 'ipa_path' 有误!"
exit 1
else
if [ ! -f "${EBIZ_IPA_PATH}" ]; then
echo_error "${EBIZ_IPA_PATH} 文件不存在"
exit 1
fi
echo_log "ipa 文件 path 为 ${EBIZ_IPA_PATH}"
fi
# 测试 demo
# 采蜜 蒲公英 上传 key
readonly PGY_API_KEY=$5
readonly PGY_USER_KEY=$6
readonly DD_HOST_URL=$7
readonly DD_ICON_URL=$8
readonly DD_DOWN_URL=$9
readonly PGY_UPLOAD_SERVER="https://qiniu-storage.pgyer.com/apiv1/app/upload"
# 接收键盘输入
# read -p "请输入蒲公英更新 log:" pgy_upload_log
# echo_log "更新 log 为:${pgy_upload_log}"
readonly PGY_password="$(($RANDOM%9999+1111))"
readonly PGY_upload_log="${EBIZ_ENV}_${NOW}"
# 上传到蒲公英,并接收 Response
PGY_RESPONSE=`curl -F "file=@/${EBIZ_IPA_PATH}" -F "uKey=${PGY_USER_KEY}" -F "_api_key=${PGY_API_KEY}" -F installType=2 -F password="${PGY_password}" -F "updateDescription=${PGY_upload_log}" ${PGY_UPLOAD_SERVER}`
if [ "$?" -ne "0" ]; then
echo_error "upload error"
exit 1
fi
# 推送到钉钉机器人时显示打包的版本号
EBIZ_APP_Version=`/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" ${PROJECT_PATH}/${EBIZ_SCHEME}/Info.plist`
EBIZ_APP_Name=`/usr/libexec/PlistBuddy -c "Print CFBundleDisplayName" ${PROJECT_PATH}/${EBIZ_SCHEME}/Info.plist`
EBIZ_APP_Build_Version="${EBIZ_BUILD_NUMBER}"
EBIZ_Version="${EBIZ_APP_Version}(${EBIZ_APP_Build_Version})"
echo_log ${EBIZ_APP_Name}
echo_log ${EBIZ_Version}
echo_log ${PGY_password}
# (以上调试完成后,再打开以下注释)
if [ $# -eq 9 ]; then
python ${CURRENT_DIR}/auto_push_ding_talk.py ${EBIZ_Version} ${EBIZ_APP_Name} ${EBIZ_ENV} ${DD_ICON_URL} ${DD_DOWN_URL} ${DD_HOST_URL} ${PGY_password}
fi
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment