原創
2017-03-06php
關鍵點html
- Jenkins安裝及配置
- Pipeline建立及配置
- ruby的版本管理工具rbenv安裝
- fastlane安裝
- 常見構建問題
- 相關工具及技術網站推薦
什麼是持續集成 ?java
持續集成: 是一種軟件開發實踐,團隊開發成員常常集成他們的工做,一般每一個成員天天至少集成一次,也就意味着天天可能會發生屢次集成。每次集成都經過自動化的構建(包括編譯,發佈,自動化測試)來驗證,從而儘快地發現集成錯誤。團隊發現這個過程能夠大大減小集成的問題,讓團隊可以更快的開發內聚的軟件。
參考文章:阮一峯日誌node
經過pkg包安裝 在 Mac 環境下,咱們須要先安裝 JDK,而後在 jenkins 的官網 下載最新的 pkg 包,雙擊安裝便可。安裝好後在瀏覽器中輸入 localhost:8080 會出現如圖則表示安裝成功:
ios
經過war包安裝 若是Mac/windows上安裝了Tomcat 能夠直接將war包拷貝到tomcat/webapps,進入到war包所在目錄啓動Jenkins:git
java -jar jenkins.war --httpPort=8080
經過 [homebrew] (http://brew.sh/) 方式安裝github
brew install jenkins
經過Docker安裝
首先在Docker官網下載安裝配置Docker, 而後參考此網站介紹在Docker環境下安裝Jenkinsweb
默認配置 安裝好Jenkins後,選擇安裝推薦的插件便可:
chrome
建立登陸用戶
docker
Manage Jenkins
建立Node節點
分佈式構建(在Jenkins的配置中叫作節點),分佈式構建可以讓同一套代碼在不一樣的環境(如:Windows和Linux系統)中編譯、測試等。
Master節點:至關於Server的概念
Slave節點:至關於Agent的概念
更多介紹請查看Jenkins Master/Slave
配置Node時幾個重要參數介紹
- Name:節點名稱
- Description:節點描述,支持中文
- Remote root directionary:節點的根目錄
(注意:若是目錄不存在,會自動建立目錄。可是必須對該目錄有讀寫權限,不然會報錯:hudson.util.IOException2: Failed to copy xxxx)
- Labels:標記(又叫作標籤)用來對多節點分組,標記之間用空格分隔.例如'iOSMobile AndrodMobile',將會把一個節點標記上'iOSMobile'和'AndrodMobile'.
- Launch method:運行方式有四個選項。建議選擇第一、2種方式配置。詳細以下: 【推薦】Launch slave agents on Unix machines via SSH 在Unix(包括Linux)機器上通 過SSH通道鏈接節點 (適用於Unix和Linux)
Host:節點主機的ip地址
Credentials:憑據(若是爲空或者不可選擇,請在系統管理→Manage Credentials中配置。
Port:端口默認22
在mac上計算機已經安裝了ruby,在終端下輸入命令:ruby --version
爲了能更好的管理ruby版本,咱們使用rbenv工具
$ git clone https://github.com/rbenv/rbenv.git ~/.rbenv $ cd ~/.rbenv && src/configure && make -C src
安裝成功後執行 rbenv init
按照終端輸出的提示將 eval "$(rbenv init -)"
拷貝到指定文件(注意: 若是你是使用的iterm2 則拷貝至~/.zshrc 不然拷貝至./bash_profile
配置好之後,從新開啓一個終端,咱們安裝ruby 2.4.0版本
$ rbenv install -l # 查看ruby可用版本 $ rbenv install 2.3.0 # 安裝ruby2.3.0 $ gem install bundler # 安裝ruby gems $ rbenv rehash # 成功操做後,執行rehash操做 $ rbenv global 2.3.0 # ruby 系統全局環境 $ rbenv local 2.3.0 # ruby 本地環境 $ rbenv shell 2.3.0 # ruby做用於當前終端環境
node('Mobile') { stage('SVN Checkout') { checkout([$class: 'SubversionSCM', additionalCredentials: [], excludedCommitMessages: '', excludedRegions: '', excludedRevprop: '', excludedUsers: '', filterChangelog: false, ignoreDirPropChanges: false, includedRegions: '', locations: [[credentialsId: 'sclocman', depthOption: 'infinity', ignoreExternalsOption: true, local: '.', remote: 'svn://svn地址信息']], workspaceUpdater: [$class: 'CheckoutUpdater']]) sh "svn upgrade #{HOME}/.JenkinsAgent" } stage('Unit Testing') { dir('./fastlane') { // sh 'source ~/.bash_profile && bundle exec fastlane ios test' } } stage('Generate Test Report') { dir('./fastlane') { // sh 'source ~/.bash_profile && bundle exec fastlane ios test_report' } } stage('Update the Version NO.') { dir('./fastlane') { sh 'source ~/.bash_profile && bundle exec fastlane ios update_version' } } stage('Functional Testing') { dir('./fastlane') { sh 'source ~/.bash_profile && bundle exec fastlane ios function_test' } } stage('Build') { dir('./fastlane') { sh 'source ~/.bash_profile && bundle exec fastlane ios build config:Debug' } } stage('Release Version') { dir('./fastlane') { sh 'source ~/.bash_profile && bundle exec fastlane ios deploy config:Debug' } } }
$ xcode-select --install #確保安裝了最新的xcode command line tools $ sudo gem install fastlane -NV # 安裝fastlane
$ fastlane init
按照提示進行便可。成功後你的目錄工程下會多出一個fastlane目錄,更多fastlane使用請參考。
找不到打包的ipa,形成不能上傳蒲公英,couldn't open file "/Users/apple/.JenkinsAgent/workspace/locmanYZY-Test/fastlane/fastlane_build/fastlane/result/archive/Debug/ipa/Debug.ipa
緣由:未在Pipeline配置打包stage
打包未簽名,Code signing is required for product type 'Application' in SDK 'iOS 10.2
緣由:Agent機器爲配置對應證書及Profile
Could not find lane 'ios build_app_for_simulator'. Available lanes: ios test, ios build_ipa, ios build_simulator_app, ios deploy_to_pgyer, ios update_build_number 緣由:stage配置執行的lane找不到,直接參考提示修改便可
![](http://upload-images.jianshu.io/upload_images/2010692-84a3e4a957aaaf3a.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
構建版本error #4
Runnning script '[CP] Embed pods Frameworks' 緣由:須要證書受權
構建版本error #5
curl error SSLRead
配置curl ssl:
$ php -i |grep "SSL Version" #看看SSL Version的信息 SSL Version => SecureTransport // 執行下面命令 $ brew tap homebrew/dupes $ brew tap homebrew/versions $ brew tap homebrew/php $ brew install --with-openssl curl $ brew install \ --with-apache \ --with-homebrew-curl \ --with-homebrew-openssl \ --without-snmp php55 $ php -i | grep "SSL Version" #若是看到如下,則操做成功 SSL Version => OpenSSL/1.0.1j ``` ![](http://upload-images.jianshu.io/upload_images/2010692-e5e8a70d4f1021ad.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) #### 結後語 - **相關工具推薦** * [iTerm 2](http://www.iterm2.com/downloads.html) 一款能夠替代Mac自帶終端的軟件,爲了使其用起來順手能夠參考[Mac配置終端環境 iTerm2 + Zsh + Oh My Zsh + tmux](http://www.tuicool.com/articles/FFN7Vbq) * [PostMan](https://chrome.google.com/webstore/detail/postman/fhbjgbiflinjbdggehcddcbncdddomop?hl=en) 接口測試工具,屬於chrome插件,也能夠是APP模式,可是須要安裝了chrome才能使用 * [Atom](https://atom.io/) 用法等參考[Atom中文社區](https://atom-china.org/) ,[知乎](https://www.zhihu.com/question/22867204)上有對此款軟件的評價 * [Sublime](http://www.sublimetext.com/) * [alfred](https://www.alfredapp.com/) 用了你就知道有多方便,付費版本功能更多,能夠自定義overflow - **相關技術網站推薦** * [Thoutworks技術雷達](https://www.thoughtworks.com/radar) 同時能夠參考Thoutworks公司[逸言](http://agiledon.github.io/blog/2013/04/17/thoughtworks-developer-reading-radar/)的博客 * [infoQ](https://www.infoq.com/) 實踐驅動的社區資訊站點,致力於促進軟件開發領域知識與創新的傳播,包含有:架構、移動、運維、雲計算、AI、大數據、容器等技術新聞,有中文版面 * 有問題上 [stackoverflow](http://stackoverflow.com) * [ruby](https://ruby-china.org/) 瞭解學習相關ruby技術 * iOS 測試相關技術學習 | 技術框架 | 單元測試 | 截屏測試 | 功能測試 | |--------| ------------- |:-------------:| :--------:| | Quick | ✅ Swift(BDD)| ❎ | ❎ | | Nimble | ✅ Swift(斷言)| ❎ | ❎ | | KIWI | ✅ OC(BDD/斷言/Mock)| ❎ | ❎ | | FBSnapshotTestCase| ❎ | ✅ | ❎ | | Calabash | ❎ | ❎ | ✅ | | Appium | ❎ | ❎ | ✅ | 本文參考了不少blog、github、stackoverflow的文章及問題,感謝做者的分享!特別感謝ThoughtWorks的周教練耐心指導!本文提到的**後續補充問題及深刻詳解**將會持續更新,也歡迎各位修改文檔使其更加豐富細緻。