jenkins
1.1. 直接到官网下载安装包,经过安装包安装 1.2. 经过Homebrew
使用命令行安装1. 安装Homebrew
$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
2. 安装Jenkins
$ brew install jenkins
三、启动Jenkins
$ jenkins
复制代码
jenkins
须要java
环境,若是没有安装会有提示,java安装地址一切顺利的话,打开浏览器输入:http://localhost:8080/
就能看到jenkins
已经运行起来了,若是你更换了端口就是你后来设置的端口。接下来打开Jenkins
后会让去一个填写password
的页面以下图,存储password
的地方就是图片上那行红色字体目录 html
而后将咱们获得的password
输入到Administrator password
中,便可进入以下界面,接着安装一些建议的插件左边的
,安装过程当中,有的插件可能会安装失败,强烈建议点击右下角的重试,直到把建议安装的都装好 java
插件安装完成后,可能不会自动跳转,刷新下界面便可,在刷新后的界面中注册,输入用户名和密码,建议输入后点蓝色按钮保存完成git
jenkins
插件 若是要使用Jenkins
的插件构建工程的,须要在开始新建工程前安装一些Jenkins
插件,在可选插件中选择咱们须要的插件进行安装1. Xcode integration
2. GIT plugin
3. GitLab Plugin
4. Gitlab Hook Plugin
5. Keychains and Provisioning Profiles Management
复制代码
咱们今天使用Execute shell
Shell脚本
构建工程github
jenkins
的使用 3.1. 构建一个自由风格的软件项目
General
参数
jenkins
插件配置多个项目extended choice parameter
插件主要是构建的时候能够多选框来选择要构建的项目模块
可省略
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
个参数可选择性设定,不写死的参数用*
号代替,参数之间用空格隔开。例如:"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月等
复制代码
shell
脚本构建工程,因此该项能够省去 3.6. 构建 有两种方式打包,一是用
Xcode
插件打包,二是用
Shell
脚本打包,本文选择第二种
iOS
自动打包—Jenkins Shell
以下:## !/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/upload
复制代码
ExportOptions.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>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. 构建后操做shell
邮件通知系统,经过系统管理
→系统设置
,进行邮件配置api
设置jenkins
地址和管理员邮箱地址 xcode
设置发件人等信息 这里的发件人邮箱地址切记要和系统管理员邮件地址保持一致 浏览器
注:上图的Password为邮箱的SMTP受权秘钥,至此系统管理处的内容已配置完成缓存
配置Jenkins
自带的邮件功能(测试邮件功能是否正常使用,能够不配置,不影响) ruby
Extended E-mail Notification
配置同样便可,点击Test configuration
,收到邮件而且显示Email was successfully sent
,表明邮件配置成功,接下来能够去项目中具体配置就能够使用了 进入项目,而后找到构建后操做,点击增长构建后的操做步骤
,点击Editable Email Notification
至此全部的配置已完成,点击应用后保存,enjoy it!
Project Recipient List:这个项目的须要发送邮件给哪些人,能够在这里输入多个邮箱,中间以英文逗号隔开
Project Reply-To List:保持默认便可,这个是收到邮件的人回复邮件时候回复给谁用的,通常不会回复邮件
Content Type:能够选择Html或者Default也行,由于咱们在jenkins系统设置中的默认格式就是html
Default Subject: 邮件主题,能够书写成:XXX项目iOS打包通知:$PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS! 分析下这几个参数什么意思:$PROJECT_NAME 构建项目的名称;$BUILD_NUMBER 构建的号码;$BUILD_STATUS 构建状态,这几个参数,它会自动读取,按照这种格式书写便可
Default Content:邮件内容,如下内容为模板,可直接复制修改使用:
<hr/>
本邮件是程序自动下发的,请勿回复!<br/><hr/>
项目名称:$PROJECT_NAME<br/><hr/>
构建编号:$BUILD_NUMBER<br/><hr/>
构建状态:$BUILD_STATUS<br/><hr/>
触发缘由:${CAUSE}<br/><hr/>
构建日志地址:<a href="${BUILD_URL}console">${BUILD_URL}console/</a><br/><hr/>
构建地址:<a href="$BUILD_URL">$BUILD_URL</a><br/><hr/>
构建报告:<a href="${BUILD_URL}testReport">${BUILD_URL}testReport/</a><br/><hr/>
变动集:${JELLY_SCRIPT,template="html"}<br/><hr/>
复制代码
brew
安装的,能够执行如下命令$ brew uninstall jenkins