关于Mac上部署Jenkins的一些个人习惯
原创文章转载请注明出处Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括:
1、持续的软件版本发布/测试项目。
2、监控外部调用执行的工作。
文章图片
Paste_Image.png
文章图片
Paste_Image.png 去年因为要做持续集成,在公司的苹果主机上部署了Jenkins,网上的安装教程已经非常多了,这里记录一些个人的配置习惯。
- 因为要打包iOS App,所以必须部署在macOS上,性能当然越高越好。我在某宝买了一台黑苹果,主机价格不到4K,志强处理器+8G内存+250G固态硬盘+1T机械硬盘,系统做得很好,运行稳定,美中不足就是升级系统大版本需要把硬盘寄回给卖家。涉及到公司机密的文件保护,所以我把所有的资源都放在机械硬盘中,固态硬盘仅保留macOS系统和软件,如果有钱还是建议上一台MacPro。
- 不要用pkg文件安装Jenkins,因为这样会生成一个共享用户jenkins,而这个用户的权限和系统登录用户的权限不同,在编译iOS应用的时候会有证书校验和签名的问题,所以请下载war包,放到Java容器中执行,比如Tomcat。我在系统启动的时候自启动了Tomcat,所以开机以后Jenkins会自动启动。
- 前面说了数据都放在机械硬盘中,所以要修改Jenkins的工作目录。打开Tomcat的bin目录,编辑catalina.sh文件。找到以下代码:
# OS specific support.$var _must_ be set to either true or false.
在这句话上面添加下面这句话,在引号中填入你的路径。
export JENKINS_HOME=""
这个操作在拷贝Jenkins的war包之前就可以做了。
- 现在没有账号权限的困扰了,但是xcodebuild -exportArchive的时候会报错。
xcodebuild[62682:464728] [MT] IDEDistribution: Step failed: :
Error Domain=IDEDistributionErrorDomain Code=14 "No applicable devices found." UserInfo=0x7ff1a72ddd80 {NSLocalizedDescription=No applicable devices found.}error: exportArchive: No applicable devices found.Error Domain=IDEDistributionErrorDomain Code=14 "No applicable devices found." UserInfo=0x7ff1a72ddd80 {NSLocalizedDescription=No applicable devices found.}
** EXPORT FAILED **
什么鬼,你会看到这个莫名其妙的错误。Google会告诉你这是因为RVM中安装的ruby版本和Xcode要求的版本不一致。抄一个xcodebuild-safe.sh的脚本,export的时候用这个脚本处理,代码在文章末尾,拿走不谢,反正也不是我写的,我只是代码搬运工。
xcodebuild-safe -exportArchive ..........
- 打包这种事,能用脚本解决的问题就不要用额外的插件了,那些Android Studio/Xcode的插件,我都没有安装。
文章图片
Paste_Image.png
命令行这东西是最方便的,可定制化程度高,不是吗?Bash Shell和Python已经足够应付所有的打包工作了。
附送xcodebuild-safe.sh
#!/bin/bash --login# Cf. http://stackoverflow.com/questions/33041109
#
# Xcode 7 (incl. 7.0.1) seems to have a dependency on the system ruby.
# xcodebuild is screwed up by using rvm to map to another non-system
# ruby?. This script is a fix that allows you call xcodebuild in a
# "safe" rvm environment, but will not (AFAIK) affect the "external"
# rvm setting.
#
# The script is a drop in replacement for your xcodebuild call.
#
#xcodebuild arg1 ... argn
#
# would become
#
#path/to/xcbuild-safe.sh arg1 ... argn
#
# -----
# ? Because, you know, that *never* happens when you are building
# Xcode projects, say with abstruse tools like Rake or CocoaPods.# This allows you to use rvm in a script. Otherwise you get a BS
# error along the lines of "cannot use rvm as function". Jeez.
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"# Cause rvm to use system ruby. AFAIK, this is effective only for
# the scope of this script.
rvm use systemunset RUBYLIB
unset RUBYOPT
unset BUNDLE_BIN_PATH
unset _ORIGINAL_GEM_PATH
unset BUNDLE_GEMFILEset -x# echoes commands
xcodebuild "$@" # calls xcodebuild with all the arguments passed to th
【关于Mac上部署Jenkins的一些个人习惯】我是咕咕鸡,一个还在不停学习的全栈工程师。
热爱生活,喜欢跑步,家庭是我不断向前进步的动力。
推荐阅读
- HTML和CSS|移动端布局(上)
- 富贵和满仓
- 最近迷上了小多肉!
- 004几绺油菜花(上)
- 保姆上班时遭受意外伤害,算不算工伤
- “打石湖”的精彩
- 一山看着一山高
- 在路上,Now|在路上,Now,I'm not alone
- 2018-09-17
- 如何能够在股市中获取稳定的收益(上)