如题呀……我是小白,求各位大神解惑!build_using_xctool.sh
auto_send_email.py
build_using_xctool.sh 中运行 auto_send_email.py 中的 sendMessage(a,b,c,d,...) 函数,a,b,c,d,... 某些参数需要从 build_using_xctool.sh 中传过去!
事情是这样的,我在网上找了一个自动打包分发的shell脚本,然后我想在打包完成上传至fir上面之后发邮件通知自己和同事,然后又找了一个发送邮件的python脚本!
build_using_xctool.sh#!/bin/bash
#打包状态 Adhoc 0 / app_store 1
STATE=1
#计时
SECONDS=0
#假设脚本放置在与项目相同的路径下
project_path=$(pwd)
#取当前时间字符串添加到文件结尾
now=$(date +"%Y_%m_%d_%H_%M_%S")
#指定项目的scheme名称
scheme=""
#指定要打包的配置名
#指定打包所使用的provisioning profile名称
#ipa_name 包名称
configuration=""
provisioning_profile=""
ipa_name=""
if [ $STATE -eq 0 ]
then
configuration="Adhoc"
ipa_name="app_Demo"
provisioning_profile="..."
elif [ $STATE -eq 1 ]
then
configuration="app-store"
ipa_name="app_Store"
provisioning_profile="...."
fi
#指定打包所使用的provisioning profile名称
#指定项目地址
workspace_path="$project_path/app.xcworkspace"
#指定输出路径
output_path="/Users/gyd/Desktop/学习/1.脚本化打包/ipa_test"
#指定输出归档文件地址
archive_path="$output_path/${ipa_name}_${now}.xcarchive"
#指定输出ipa地址
ipa_path="$output_path/${ipa_name}_${now}.ipa"
#获取执行命令时的commit message
commit_msg="$1"
#输出设定的变量
echo "===workspace path: ${workspace_path}==="
echo "===archive path: ${archive_path}==="
echo "===ipa path: ${ipa_path}==="
echo "===profile: ${provisioning_profile}==="
echo "===commit msg: $1==="
#先清空前一次build
xctool clean -workspace ${workspace_path} -scheme ${scheme} -configuration ${configuration}
#根据指定的项目、scheme、configuration与输出路径打包出archive文件
xctool build -workspace ${workspace_path} -scheme ${scheme} -configuration ${configuration} archive -archivePath ${archive_path}
#使用指定的provisioning profile导出ipa
#我暂时没找到xctool指定provisioning profile的方法,所以这里用了xcodebuild
xcodebuild -exportArchive -archivePath ${archive_path} -exportPath ${ipa_path} -exportFormat ipa -exportProvisioningProfile "${provisioning_profile}"
#上传到fir
fir publish ${ipa_path} -T "token" 重新生成
-c "${commit_msg}"
#输出打包分发总用时
echo "===Finished. Total time: ${SECONDS}s==="
#以上都结束之后,调用auto_send_email.py 自动发送邮件通知
#python /Users/gyd/Desktop/auto_send_email.py
auto_send_email.py# -*- coding: UTF-8 -*-
import sys, os, re, urllib, urlparse
import smtplib
import traceback
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
def sendmail(subject,msg,toaddrs,fromaddr,smtpaddr,password):
mail_msg = MIMEMultipart()
if not isinstance(subject,unicode):
subject = unicode(subject, 'utf-8')
mail_msg['Subject'] = subject
mail_msg['From'] =fromaddr
mail_msg['To'] = ','.join(toaddrs)
mail_msg.attach(MIMEText(msg, 'html', 'utf-8'))
try:
s = smtplib.SMTP_SSL("smtp.qq.com", 465)
# s.connect(smtpaddr) #连接smtp服务器
s.login(fromaddr,password) #登录邮箱
s.sendmail(fromaddr, toaddrs, mail_msg.as_string()) #发送邮件
s.quit()
print "发送成功"
except Exception,e:
print "Error: unable to send email"
print traceback.format_exc()
if __name__ == '__main__':
fromaddr = "@qq.com"
smtpaddr = "smtp.qq.com"
toaddrs = ["@qq.com"]
subject = "来自python脚本自动发送的邮件"
password = ""
msg = "2.4.4测试版已经上传,敬请下载测试!"
sendmail(subject,msg,toaddrs,fromaddr,smtpaddr,password)
还有一个问题就是,因为我在打包的时候基本是两种状态的.ipa ,我现在是用粉蓝色语句判断的,感觉好傻,但是这里面又不能用预编译!怎么搞比较好!