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’

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,839评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,543评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,116评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,371评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,384评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,111评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,416评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,053评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,558评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,007评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,117评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,756评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,324评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,315评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,539评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,578评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,877评论 2 345