2018.4.17更新:
解決MAC下使用pkg安裝權(quán)限問(wèn)題
踩坑記錄
Fastlane+蒲公英+Jenkins
fastlane command not found
mac下Jenkins 主目錄導(dǎo)致的權(quán)限問(wèn)題
寫在前面
最近項(xiàng)目在做新項(xiàng)目時(shí)經(jīng)常發(fā)現(xiàn)有很多小bug需要改動(dòng),一改就要重新打包,哪怕是一個(gè)很小的項(xiàng)目,光是編譯打包導(dǎo)出,再上傳到測(cè)試平臺(tái)沒(méi)個(gè)十幾分鐘也是下不來(lái)的。本來(lái)的話也只是想找個(gè)自動(dòng)打包的腳本,找了幾個(gè)發(fā)現(xiàn)都不怎么理想,于是就瞄準(zhǔn)了 Jenkins + Fastlane
Jenkins是用于管理,如果只需要打包的話Fastlane就足夠了
本文也主要是記錄自己踩的坑,而且大部分是來(lái)自于Jenkins的,
有興趣的童靴可以繼續(xù)往下看~
當(dāng)前環(huán)境
| 名稱 | 版本 |
|---|---|
| macOS | 10.13.4 |
| Xcode | 9.3 |
| ruby | 2.4.0 |
| fastlane | 2.91.0 |
使用Fastlane
先說(shuō)說(shuō)Fastlane,畢竟Jenkins是持續(xù)化管理的,相信很多小伙伴的初衷也只是想要自動(dòng)化的快速快速編譯打包,省去漫長(zhǎng)等待而已
準(zhǔn)備工作
安裝RVM
使用rvm來(lái)管理ruby環(huán)境,macOS雖然有自帶的ruby環(huán)境,但是會(huì)出現(xiàn)各種權(quán)限問(wèn)題
安裝完成后記得 使用
source ~/.rvm/scripts/rvm
完了后 關(guān)閉終端跑一下rvm -v看看是否正常
如果出現(xiàn)command not found那就是有問(wèn)題了,
具體情況需要具體分析還是google吧安裝ruby
有了rvm安裝后 直接安裝ruby
安裝好后 執(zhí)行which ruby看看ruby是否由rvm管理
如果顯示為
/Users/xxxxxx/.rvm/rubies/ruby-2.4.0/bin/ruby
那就可以了
- 安裝fastlane
上面都搞定后執(zhí)行安裝命令
gem install fastlane -NV
至此,我們已經(jīng)可以使用fastlane自動(dòng)化打包了
準(zhǔn)備打包
- cd 到工程主目錄
- 執(zhí)行
fastlane init我這里選擇的是手動(dòng)配置 - 執(zhí)行
fastlane add_plugin pgyer安裝蒲公英插件
編輯Fastfile
# This file contains the fastlane.tools configuration
# You can find the documentation at https://docs.fastlane.tools
#
# For a list of all available actions, check out
#
# https://docs.fastlane.tools/actions
#
# Uncomment the line if you want fastlane to automatically update itself
# update_fastlane
default_platform(:ios)
platform :ios do
desc "上傳到測(cè)試版本到蒲公英"
desc "生成本地版本"
lane :topgyer do|option|
#自動(dòng)增加build
# increment_build_number
#自動(dòng)生成證書
#cert
#自動(dòng)生成配置文件
#sigh(force: true)//我使用的是手動(dòng)配置關(guān)閉這個(gè)。如需自動(dòng)則打開(kāi)即可
#gym配置,打包輸出。
#fastlane gym --export_method ad-hoc
#fastlane gym --export_method enterprise
#fastlane gym --export_method app-store
scheme_name = "你的scheme名字"
#獲取version和build版本號(hào)
version = get_info_plist_value(path: "./#{scheme_name}/Info.plist", key: "CFBundleShortVersionString")
build = get_info_plist_value(path: "./#{scheme_name}/Info.plist", key: "CFBundleVersion")
#導(dǎo)出路徑
output_directory = "./build"
#導(dǎo)出名稱
output_name = "#{scheme_name}_#{version}_#{build}_#{option[:desc]}_#{Time.now.strftime('%Y%m%d%H%M%S')}.ipa"
gym(
export_method: "ad-hoc", #這里填寫導(dǎo)出方式,我使用的是ad-hoc
export_xcargs: "-allowProvisioningUpdates",
export_options:{
provisioningProfiles: {
"cn.com.kkk" => "iPhone Distribution: kkk. (77777XXRRR)"
}
},
scheme: scheme_name,
clean: true,
output_directory: output_directory,
output_name: output_name
)
pgyer(api_key: "11111122222233333444444", user_key: "111122233344455555", update_description: "#{option[:desc]}")
end
end
回到項(xiàng)目項(xiàng)目主目錄 執(zhí)行fastlane topgyer desc:更新
編譯完成后就會(huì)自動(dòng)上傳到蒲公英
Jenkins 踩坑
Mac 下的 Jenkins真是一個(gè)大坑了。
重復(fù)過(guò)多種安裝方法來(lái)進(jìn)行構(gòu)建,一會(huì)是github拉不到代碼,一會(huì)又是fastlane command not found ,又或者是報(bào)了一堆ruby的錯(cuò)誤,心累啊。
最后嘗試了各種方法 總算是有點(diǎn)眉目了
pkg安裝
首先我們說(shuō)說(shuō)最坑爹的pkg安裝
Jenkins下載 LTS的macOS版本,很方便 直接是一個(gè).pkg文件,安裝一下。
但是安裝后會(huì)直接啟動(dòng)jenkins的web站,然后你會(huì)發(fā)現(xiàn)jenkins的目錄是默認(rèn)安裝/Users/Shared/jenkins的(就是共享文件夾),也就是在你的用戶目錄之外, 接下來(lái)等你安裝完成后一構(gòu)建就是各種報(bào)錯(cuò)。。。
所以。。。
不要使用pkg安裝。。。。
2018.4.17更新
需要注意的是安裝時(shí)不使用Shared用戶 (當(dāng)然用了也無(wú)妨)

