iOS 使用Jenkins持续集成(简称CI)

  1. 安装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
复制代码

一切顺利的话,打开浏览器输入:http://localhost:8080/就能看到jenkins已经运行起来了,若是你更换了端口就是你后来设置的端口。接下来打开Jenkins后会让去一个填写password的页面以下图,存储password的地方就是图片上那行红色字体目录 html

而后将咱们获得的password输入到Administrator password中,便可进入以下界面,接着安装一些建议的插件左边的,安装过程当中,有的插件可能会安装失败,强烈建议点击右下角的重试,直到把建议安装的都装好 java

插件安装完成后,可能不会自动跳转,刷新下界面便可,在刷新后的界面中注册,输入用户名和密码,建议输入后点蓝色按钮保存完成git

  1. 安装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

  1. jenkins的使用 3.1. 构建一个自由风格的软件项目
    3.2. General参数
    能够设置包的保留天数和最大保留个数,这些能够根据须要进行调整,能够不要选
  • jenkins插件配置多个项目extended choice parameter插件主要是构建的时候能够多选框来选择要构建的项目模块
    ($+上面的Name)就能够获取该值
    3.3. 源码管理
    3.4. 构建触发器设置 触发器可自定义的地方不少,能够根据项目须要选择可省略
  • 定时构建:无论SVNGit中数据有无变化,均执行定时化的构建任务
  • 轮询SCM:只要SVNGit中数据有更新,则执行构建任务 日程表的填写内容有5个参数,从左到右的参数含义以下: ⦁ 第1个参数:分钟minute,取值0~59 ⦁ 第2个参数:小时hour,取值0~23 ⦁ 第3个参数:天day,取值1~31 ⦁ 第4个参数:月month,取值1~12 ⦁ 第5个参数:星期week,取值0~707都是表示星期天 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月等
复制代码

3.5. 构建环境设置 本文使用的是 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/>
复制代码
  1. Jenkins卸载方法(Windows/Linux/MacOS)
  • 若是使用brew安装的,能够执行如下命令$ brew uninstall jenkins
  • 注:Jenkins修改工程的工做空间 在项目的配置中点击高级,选择使用自定义工做空间,输入工做空间路径便可

附:个人博客地址

相关文章
相关标签/搜索