利用Jenkins進行iOS持續集成

首發於個人簡書git

前言

1、持續集成優勢:
一、縮減開發週期,快速迭代版本
二、提供分發效率,測試人員以及相關人員無需等待開發人員打包
三、減小重複操做,高效打包,減輕開發人員工做量。github

2、iOS 持續集成的大概原理爲:
一、經過Jenkins做爲一個觸發器,捕捉push等操做或者定時,觸發打包動做;
二、GIT plugin 進行項目源碼管理;
三、經過Xcode integration進行打包。api

目錄

1、安裝Jenkins
2、Jenkins密碼設置瀏覽器

3、初始設置
4、安裝Jenkins插件
5、新建項目
6、General參數
7、源碼管理
8、構建觸發器設置
9、構建環境設置
10、構建
11、打包上傳
12、其餘ruby

正文

1、安裝Jenkins

方法一: 直接到官網下載安裝包
經過安裝包安裝bash

方法二:經過Homebrew使用命令行安裝
一、安裝Homebrew
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
二、安裝Jenkins
brew install jenkins
三、啓動Jenkinsapp

jenkins

安裝完成後,瀏覽器可能自動打開Jenkins,若是沒有自動打開,到瀏覽器輸入http://localhost:8080ssh

2、Jenkins密碼設置

打開http://localhost:8080 會出現一下界面,經過密碼解鎖。
curl

/Users/Shared/Jenkins/Home/ 目錄下找到secrets
這裏存在一個權限問題,須要右擊secrets文件夾,選擇"簡介",在簡介最下面找到共享與權限,進行權限修改,才能打開這個文件夾,
而後在裏面找到initialAdminPassword文件,一樣地進行權限修改後,打開initialAdminPassword文件,裏面的就是初始密碼,複製密碼到剛纔的頁面中盡心解鎖。
Jenkins 是以一個用戶進程存在於電腦中的,你從新開機的時候會發現多了一個Jenkins用戶,Jenkeins的相關文件最好在這個用戶下進行操做,避免權限問題沒法操做。ide

也能夠在管理員帳號下對Jenkins用戶帳號的密碼進行更改。

3、初始設置

最後進行帳戶註冊,註冊了帳戶以後,關掉頁面,從新打開輸入localhost:8080,這個時候就會讓你以帳戶形式登陸,進入主頁面

4、安裝Jenkins插件

在開始新建工程前須要按照一些Jenkins插件,在後面的工程設置中會用到


選擇系統管理

可選插件中選擇咱們須要的插件進行安裝:
一、Xcode integration
二、GIT plugin
三、GitLab Plugin
四、Gitlab Hook Plugin
五、Keychains and Provisioning Profiles Management

5、新建項目

構建一個自由風格的軟件項目:

6、General參數

能夠設置包的保留天數和最大保留個數
這些能夠根據須要進行調整,能夠不要選

7、源碼管理


這裏須要進行ssh key 設置

   點開Add按鈕進行ssh key 設置,與git ssh key設置原理同樣
Paste_Image.png

這裏要注意用正確的ssh 私鑰。

在branch specifier中輸入分支名字:圖中的分支名爲"JekinsTest"

8、構建觸發器設置

觸發器可自定義的地方不少,Poll SCM最經常使用
圖中的日程表標示20分鐘檢查是否更新進行構建

9、構建環境設置

這裏主要是設置簽名文件和證書,咱們先要去「Keychains and Provisioning Profiles Managemen」插件進行設置:

到Jenkins 首頁,點擊
如圖:

Paste_Image.png

上傳Provisioning Profile

設置login.keychain,login.keychian 在/Users/管理員用戶名/Library/keychains/login.keychain中能夠拿到,
Code Signing Identity 複製證書名字填上去。

設置完畢後回到剛纔的構建環境設置
咱們勾選「Keychains and Code Signing Identities」和「Mobile Provisioning Profiles」

10、構建

這裏咱們用Xcode進行構建打包

一、General build settings

二、Code signing & OS X keychain options

Paste_Image.png

三、Advanced Xcode build options

Note:在macOS10.10以上的系統中,用Jenkins的Xcode插件打包,重簽名會出現問題,報錯:
「Warning: --resource-rules has been deprecated in Mac OS X >= 10.10「
解決方法:
打開/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/PackageApplication ,而後將:

my @codesign_args = ("/usr/bin/codesign", "--force", "--preserve-metadata=identifier,entitlements,resource-rules",
                  "--sign", $opt{sign},
                  "--resource-rules=$destApp/ResourceRules.plist");

替換成

my @codesign_args = ("/usr/bin/codesign", "--force", "--preserve-metadata=identifier,entitlements",
                  "--sign", $opt{sign});

11、打包上傳

這裏使用的是bugly的內測分發

#!/usr/bin/env bash
cd $WORKSPACE/build

curl —insecure -F "file=@ipa包的名字.ipa" -F "app_id=bugly中的app_id" -F "pid=2" -F "title=標題" -F "description=用於Jekins持續集成測試" -F "secret=2" -F "password=分發時須要填的密碼" -F "download_limit=2000" https://api.bugly.qq.com/beta/apiv1/exp?app_key=bugly中的app_key

12、其餘

咱們的工程中經過git submodule 進行了模塊管理,第一次拉代碼的時候須要手動進行git submodule update,添加子模塊的內容進去。這個時候必須在Jenkins用戶帳號下操做,否則會由於讀寫權限的限制致使操做失敗。

相關文章
相關標籤/搜索