把share用戶關(guān)閉 防止權(quán)限問(wèn)題

安裝完成后就會(huì)發(fā)現(xiàn)秘鑰就也在用戶目錄下了
如果忘記勾選了你會(huì)發(fā)現(xiàn)秘鑰的位置是在shared/jenkins目錄下。
沒(méi)關(guān)系,設(shè)置里面刪掉用戶,shared 中 把jenkins 目錄刪了
回到Finder的Application,找到Jenkins文件夾 雙擊jenkins.jar

繼續(xù)回到localhost:8080中也能看到秘鑰地址回到用戶目錄下了
接下來(lái)就是正常的安裝插件和語(yǔ)言。
由于本地使用rvm來(lái)管理ruby,也是深坑一大堆,構(gòu)建時(shí)會(huì)出現(xiàn)這些報(bào)錯(cuò)。
找了很多方法 原因大概是ruby的問(wèn)題,加過(guò)全局變量,還是不行
最后發(fā)現(xiàn),其實(shí)很簡(jiǎn)單。。。一個(gè)插件搞定。
插件管理中搜索 rvm

安裝完成后 在項(xiàng)目配置的構(gòu)建環(huán)境中選擇rvm的ruby版本就行了。。

接下來(lái)就可以愉快的構(gòu)建了。
命令行安裝
brew install jenkins
后端執(zhí)行
nohup java -jar /usr/local/Cellar/jenkins/版本號(hào)/libexec/jenkins.war --httpPort=8080 &
接著 新開(kāi)一個(gè)終端執(zhí)行
open /Library/LaunchDaemons
新建一個(gè)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>StandardOutPath</key>
<string>/var/log/jenkins/jenkins.log</string>
<key>StandardErrorPath</key>
<string>/var/log/jenkins/jenkins.log</string>
<key>EnvironmentVariables</key>
<dict>
<key>JENKINS_HOME</key>
<string>/Users/leon/Documents/FuckingJenkins/Jenkins/Home</string>
</dict>
<key>GroupName</key>
<string>daemon</string>
<key>KeepAlive</key>
<true/>
<key>Label</key>
<string>org.jenkins-ci</string>
<key>ProgramArguments</key>
<array>
<string>/bin/bash</string>
<string>/Library/Application Support/Jenkins/jenkins-runner.sh</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>UserName</key>
<string>jenkins</string>
<key>SessionCreate</key>
<true/>
</dict>
</plist>
接著更改plist的權(quán)限
sudo chown root:wheel /Library/LaunchDaemons/org.jenkins-ci.plist
最后執(zhí)行啟動(dòng)jenkins
sudo launchctl load /Library/LaunchDaemons/org.jenkins-ci.plist
回到localhost:8080

直接查看密碼 輸入 進(jìn)入安裝插件界面。
安裝完成后,先去插件管理中 安裝個(gè) 漢化

配置一下中文

接下來(lái)就是正常創(chuàng)建項(xiàng)目了。


這里可以直接填寫托管平臺(tái)的賬號(hào)的密碼,或者使用sshkey

這里就直接執(zhí)行fastlane命令就可以

至此就足夠了。
點(diǎn)擊立即構(gòu)建,查看控制臺(tái),所有的日志都會(huì)打印出來(lái)。
等待成功就ok了
后記
踩了好幾遍的坑 對(duì)于pkg的安裝一直不死心,來(lái)來(lái)回回重裝了好幾遍。最終還是放棄了。還是老老實(shí)實(shí)用jar
參考文章:
http://m.itdecent.cn/p/dc6f3fea7aa9
http://m.itdecent.cn/p/3b4a131653e0


