關於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揹包個人的一些理解
- 90%的窮人,都有這3個習慣
- 個人使用Kotlin的幾種習慣用法Kotlin
- 關於 Python 裝飾器的一些個人理解Python
- [前端開發]--分享個人習慣的命名方式前端
- [前端開發]–分享個人習慣的命名方式前端
- 基於docker部署jenkinsDockerJenkins
- 關於深度學習上的一些術語: Epoch, Batch Size, Iteration深度學習BAT
- 關於學習的一些建議
- 關於深度學習的一些技巧深度學習
- 關於GAN的個人理解
- 關於深度學習的一些淺見深度學習
- 關於RxJava在業務上的一些思考RxJava
- 關於一些設計上的基本常識
- 關於交叉熵的個人理解熵
- 基於Jenkins Pipeline自動化部署Jenkins
- mysql練習 —— 關於一些函式的使用MySql函式
- 關於 Jenkins master 共享 JENKINS_HOME 目錄的實驗JenkinsAST
- 2020 docker部署Jenkins學習筆記DockerJenkins筆記
- 關於ConcurrentHashMap1.8的個人理解HashMap
- Jenkins部署Jenkins
- 關於技術人員自身能力提升的一些思考
- 【譯】關於Webpack中一些讓人困惑的地方的解答Web
- 關閉Mac上煩人的通知之小技巧分享Mac
- 為什麼中國人喜歡午睡 外國人卻沒這個習慣?
- @Cacheable關於快取的個人筆記快取筆記
- 習慣的力量
- 7個高效的API和服務管理習慣API
- 高效程式設計師的七個習慣程式設計師
- 10 個 推薦的 Python 程式碼習慣Python
- Python程式設計的16個壞習慣Python程式設計
- 程式設計師的10個好習慣程式設計師
- jenkins前端部署Jenkins前端
- docker 部署jenkinsDockerJenkins
- netcore程式設計之後面對不習慣的xshell黑屏部署,是時候使用jenkins自動化釋出工具了NetCore程式設計Jenkins
- Mac Jenkins 部署 SpringBoot 應用到遠端伺服器MacJenkinsSpring Boot伺服器