ios 在mac上配置Jenkins自动化打包
之前使用jenkins安装包配置过Jenkins,但是配置好之后因为使用安装包安装的jenkins是在机器上新建的账户,所以在配置证书时比较麻烦,会有权限问题,必须把证书和描述性文件拷贝到jenkins账户下才可以,最近使用brewinstall安装jenkins感觉比较方便,可以共用系统的证书和描述性文件
1.安装之前先检查是否装有Jenkins依赖的java环境, Jenkins依赖的是JDK1.8.xx
java -version
如果出现以下信息,则说明已经安装了java,直接进行第3步,若没出现则进行第2步
java version "1.8.0_102"
Java(TM) SE Runtime Environment (build 1.8.0_102-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode)
2.安装JDK1.8
JDK1.8下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
下载后进行安装,安装后进行第1步进行检查是否安装成功
3.检查是否有安装HomeBrew
brew -v
若出现以下信息则说明已安装HomBrew,若未出现则进行安装HomBrew
Homebrew 2.0.1
Homebrew/homebrew-core (git revision 6d0e9; last commit 2019-02-11)
HomeBrew安装方式:官方https://brew.sh, 亦可以直接直接在终端执行下面的命令
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
4.安装Jenkins
brew install jenkins
5.启动Jenkins服务,终端输入命令
jenkins
在浏览器中输入http://localhost:8080,首次安装应该会出现如下界面,这里需要你去找到Jenkins的初始密码,执行cat /Users/yao/.jenkins/secrets/initialAdminPassword 获取原始密码
填充密码后,点击继续进入插件安装方式选择,是推荐安装,还是自定义安装,一般都是选择推荐安装
插件安装过程中有可能会有些安装失败,没关系,后面可以在插件管理里面进行重新安装
安装插件完成后进入jenkins 进入创建账户页面
创建一个jenkins账户密码就可以了,然后进入jenkins URL配置页面,这里配置的URL就是局域网内可以使用的链接访问Jenkins的地址,比如因为我的ip地址是192.168.10.30, 且为固定ip, 所以我配置的是 https://192.168.10.30:8080/,当然这里也可以暂时不配置,在配置里面也可以进行配置
点击保存继续
6.插件安装
因为我是打从gitlab管理源码并打ios包,然后发布到fir上面,所以需要以下插件:
1,gitLab Plugin
2,gitLab Hook Plugin
3,Xcode integration
4,keychains and provisioning profiles Management
5,CocoaPods Jenkins Integration
6,build Timeout
7,description setter plugin
8,Email Extension Plugin
9,SSH Agent Plugin
10, workSpace Cleanup Plugin
11,fir-Plugin
进入Jenkins界面后,点击系统管理->插件管理->可选插件: 搜索自己想要安装的插件进行安装,待所有插件安装完成后进行重启Jenkins, 在浏览器中输入http://localhost:8080/restart
但是有些插件在上面是搜不到的,例如fir-Plugin,那只能自己去下载fir-Plugin然后使用高级方法安装.
fir-plugn下载
关闭Jenkins服务: 在Jenkins服务器网址后面加上exit http://localhost:8080/exit
重启Jenkins服务: 在Jenkins服务器网址后面加上restart http://localhost:8080/restart
7.创建任务
8.源码管理
我这里是用git管理的源码,所以选择git:
这个时候会报错,没有权限访问git仓库,因为这是私有仓库,所以需要配置SSH获取访问权限.
ssh-keygen -t rsa -C "你的邮箱标识"
把公共密钥放到git服务器, jenkins 私钥,jenkins.pub 公钥
获取公钥
$ cat /Users/Shared/Jenkins/.ssh/id_rsa.pub
回到构建的项目查看,已经有访问权限了
8.构建
xcodeBuild打包脚本
echo \'start build TestDemo\'
pwdwhoami
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8
export LC_ALL=en_US.UTF-8
security unlock-keychain -p "你的打包机器密码" ~/Library/Keychains/login.keychain
#工程环境路径
workspace_path=.
#项目名称
project_name=FamilyDoctor
echo"第一步,更新库文件"
/usr/local/bin/pod update --verbose --no-repo-update
echo "第二步,清除缓存文件...................."
xcodebuild cleanrm -rf archiverm -f $project_name.ipa
echo "第三步,设置打包环境,准备开始打ipa包...................."
sed -i \'\' \'s/\\app-store\\<\\/string\\>/\\development\\<\\/string\\>/\' archieveOpt.plistsed -i \'\' \'s/ProvisiOningStyle= Automatic;/ProvisiOningStyle= Manual;/\' $project_name.xcodeproj/project.pbxproj
echo "第四步,执行编译生成.app命令"
xcodebuild archive -workspace $project_name.xcworkspace -scheme $project_name -configuration Release -archivePath archive/$project_name.xcarchive CODE_SIGN_IDENTITY="iPhone Developer: Zhengyang Wu (JYGL73395F)" PROVISIONING_PROFILE_SPECIFIER="development_patient_kevin"echo "
第五步,执行编译生成.ipa命令"
xcodebuild -exportArchive -exportOptionsPlist archieveOpt.plist -archivePath archive/$project_name.xcarchive -exportPath ./ -configuration Release
-exportOptionsPlist archieveOpt.plist这里的archieveOpt.plist是我们在工程目录下新建的.plist文件,该文件指明打包的类型和teamid
.plist内容
9.上传fir
fir.im Token是必填的,查看方法:请登录fir.im后,点击头像选择API token进行查看
10.添加描述和链接
上传fir后肯定想显示一个链接,能直接跳到fir的二维码页面
添加set build description
构建后会出现如下效果:
可以看出显示的是html格式,并不是可以点击的链接,这是因为jenkins没有设置支持html语法,需要在
jenkins->系统管理->configure global security->Markup Formatter中选择"safe HTML"就可以了.
提交代码触发不了打包的问题:
进入gitLab项目 在对应位置添加
http://192.168.10.29:8080/gitlab/build_now
http://192.168.10.29:8080是jenkins的打包地址,添加位置如下
这样就可以自动触发打包了
遇到的问题 : jenkins 自动构建 IOS 包签名遇到问题 app: errSecInternalComponent Command /usr/bin/codesign failed with exit code 1
解决办法:
编译之前添加 security unlock-keychain -p "你的密码" "path to keychain/login.keychain"
根本原因是Jenkins,ssh方式到slave机上,默认是没有账户的,但是访问钥匙串要求必须有用户身份,所以添加一步输入密码解锁钥匙串,可以给Jenkins一个用户身份。 build步骤前添加一步解锁钥匙串。 security unlock-keychain -p "login pwd" ~/Library/Keychains/login.keychain
11. 卸载Jenkins
如果忘记账户密码 可以彻底删除重新安装
如果brewinstall 安装的,彻底删除需在终端依次执行以下命令:
sudo rm -rf /Users/Shared/Jenkins
sudo dscl . -delete /Users/jenkins
sudo dscl . -delete /Groups/jenkins
sudo rm -f /etc/newsyslog.d/jenkins.conf
pkgutil --pkgs | grep \'org\\.jenkins-ci\\.\' | xargs -n 1 sudo pkgutil —forget
如果安装包 安装的 可以彻底删除重新安装,彻底删除需在终端依次执行以下命令:
\'/Library/Application Support/Jenkins/Uninstall.command’