一、安装运行
1.brew 安装
$ brew install Jenkins
2.命令行启动Jenkins
$ jenkins
3.浏览器打开
4.获取密码
$ sudo cat /Users/***/.jenkins/secrets/initialAdminPassword
5.安装推荐插件
安装推荐插件,可能会失败,大多是因为网络的问题,,多试几次就行了
6.创建用户
二、新建item
1.General
discard old builds
- 源码管理
Git
Repositories
Repository URL: https://gitlab.com/wenjie.wang/geeky.git
Credentials:(username and password)
- 构建触发器
Build periodically
日程表
每行包括五个字段,以TAB或空格分隔
MINUTE HOUR DOM MONTH DOW
分 时 天 月 星期
MINUTE | Minutes within the hour (0–59) |
HOUR | The hour of the day (0–23) |
DOM | The day of the month (1–31) |
MONTH | The month (1–12) |
DOW | The day of the week (0–7) where 0 and 7 are Sunday. |
每一个字段可以指定多个值,按照先后顺序
*所有值
M-N区间
M-N/X、*/X 分步 每X单位时间执行一次
A,B,...,Z 枚举
H 均匀负载 如:H H(0-7) * * * 每天12am到7:59am某个时间执行一次
以月为周期的短循环字段在月末时可能会有奇怪的行为
特殊符号:
@yearly, @annually, @monthly, @weekly, @daily, @midnight,@hourly
Gitlab push
- gitlab 仓库添加webhook
Gitlab 10.6版本后不允许向本地网络发送webhook请求,如果想向本地网络发送webhook请求,则需要管理员设置(https://blog.youkuaiyun.com/anqixiang/article/details/104968469)
- 构建环境
- 构建步骤
- Xcode
Xcode以后插件很不友好,一直卡在最后API输出哪一步,,有兴趣的小伙伴可以参考这几篇博文
Jenkins + GitLab + Xcode + Fir 实现iOS自动打包和分发
最新的xcode插件有点差异,大致流程可做参考
2.脚本打包
#使用方法
#当前工程绝对路径
project_path=.
#生成的IPA文件存放路径
project_path_pre=${project_path}/IPAFiles
#project_path_pre=../${project_path} //当前工程上一级目录
#工程名 将****替换成自己的工程名
project_name=*****
#scheme名 将****替换成自己的sheme名
scheme_name=*****
#打包模式 Debug/Release
development_mode=Release
#plist文件所在路径
exportOptionsPlistPath=${project_path}/exportTest.plist
#编译过程中产生的临时文件夹,build文件夹路径(等打包成功之后删除掉)
tempBuild_path=${project_path_pre}/build
#build文件夹路径
build_path=${project_path_pre}/build
#导出.ipa文件所在路径
exportIpaPath=${project_path_pre}/IPADir/${development_mode}
echo '///-----------'
echo '/// 正在清理工程'
echo '///-----------'
xcodebuild \
clean -configuration ${development_mode} -quiet || exit
echo '///--------'
echo '/// 清理完成'
echo '///--------'
echo ''
echo '///-----------'
echo '/// 正在编译工程:'${development_mode}
echo '///-----------'
xcodebuild \
archive -workspace ${project_path}/${project_name}.xcworkspace \
-scheme ${scheme_name} \
-configuration ${development_mode} \
-archivePath ${build_path}/${project_name}.xcarchive -quiet || exit
echo '///--------'
echo '/// 编译完成'
echo '///--------'
echo ''
echo '///----------'
echo '/// 开始ipa打包'
echo '///----------'
xcodebuild -exportArchive -archivePath ${build_path}/${project_name}.xcarchive \
-configuration ${development_mode} \
-exportPath ${exportIpaPath} \
-exportOptionsPlist ${exportOptionsPlistPath} \
-quiet || exit
if [ -e $exportIpaPath/$scheme_name.ipa ]; then
echo '///----------'
echo '/// ipa包已导出'
echo '///----------'
#open $exportIpaPath
rm -r $tempBuild_path
else
echo '///-------------'
echo '/// ipa包导出失败 '
echo '///-------------'
fi
echo '///------------'
echo '/// 打包ipa完成 '
echo '///-----------='
echo ''
exit 0
- 发布蒲公英
(1),Execute shell
https://www.pgyer.com/doc/view/jenkins_ios
#蒲公英上的User Key
uKey="41ed0a30a0cdf9296501232e69b5a66b"
#蒲公英上的API Key
apiKey="ece94057dd3d5bd3d570ae509a0c3e3d"
#要上传的ipa文件路径
IPA_PATH="${WORKSPACE}/build/PPCSDKTest.ipa"
#密码
PASSWORD="123456"
MSG=git log -1 --pretty=%B
#执行上传至蒲公英的命令
echo "++++++++++++++upload+++++++++++++"
curl -F "file=@${IPA_PATH}" -F "uKey=${uKey}" -F "_api_key=${apiKey}" -F "updateDescription=${MSG}" -F "password=${PASSWORD}" http://www.pgyer.com/apiv1/app/upload
(2)使用插件 upload to pgyer
文档:https://www.pgyer.com/doc/view/jenkins_plugin
- 构建后操作
- 发布fir.im
上传插件fir-plugin,设置fir.im Token
- 邮件通知相关人员 (微信企业邮箱)
1.系统管理--系统设置--Jenkins Location --系统管理员邮件地址 *********@g*****ic.cn 保存
2.Extended E-mail Notification
填写SMTP server:腾讯企业邮箱 smtp.exmail.qq.com
后缀:@geekymedic.cn
点选 Use SMTP Authentication 高级 填写用户名和密码
设置 Default Recipients 接收邮件人的邮箱, 空格隔开
Default Triggers 勾选 Always、Failure-Any、Success
3。邮件通知
SMTP服务器:腾讯企业邮箱 smtp.exmail.qq.com
后缀:@geekymedic.cn
点选 使用SMTP 认证
用户名:
密码:
使用SSL协议 勾选
SMTP端口:465
- 构建后操作:
Project From:管理者邮箱 发邮件人的邮箱 *********@*****.cn
- 邮件通知相关人员 (163)
1.系统管理--系统设置--Jenkins Location --系统管理员邮件地址 ****@163.com 保存
2.Extended E-mail Notification
填写SMTP server:腾讯企业邮箱 smtp.163.com
后缀:@163.com
点选 Use SMTP Authentication 高级 填写用户名和密码
设置 Default Recipients 接收邮件人的邮箱, 空格隔开
Default Triggers 勾选 Always、Failure-Any、Success
3.邮件通知
SMTP服务器:腾讯企业邮箱 smtp.163.com
后缀:@163.com
点选 使用SMTP 认证
用户名:
密码:
- 构建后操作:
Project From:管理者邮箱 发邮件人的邮箱 ****@163.com
微信企业邮箱一直发不出邮件,,郁闷,查了好久才发现是因为password错了,
这里的advanced里面,需要勾选 use smtp authentication, password 是第三方的授权密码,不是注册的密码。
如果填了注册密码,就会报错:
MessagingException message: 535 Error: authentication failed
腾讯企业邮箱的第三方授权密码获取方式
邮箱设置--> 邮箱绑定 --> 微信设置 --> 客户端专用密码 -->生成新密码
———————————————
注意, 用户密码是发送方邮件地址的用户密码, 用户名必须和 系统管理员邮件地址一致
可以在 用户列表--》点击用户--》设置 中更改邮件地址
跳进去出不来的坑:用xcode插件打包 有哪位大神看到了,帮忙指点一二
2020-04-14 09:46:05.246 xcodebuild[98187:837771] [MT] IDEDistribution: -[IDEDistributionLogging _createLoggingBundleAtPath:]: Created bundle at path '/var/folders/l1/qt2gjjjn5752jrjt78qw1f1c0000gn/T/YJKApp_2020-04-14_09-46-05.244.xcdistributionlogs'.
error: exportArchive: The data couldn’t be read because it isn’t in the correct format.
Error Domain=NSCocoaErrorDomain Code=3840 "No value." UserInfo={NSDebugDescription=No value., NSFilePath=/var/folders/l1/qt2gjjjn5752jrjt78qw1f1c0000gn/T/ipatool-json-filepath-~~~mE1u9S}
使用Jenkins时随手记录下来的比较粗糙,各位看官尽请见谅