1.安装java JDK环境
1.1检测java JDk 安装的版本
//Java环境查看
java -version
1.2如果当前环境没有下载安装,可以下载并安装。
2.下载安装Jenkins。
2.1在官网下载安装,下载之后双击安装,pkg文件。
安装之后,会默认自动打开浏览器,打开的默认地址是:http://localhost:8080,并让你输入密码,并提示你密码获取路径。
在复制完路径/Users/Shared/Jenkins/Home/secrets/initialAdminPassword之后,在finder中,发现会无法打开查看,解决办法:修改访问权限,右键Secrets
-> 显示简介->共享与权限->everyone ->修改为读和写。
查看密码的方式,可以在终端中使用命令。
sudo cat /Users/Shared/Jenkins/Home/secrets/initialAdminPassword
//输入命令之后,会提示你输入管理员账户的密码,按照提示输入即可。
输入密码密码之后点击继续,会进入到插件安装页面,你可以直接安装推荐的插件,也可以回头在插件管理里面自由选择插件安装,我第一次安装时使用的是安装推荐插件,第二次是在插件管理里面手动安装的。
插件安装完毕之后,就是到了创建用户的时候了,这个时候,你可以直接使用admin账户直接登录使用。
2.2使用HomeBrew进行安装
//打开终端 使用命令
brew install Jenkins
3.Jenkins的关闭,重启,重载配置
3.1如果目前Jenkins已经在浏览器中打开,此时如果要关闭Jenkins服务
//也就是说在 jenkins地址后使用exit,即可关闭Jenkins服务
http://localhost:8080/exit
3.2如果你此时安装了一些需要重启才能使用的插件
//如果需要重启,且Jenkins的默认服务端口8080 没有被重新配置
http://localhost:8080/restart
//如果在iTerm中进行操作的话 直接在终端中 输入jenkins 就会重启 Jenkins
3.3如果此时需要,重新载入刚才设置的一些配置
//在需要重载一些配置时 默认服务端口8080没有被重新配置
http://localhost:8080/reload
4.插件的安装和配置
在使用git进行Jenkins自动化打包时,需要安装的插件有 GitLab Plugin、Gitlab Hook Plugin、Xcode integration和Keychains and Provisioning ProfilesManagement,可以在插件管理里面手动安装。
在插件管理中,有可更新、可选插件(可以手动搜索点击安装的)、已安装的、高级(手动下载的插件文件,在此安装)。
手动搜索 点击安装,有些插件在安装之后需要restart(重启)才生效。
如果在安装的过程中,始终无法正常安装成功,可以使用高级,但是需要提前下载好插件库文件,同时需要提供此时的账户(User name)和密码(Password),也就是账户登录是用的账户和密码。具体的安装流程可以查看博客:
5.配置打包是需要的钥匙串。
5.1 把当前电脑安装的Xcode运行文件和keychain数据中,cpoy到 /Users/Shared/Jenkins/Library目录下,有的可能是在安装完Jenkins,在 /Users/Shared/Jenkins/目录下并没有Library目录,可以手动创建这样一个文件夹。
注意:Mac OS 10.12以下的没有login.keychain-db这个文件,只需要拷login.keychain文件
运行文件的路径:/Users/XXX/Library/MobileDevice,把文件夹Provisioning Profiles全部copy到/Users/Shared/Jenkins/Library路径下。
keychains钥匙串数据路径:/Users/XXX/Library/Keychains,把该文件夹下的login.keychain,login.keychain-db文件copy到/Users/Shared/Jenkins/Library/Keychains目录下.
5.2 在Jenkins中配置证书文件。在配置时,我上传的文件,上传的都是刚才copy过去的文件,也就是目录/Users/Shared/Jenkins/Library/下的Provisioning Profiles运行文件和钥匙串文件。
在上传钥匙串keychain时使用/Users/Shared/Jenkins/Library/Keychains目录下的,
上传完之后打开钥匙串,找到我需要上传的两本证书的名字,因为我想上传一个开发证书和一个生产证书,所以上传两个。把这两个证书的名字复制下来。
然后点击 Add Code Signing Identity,分别把这两个名字粘贴过去。完成了之后大概如下:
Password:钥匙串的访问密码,通常就是计算机账户的登录密码。
Code Signing Identity:就是刚才粘贴的证书名字:iPhone Distribution: xxx (xxxx)
接下来就是描述文件了。这里要注意一点,在Provisioning Profiles填上/Users/Shared/Jenkins/Library/MobileDevice/Provisioning Profiles这个地址。然后按照上传keychain的步骤,把Jenkins用户目录下的描述文件上传上去就行啦
上传完成之后, 样式如下:
配置钥匙串keychain
进入 系统管理->全局配置->Xcode Builder ,添加Keychain。“KeychainPath”路径${HOME}/Library/Keychains/login.keychain,也是默认路径,输入访问的密码即可。
6.创建工程项目。
点击左侧工具栏"新建",选择第一项"构建一个自由风格的软件项目"
2)General
新建完之后点选丢弃旧的构建,配置一下保持构建的天数和最大个数
3)源码管理信息
如果你是用的是Git,那就请选择Git,然后输入你的仓库地址
配置仓库访问的账户和密码
4)构建触发器
可选填。
5)构建环境
选择“Keychains andProvisioning Profiles Management”和“Mobile Provisioning Profiles”
Code Signing Identity :选择你要打包时使用的证书文件。
Mobile Provisioning Profile:就是你打包时用的运行文件 Provisioning Profile
6)构建
我选择的是Shell脚本,在勾选时,选择第二个“Executeshell”
#ProjectName Scheme Configuration Workspace不能留空格
#***********配置项目
#工程名称(Project的名字)
ProjectName=NSLog
#scheme名字 -可以点击Product->Scheme->Manager Schemes...查看
Scheme=NSLog
#Release还是Debug
Configuration=Release
#打包日期
ArchiveDate=`date +%Y%m%d_%H%M`
#工程路径 也就是xxx.xcworkspace的路径 在.sh文件的上一级目录
Workspace=/Users/xiaofeiniao/Desktop/NSLog
#build路径 编译成.xcarchive的路径
BuildDir=/Users/xiaofeiniao/Desktop/NSLog/Build
#工程路径
ProjectDir=/Users/xiaofeiniao/Desktop/NSLog/
#plist文件名,默认放在工程文件路径的位置
PlistName=${Workspace}/auto-publish/plist/ExportOptions.plist
#打包类型 是AppStore类型的 还是add-hoc类型的
#ipa包的路径
ArchivePath=/Users/xiaofeiniao/Desktop/NSLog/add-hoc/IPA_Files
#蒲公英账号的 uKey
U_key=814bd134a0c9bd026a38d8d245a1ba38
#蒲公英账号的APPKEY
APP_KEY=d59fde4c96d1c99752cf59fa27edb80d
#ipa包的路径文件
filePath=${ArchivePath}/${ProjectName}-${ArchiveDate}/${ProjectName}.ipa
#给文件添加读写权限
chmod 777 ${ProjectDir}
#创建构建和输出的路径
mkdir -p ${BuildDir} --unsafe-perm=true --allow-root
#构建 导user出包 所用的路径
mkdir -p ${ArchivePath} --unsafe-perm=true --allow-root
echo '**** 开始清理工程 ****'
xcodebuild clean -workspace ${Workspace}/${ProjectName}.xcworkspace -scheme ${Scheme} -configuration ${Configuration} -UseNewBuildSyetem=NO
echo '测试数据'${PlistName}
echo '**** 清理工程完毕 ****'
#pod 相关配置
#更新pod配置
#pod install
echo "打包的工程"${ProjectName}.xcworkspace
echo '**** 开始编译打包工程 ****' ${Configuration}
#构建
xcodebuild archive \
-workspace ${Workspace}/${ProjectName}.xcworkspace \
-scheme ${Scheme} \
-configuration ${Configuration} \
-archivePath ${BuildDir}/${ProjectName}.xcarchive -quiet \
clean \
build
echo '**** 编译打包工程完毕 ****'
echo '****** 开始导出IPA ******'
echo '导出的文件路径和名称'${BuildDir}/${ProjectName}.xcarchive
echo '导出的plist路径'${PlistName}
#生成ipa
xcodebuild -exportArchive \
-archivePath ${BuildDir}/${ProjectName}.xcarchive \
-exportPath ${ArchivePath}/${ProjectName}-${ArchiveDate} \
-exportOptionsPlist ${PlistName}
echo '****** 导出IPA成功 ******'
open ${BuildDir}
echo '****** 打开打包的目录成功 ******'
echo '****** 删除编译的.xcarchive ******'
if [ -d "${BuildDir}" ]; then
rm -rf "${BuildDir}"
echo 'build文件夹删除成功'
fi
echo "IPA包的路径打印"${filePath}
echo "****** 开始上传IPA包到蒲公英 ******"
if [ -e "${filePath}" ]; then
echo "进入上传"
curl -F "file=@${filePath}" \
-F "uKey=${U_key}" \
-F "_api_key=${APP_KEY}" \
"http://www.pgyer.com/apiv1/app/upload"
echo "****** IPA包上传到蒲公英成功 ******"
else
echo "IPA包不存在 上传蒲公英失败"
fi
遇到的坑1. 在Jenkins账户下对,管理账户xiaofeiniao创建的文件或者文件夹没有操作权限
解决方案:
1.使用root 账户进行操作 mkdir -p 路径 --unsafe-perm=true --allow-root
2.修改操作权限 chmod 777 路径,配置最大的读、写、执行权限。
遇见的坑2: 成功生成了 xcarchive 文件。 在由 xcarchive 文件生成 ipa 文件的时候。一直报错
解决方案:在打包时,更改bitcode 为NO,
遇见的坑3:没有找到导出的plist文件配置
解决方案:修改脚本上plist配置路径
遇见的坑4: HomeBrew安装的Jenkins依赖于终端ITerm,当ITerm进程被关闭关闭,jenkins服务也就被关闭了。
解决方案: 链接 launchd 配置文件
首先使用brew info jenkins, 查看jenkins安装的路径
然后,链接Jenkins下的homebrew.mxcl.jenkins.plist文件
执行命令
ln -sfv /usr/local/Cellar/jenkins/2.201/*.plist ~/Library/LaunchAgents
修改完后,在终端执行
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.jenkins.plist
如果在执行时遇见
//先执行一次卸载
launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.jenkins.plist
//再执行
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.jenkins.plist
遇见的坑5:在添加git仓库时,Git地址有问题,告诉无法链接仓库,
问题在于Jenkins的全局工具git,服务路径没有
解决办法:
使用命令查找git路径
[root@iz2ze0eeufai4caehh12jvz bin]# whereis git
git: /usr/local/bin/git /usr/local/git /usr/local/git/bin/git
在Jenkins的全局工具中配置(打开jenkins主页面–>系统管理–>全局工具配置)