關於Mac上部署Jenkins的一些個人習慣
原創文章轉載請註明出處
Jenkins是基於Java開發的一種持續整合工具,用於監控持續重複的工作,功能包括:
1、持續的軟體版本釋出/測試專案。
2、監控外部呼叫執行的工作。
去年因為要做持續整合,在公司的蘋果主機上部署了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: <IDEDistributionThinningStep: 0x7ff1a42d23f0>:
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的外掛,我都沒有安裝。
命令列這東西是最方便的,可定製化程度高,不是嗎?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 system
unset RUBYLIB
unset RUBYOPT
unset BUNDLE_BIN_PATH
unset _ORIGINAL_GEM_PATH
unset BUNDLE_GEMFILE
set -x # echoes commands
xcodebuild "$@" # calls xcodebuild with all the arguments passed to th
我是咕咕雞,一個還在不停學習的全棧工程師。
熱愛生活,喜歡跑步,家庭是我不斷向前進步的動力。
相關文章
- 關於Linux的一些個人研習感悟Linux
- 關於面試的一些個人看法面試
- 關於 Laravel 的一些個人見解Laravel
- 關於01揹包個人的一些理解
- 一些寫程式碼的習慣
- [前端開發]–分享個人習慣的命名方式前端
- [前端開發]--分享個人習慣的命名方式前端
- 個人使用Kotlin的幾種習慣用法Kotlin
- 基於docker部署jenkinsDockerJenkins
- 關於 Python 裝飾器的一些個人理解Python
- 關於深度學習上的一些術語: Epoch, Batch Size, Iteration深度學習BAT
- 關於RxJava在業務上的一些思考RxJava
- 關於深度學習的一些技巧深度學習
- 關於學習的一些建議
- PHP新手常見的一些不好習慣PHP
- 實用好習慣,讓一個人每天進步
- 關於個人開源專案(vue app)的一些總結VueAPP
- 關於深度學習的一些淺見深度學習
- 關於GAN的個人理解
- [Jenkins]關於slave連結不上master的補充說明JenkinsAST
- 解答關於學習前端的一些問題前端
- mysql練習 —— 關於一些函式的使用MySql函式
- 關於原始碼的學習的一些問題原始碼
- 關於交叉熵的個人理解熵
- Jenkins部署Jenkins
- 關於《演算法圖解》(原書《grokking algorithms》)的一些個人感想演算法圖解Go
- 關於 Jenkins master 共享 JENKINS_HOME 目錄的實驗JenkinsAST
- 軟體開發中關注習慣的力量
- 養成良好的專案檔案上傳習慣
- 關於storyboard開發的一些理解(從視訊上看的)
- 關於DDD學習過程中的一些疑問
- 關於 PHP - ML 使用者習慣分析 Laravel 實驗程式碼整理PHPLaravel
- jenkins前端部署Jenkins前端
- docker 部署jenkinsDockerJenkins
- 基於Jenkins Pipeline自動化部署Jenkins
- 關於二次型慣性指數的註記
- 關於GeoWebCache的部署說明Web
- 關於ConcurrentHashMap1.8的個人理解HashMap