- 安装
jenkins
1.1. 直接到官网下载安装包,通过安装包安装
1.2. 通过Homebrew
使用命令行安装1
2
3
4
5
61. 安装Homebrew
$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
2. 安装Jenkins
$ brew install jenkins
3、启动Jenkins
$ jenkins
jenkins
需要java
环境,如果没有安装会有提示,java安装地址
一切顺利的话,打开浏览器输入:http://localhost:8080/
就能看到jenkins
已经运行起来了,如果你更换了端口就是你后来设置的端口。接下来打开Jenkins
后会让去一个填写password
的页面如下图,存储password
的地方就是图片上那行红色字体目录
然后将我们得到的password
输入到Administrator password
中,即可进入如下界面,接着安装一些建议的插件左边的
,安装过程中,有的插件可能会安装失败,强烈建议点击右下角的重试,直到把建议安装的都装好
插件安装完成后,可能不会自动跳转,刷新下界面即可,在刷新后的界面中注册,输入用户名和密码,建议输入后点蓝色按钮保存完成
安装
jenkins
插件
如果要使用Jenkins
的插件构建工程的,需要在开始新建工程前安装一些Jenkins
插件,在可选插件中选择我们需要的插件进行安装1
2
3
4
51. Xcode integration
2. GIT plugin
3. GitLab Plugin
4. Gitlab Hook Plugin
5. Keychains and Provisioning Profiles Management我们今天使用
Execute shell
Shell脚本
构建工程jenkins
的使用
3.1. 构建一个自由风格的软件项目
3.2. General
参数
可以设置包的保留天数和最大保留个数,这些可以根据需要进行调整,可以不要选
jenkins
插件配置多个项目extended choice parameter
插件主要是构建的时候可以多选框来选择要构建的项目模块
3.3. 源码管理
3.4. 构建触发器设置
触发器可自定义的地方很多,可以根据项目需要选择可省略
- 定时构建:不管
SVN
或Git
中数据有无变化,均执行定时化的构建任务 - 轮询
SCM
:只要SVN
或Git
中数据有更新,则执行构建任务
日程表的填写内容有5
个参数,从左到右的参数含义如下:
⦁ 第1
个参数:分钟minute
,取值0~59
⦁ 第2
个参数:小时hour
,取值0~23
⦁ 第3
个参数:天day
,取值1~31
⦁ 第4
个参数:月month
,取值1~12
⦁ 第5
个参数:星期week
,取值0~7
,0
和7
都是表示星期天5
个参数可选择性设定,不写死的参数用*
号代替,参数之间用空格隔开。例如:1
2
3
4
5
6
7
8"0 21 * * *"表示每晚21点0分自动化构建一次
"0 * * * *"表示每个小时的第0分钟执行一次构建
"H/5 * * * *"每隔5分钟构建一次
"H H/2 * * *"每两小时构建一次
"H H 30 * *"每月30号构建一次
"H(0-29)/10 * * * *"每个小时的前半个小时内的每10分钟
"0 8-17/2 * * 1-5"周一到周五,8点~17点,两小时构建一次
"H H 1,15 1-11 *"每月1号、15号各构建一次,除12月等
3.5. 构建环境设置
本文使用的是shell
脚本构建工程,所以该项可以省去
3.6. 构建
有两种方式打包,一是用Xcode
插件打包,二是用Shell
脚本打包,本文选择第二种
iOS
自动打包—Jenkins Shell
如下: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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78## !/bin/sh
## 项目名
TARGET_NAME=NNAlgorithm
## Scheme名
SCHEME=NNAlgorithm
##=======================
## 编译类型
BUILD_TYPE=Release
## 当前目录
SORCEPATH=${WORKSPACE}
## workspace名
SPACE=${WORKSPACE}/${TARGET_NAME}.xcodeproj
##xcarchive文件的存放路径
ARCHIVEPATH=$SORCEPATH/build/$SCHEME.xcarchive
## ipa文件的存放路径
EXPORTPATH=$SORCEPATH/build/$SCHEME
## ExportOptions.plist文件的存放路径,该文件要存放在这个路径下内容如下
EXPORTOPTIONSPLIST=$SORCEPATH/build/ExportOptions.plist
## 导出后的ipa路径
EXPORTPATHIPA=$SORCEPATH/build/$SCHEME/$SCHEME.ipa
echo -e "============First Build Clean============"
## 清理缓存
## 如果工程使用的是cocoapods,则'-project %s.xcodeproj'替换为'-workspace %s.xcworkspace'
xcodebuild clean -project $SPACE -scheme ${SCHEME} -configuration ${BUILD_TYPE}
echo -e "============Build Clean============"
## 输出关键信息
echo -e " TARGET_NAME : ${TARGET_NAME}"
echo -e " BUILD_TYPE : ${BUILD_TYPE}"
echo -e " SORCEPATH : ${SORCEPATH}"
echo -e " ARCHIVEPATH : ${ARCHIVEPATH}"
echo -e " EXPORTPATH : ${EXPORTPATH}"
echo -e " EXPORTOPTIONSPLIST : ${EXPORTOPTIONSPLIST}"
echo -e "============Build Archive============"
## 导出archive包
xcodebuild archive -project ${SPACE} -scheme ${SCHEME} -archivePath $ARCHIVEPATH
echo -e "============Build Archive Success============"
echo -e "============Export IPA============"
## 导出IPA包
xcodebuild -exportArchive -archivePath $ARCHIVEPATH -exportPath ${EXPORTPATH} -exportOptionsPlist ${EXPORTOPTIONSPLIST}
echo -e "============Export IPA SUCCESS============"
## 编译完成时间 20181030_0931
BUILD_DATE="$(date +'%Y%m%d_%H%M')"
## info.plist路径
PROJECT_INFOPLIST_PATH="${SORCEPATH}/${TARGET_NAME}/Info.plist"
## 取版本号
BUNDLESHORTVERSION=$(/usr/libexec/PlistBuddy -c "print CFBundleShortVersionString" "${PROJECT_INFOPLIST_PATH}")
## 取build值
VERSION=$(/usr/libexec/PlistBuddy -c "print CFBundleVersion" "${PROJECT_INFOPLIST_PATH}")
## ipa更名规则 项目名V版本_年月日_时分
IPANAME="${TARGET_NAME}V${BUNDLESHORTVERSION}_${BUILD_DATE}.ipa"
## 更名后ipa路径
EXPORTPATHNEWIPA=$EXPORTPATH/$IPANAME
echo -e "============Export end :${BUILD_DATE}============"
echo -e "============IPA Old Name: ${EXPORTPATHIPA}============"
echo -e "============IPA New Name: ${EXPORTPATHNEWIPA}============"
## IPA更名
cp $EXPORTPATHIPA $EXPORTPATHNEWIPA
echo -e "============Create New Name Success============"
## 删除老IPA
rm $EXPORTPATHIPA
echo -e "============Delete Old Name Success============"
#userKey和apiKey需要在蒲公英的账号设置中查找
userKey="xxx"
apiKey="xxx"
#蒲公英打包
curl -F "file=@${EXPORTPATHNEWIPA}" \
-F "uKey=${userKey}" \
-F "_api_key=${apiKey}" \
-F "isPublishToPublic=2" \
http://www.pgyer.com/apiv1/app/uploadExportOptions.plist
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23<?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>provisioningProfiles</key>
<dict>
<key>com.Y***ane</key>
<string>azur***_dev</string>
</dict>
<key>method</key>
<string>development</string>
<key>signingCertificate</key>
<string>iPhone Developer</string>
<key>signingStyle</key>
<string>manual</string>
<key>teamID</key>
<string>42***ZL</string>
<key>compileBitcode</key>
<false/>
<key>uploadSymbols</key>
<false/>
</dict>
</plist>- 其中
plist
文件中的method
参数有如下几个方法:app-store, ad-hoc, enterprise, development
3.7. 构建后操作 - 邮件通知系统,通过
系统管理
→系统设置
,进行邮件配置 设置
jenkins
地址和管理员邮箱地址设置发件人等信息
这里的发件人邮箱地址切记要和系统管理员邮件地址保持一致注:上图的Password为邮箱的SMTP授权秘钥,至此系统管理处的内容已配置完成
- 配置
Jenkins
自带的邮件功能(测试邮件功能是否正常使用,可以不配置,不影响)
和上面Extended E-mail Notification
配置一样即可,点击Test configuration
,收到邮件并且显示Email was successfully sent
,代表邮件配置成功,接下来可以去项目中具体配置就可以使用了
进入项目,然后找到构建后操作,点击
增加构建后的操作步骤
,点击Editable Email Notification
至此所有的配置已完成,点击应用后保存,
enjoy it!
1 | Project Recipient List:这个项目的需要发送邮件给哪些人,可以在这里输入多个邮箱,中间以英文逗号隔开 |
- 如果使用
brew
安装的,可以执行以下命令$ brew uninstall jenkins
- 注:Jenkins修改工程的工作空间
在项目的配置中点击高级,选择使用自定义工作空间,输入工作空间路径即可