Mac Jenkins的本地安裝和iOS/pods配置使用,以及上傳到蒲公英/fir

打開終端:

1 : 安裝jenkins (當前2.183 版本)

brew install jenkins

提示更新
jenkins: Java 1.8 is required to install this formula. Install AdoptOpenJDK 8 with Homebrew Cask: brew cask install homebrew/cask-versions/adoptopenjdk8 Error: An unsatisfied requirement failed this build.
根據提示更新:

brew cask install homebrew/cask-versions/adoptopenjdk8

Updating Homebrew...

重新安裝jenkins

brew install jenkins

然后執(zhí)行war包(更換對應的版本號2.183)

java -jar /usr/local/Cellar/jenkins/2.183/libexec/jenkins.war --httpPort=8080

java更新
Jenkins requires Java versions [8, 11] but you are running with Java 9 from /Library/Java/JavaVirtualMachines/jdk-9.0.4.jdk/Contents/Home java.lang.UnsupportedClassVersionError: 53.0 at Main.verifyJavaVersion(Main.java:174) at Main.main(Main.java:142)

提示要求是java版本8 ,11 .
更新java (當前11)

brew cask install java11

重新執(zhí)行war包(更換對應的版本號2.183)

java -jar /usr/local/Cellar/jenkins/2.183/libexec/jenkins.war --httpPort=8080

如果java版本過高,刪除高版本(不知道還有沒有別的辦法)
Jenkins requires Java versions [8, 11] but you are running with Java 12 from /Library/Java/JavaVirtualMachines/openjdk-12.0.1.jdk/Contents/Home java.lang.UnsupportedClassVersionError: 56.0 at Main.verifyJavaVersion(Main.java:174) at Main.main(Main.java:142)
查看java版本

ls /Library/Java/JavaVirtualMachines/

adoptopenjdk-8.jdk jdk-9.0.4.jdk openjdk-11.0.2.jdk openjdk-12.0.1.jdk
刪除9.0版本
sudo rm -rf /Library/Java/JavaVirtualMachines/jdk-9.0.4.jdk

刪除12.0版本
sudo rm -rf /Library/Java/JavaVirtualMachines/openjdk-12.0.1.jdk

ls /Library/Java/JavaVirtualMachines/
adoptopenjdk-8.jdk openjdk-11.0.2.jdk

重新執(zhí)行war包
java -jar /usr/local/Cellar/jenkins/2.183/libexec/jenkins.war --httpPort=8080

下面信息提示啟動成功:

Running from: /usr/local/Cellar/jenkins/2.183/libexec/jenkins.war
hudson.util.Retrier#start: Performed the action check updates server successfully at the attempt #1
2019-07-09 03:07:09.684+0000 [id=49]    INFO    hudson.model.AsyncPeriodicWork$1#run: Finished Download metadata. 21,767 ms

查看文件路徑 /Library/LaunchDaemons 下是否有org.jenkins-ci.plist 文件,沒有就創(chuàng)建:

<?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/xxx/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>

Jenkins安裝時會啟動創(chuàng)建名為jenkins的用戶,
修改文件:/Library/LaunchDaemons/org.jenkins-ci.plist

里面的GroupName和UserName煌恢,
可以將該文件cp到另一個路徑修改后再覆蓋過來,
然后重啟Jenkins(brew services restart Jenkins)即可觉啊。


3 :打開網址

http://localhost:8080/

如果已經安裝過的,提示登錄: 如果第一次安裝會提示設置賬戶密碼


圖片.png

根據安裝日志顯示/Users/{你的電腦名}/.jenkins/
安裝地址:
/Users/niexiaobo/.jenkins/

初始密碼:

(網上說)在本地文件夾前往/Users/Shared/Jenkins/Home/secrets/initialAdminPassword路徑度苔,需要更改secrets文件夾的everyone的權限后牺汤,打開initialAdminPassword文件,復制出密碼,粘貼到網頁的輸入框中毁葱。

(本人沒找到[由于電腦以前安裝過Jenkins,可能有些步驟沒有],所以暫時使用下面免密登錄)

免密登錄:

修改 config.xml 設置
/Users/niexiaobo/.jenkins/config.xml 文件中
<useSecurity>true</useSecurity> 修改為false ,
然后終端重啟:

brew services restart Jenkins

也可以通過打開地址
http://localhost:8080/restart 重啟

首次安裝會有個安裝過程:


圖片.png

創(chuàng)建用戶/密碼:


圖片.png
圖片.png

點擊即可開始創(chuàng)建新的項目:


圖片.png

4 :創(chuàng)建新的項目之前,需要先安裝一個nodejs插件:

圖片.png

往下滾動找到插件管理:


圖片.png

安裝里搜索nodejs,然后點擊按鈕,立即生效:


圖片.png

創(chuàng)建新的項目,開始配置:

下面以github上建立一個測試項目示范:

前置工作:
登錄github - > 創(chuàng)建一個項目 -> 上傳helloA項目 -> 復制git路徑

5 : 開始配置iOS項目:

圖片.png
圖片.png
圖片.png

構建觸發(fā)器模塊,可根據需要選擇性勾選Build periodically選項贰剥,即按照預先設定的時間自動化構建倾剿。

定時器構建語法

* * * * *
星號中間用 空格 隔開

第一個表示分鐘,取值0~59
第二個
表示小時蚌成,取值0~23
第三個表示一個月的第幾天前痘,取值1~31
第四個
表示第幾月凛捏,取值1~12
第五個*表示一周中的第幾天,取值0~7芹缔,其中0和7代表的都是周日

用法舉例:

每30分鐘構建一次:H代表形參
H/30 * * * *

每2個小時構建一次:
H H/2 * * *

每天的8點坯癣,12點,22點最欠,一天構建3次: (多個時間點中間用逗號隔開)
0 8,12,22 * * *

每天早上8點到晚上6點每三小時檢查一次
H 8-18/3 * * *

Build periodically(定時構建):周期進行項目構建(它不care源碼是否發(fā)生變化)
Poll SCM(輪訓 SCM):定時檢查源碼變更(根據SCM軟件的版本號)坡锡,如果有更新就checkout最新code下來,然后執(zhí)行構建動作窒所。

圖片.png
圖片.png
圖片.png

shell腳本:

# !/bin/bash -ex
# export LANG=en_US.UTF-8
# 工作空間位置
WORKSPACE="/Users/niexiaobo/.jenkins/workspace"
platforms="artABC"
ProjectName="helloA"
# 切換到工程目錄
cd ${WORKSPACE}/${platforms}/${ProjectName}
# 打開鑰匙串
security unlock-keychain -p ${password} ~/Library/Keychains/login.keychain
# pastry命令行將外層的 www 目錄 合并到 平臺內的 www 目錄
# /Users/Shared/Jenkins/Documents/pastry/bin/pastry bake cordova prepare ${platforms}
# 配置 版本號
buildNumber="Jenkins:${BUILD_NUMBER} svn:${SVN_REVISION}"
# 獲取配置文件地址
PROJECT_INFOLIST="${WORKSPACE}/${platforms}/${ProjectName}/${ProjectName}/Info.plist"
# 修改配置文件 的 版本號
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion ${buildNumber}" "${PROJECT_INFOLIST}"
# 編譯(單工程用-target,多工程用-workspace)

packageOut="${WORKSPACE}/package_Out"

#執(zhí)行 (生成.xcarchive文件)
xcodebuild archive -scheme "${ProjectName}" -configuration "Release" -archivePath "${packageOut}/${ProjectName}/xc_${BUILD_NUMBER}.xcarchive"
#導出ipa
xcodebuild -exportArchive -archivePath "${packageOut}/${ProjectName}/xc_${BUILD_NUMBER}.xcarchive" -exportOptionsPlist "${packageOut}/${ProjectName}/ExportOptions.plist" -exportPath "${packageOut}/${ProjectName}/ipa_${BUILD_NUMBER}"

6 : 保存完成后,在首頁項目中就可以進行:

6.1 創(chuàng)建工程項目helloA

圖片.png

xcode工具打開,設置開發(fā)者信息,編譯成功 , 將項目上傳到git云端


圖片.png

進入Jenkins首頁,可點擊項目右側按鈕手動執(zhí)行:

圖片.png

點擊上面項目artABC進入:


圖片.png

點擊某一次編譯,可查看編譯日志等等:


圖片.png

7 關于上面shell腳本:

下面了解如何使用命令進行打包:

7.1 新版本xcode 打包 xcodebuild -exportArchive 命令

下面在
終端窗口,cd 命令進入項目路徑, 再進行操作

cd /Users/niexiaobo/.jenkins/workspace/artABC/helloA

(1)執(zhí)行 xcodebuild clean 進行清除

(2)執(zhí)行 (生成.xcarchive文件)

xcodebuild archive -scheme "helloA" -configuration "Release" -archivePath "/Users/niexiaobo/.jenkins/workspace/package_Out/helloA/1.xcarchive"
終端命令:生成.xcarchive文件

(3)添加ExportOptions.plist文件到某個路徑
一般我們通過xcode打包有幾種打包選項:


圖片.png

最后當我們導出文件時,會包含以下4種文件


圖片.png

其中ExportOptions.plist文件就包含了導出ipa文件的一些設置:


圖片.png

(4)導出包 格式://xxx.plist代表指定的exportOptionsPlist文件帆锋;
xcodebuild -exportArchive -archivePath xxx.xcarchive -exportOptionsPlist xxx.plist -exportPath ./Product
(如果項目沒用選擇Profile, 需要添加-exportProvisioningProfile 參數(shù))

命令示例:

xcodebuild -exportArchive -archivePath "/Users/niexiaobo/.jenkins/workspace/package_Out/helloA/1.xcarchive" -exportOptionsPlist "/Users/niexiaobo/.jenkins/workspace/package_Out/helloA/ExportOptions.plist" -exportPath "/Users/niexiaobo/.jenkins/workspace/package_Out/helloA/helloAipa"
終端命令:導出包
文件顯示

7.2 xcode 舊版本 打包 命令

進入項目路徑

cd /Users/niexiaobo/.jenkins/workspace/artABC/helloA

(1) 編譯項目(工程目錄下會多出一個 build 文件夾)

xcodebuild -project helloA.xcodeproj -target helloA -configuration Release

(2) PackageApplication命令:

 Xcode升級到8.3后(8.3以下直接最后一步打包) 用PackageApplication命令進行打包 提示下面這個錯誤
xcrun: error: unable to find utility "PackageApplication", not a developer tool or in PATH

PackageApplication下載地址:
鏈接: https://pan.baidu.com/s/14LYFvPQb6YJKL0Iy1Kzreg 提取碼: br8v 

解壓后存到下面目錄下:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/

然后執(zhí)行:
sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer/

然后執(zhí)行PackageApplication:
chmod +x /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/PackageApplication

(3) 最后進行打包

xcrun -sdk iphoneos PackageApplication -v /Users/niexiaobo/.jenkins/workspace/artABC/helloA/build/Release-iphoneos/helloA.app -o /Users/niexiaobo/.jenkins/workspace/package_Out/helloA_3.ipa

8 : 打包使用CocoaPods項目時

(8.2) 首先安裝CocoaPods環(huán)境

1 安裝CocoaPods環(huán)境
2 pod init //生成 podfile
3 編輯podfile文件
比如添加 : pod 'Reachability', '~> 3.0.0'
4 安裝

pod install
或者:
pod install --verbose --no-repo-update

5 最后會生成helloA.xcworkspace 文件, 也是以后項目啟動文件

圖片.png

(8.2) 然后在.git位置添加忽略文件.gitignore, 然后提交項目到git云端
圖片.png

內容:

#CocoaPods
Pods/

# Xcode
#
# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore

# Mac OS X Finder and whatnot
.DS_Store

## Build generated
build/
DerivedData/

## Various settings
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata/

## Other
*.moved-aside
*.xcuserstate
*.xccheckout

## Obj-C/Swift specific
*.hmap
*.ipa
*.dSYM.zip
*.dSYM

這時候如果直接在Jenkins上打包會報錯, 拉下來的代碼會依然運行helloA.xcodeproj文件, 自然編譯就會報錯.

(8.2) 添加插件

下載
需要下載兩個插件:token-macro.hpi和xcode-plugin.hpi吵取,
https://updates.jenkins-ci.org/download/plugins/token-macro/
https://updates.jenkins-ci.org/download/plugins/xcode-plugin/

在jenkins安裝插件位置:
jenkins->系統(tǒng)管理(Manage Jenkins)->管理插件(Manage plugin)->高級advance->上傳插件.

先上傳安裝token-macro.hpi,再上傳安裝code-plugin.hpi锯厢,安裝完后重啟(http://localhost:8080/restart)皮官,即可在構建中看到xcode選項。

上傳插件
進入Manage Jenkins 菜單

進入管理插件欄:


圖片.png

找到上傳插件:


圖片.png

先上傳安裝token-macro.hpi实辑,再上傳安裝code-plugin.hpi捺氢,

圖片.png

安裝完后重啟
http://localhost:8080/restart

圖片.png

(8.3) 配置shell腳本

修改腳本:
(1)由于pod相關文件均被git忽略,clone下來后需要update一下
(2)pod管理使用的是.xcworkspace文件,打包命令需要指定文件

#!/bin/sh

WORKSPACE="/Users/niexiaobo/.jenkins/workspace"
platforms="artABC"
ProjectName="helloA"


# 切換到工程目錄
cd ${WORKSPACE}/${platforms}/${ProjectName}

# 打開鑰匙串
security unlock-keychain -p ${password} ~/Library/Keychains/login.keychain
# pastry命令行將外層的 www 目錄 合并到 平臺內的 www 目錄
# /Users/Shared/Jenkins/Documents/pastry/bin/pastry bake cordova prepare ${platforms}
# 配置 版本號
buildNumber="Jenkins:${BUILD_NUMBER} svn:${SVN_REVISION}"

echo "版本號:${BUILD_NUMBER}"

# 獲取配置文件地址
PROJECT_INFOLIST="${WORKSPACE}/${platforms}/${ProjectName}/${ProjectName}/Info.plist"

echo "配置文件地址${PROJECT_INFOLIST}"


# 修改配置文件 的 版本號
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion ${buildNumber}" "${PROJECT_INFOLIST}"

packageOut="${WORKSPACE}/package_Out"

#  檢查pod更新
pod install --verbose --no-repo-update

#  clean 項目:
xcodebuild -workspace "${WORKSPACE}/${platforms}/${ProjectName}/${ProjectName}.xcworkspace" -scheme "${ProjectName}" -configuration "Release" clean

# 生成archive 文件:
xcodebuild archive -workspace "${WORKSPACE}/${platforms}/${ProjectName}/${ProjectName}.xcworkspace" -scheme "${ProjectName}" -archivePath "${packageOut}/${ProjectName}/xc_${BUILD_NUMBER}.xcarchive" -configuration "Release"  


# 導出ipa文件:
xcodebuild -exportArchive -archivePath "${packageOut}/${ProjectName}/xc_${BUILD_NUMBER}.xcarchive" -exportOptionsPlist "${packageOut}/${ProjectName}/ExportOptions.plist" -exportPath "${packageOut}/${ProjectName}/ipa_${BUILD_NUMBER}" -allowProvisioningUpdates


保存,編譯

(8.4)當然不使用shell腳本也行, 如下步驟配置:

進入項目-配置configure->刪除execute shell
點擊- 導出IPAexport IPA :

/Users/niexiaobo/.jenkins/workspace/package_Out/helloA/
ad-hoc
helloA${BUILD_DATE}
/Users/niexiaobo/.jenkins/workspace/package_Out/helloA/export/2/

圖片.png

在Keychain path那里填寫${HOME}/Library/Keychains/login.keychain


圖片.png

helloA
/Users/niexiaobo/.jenkins/workspace/artABC/helloA/helloA
/Users/niexiaobo/.jenkins/workspace/artABC/helloA/

圖片.png

配置完成后保存.

然后回到項目編譯.


圖片.png

9 : 打包上傳到fir

9.1 通過shell上傳

(1)安裝插件 (需要插件支持才能上傳)

打開Mac 終端,輸入命令:

 sudo gem install fir-cli

安裝成功:


圖片.png
(2) 獲取token (需要校驗,相當于登錄賬戶密碼)

安裝完插件后, 登錄fir, 移動到右上角賬號,選擇api token :


圖片.png

生成token


圖片.png
(2) 修改已經配置的 shell腳本

假設上面生成的token是 1234567894567890
在腳本最后添加一行:

#!/bin/sh

WORKSPACE="/Users/niexiaobo/.jenkins/workspace"
platforms="artABC"
ProjectName="helloA"

.....
.....
.....

# 導出ipa文件:
xcodebuild -exportArchive -archivePath "${packageOut}/${ProjectName}/xc_${BUILD_NUMBER}.xcarchive" -exportOptionsPlist "${packageOut}/${ProjectName}/ExportOptions.plist" -exportPath "${packageOut}/${ProjectName}/ipa_${BUILD_NUMBER}" -allowProvisioningUpdates

#上傳ipa文件到fir (發(fā)布App Store的包不允許)
fir publish "${packageOut}/${ProjectName}/ipa_${BUILD_NUMBER}/${ProjectName}.ipa" -T "1234567894567890" -c "Uploaded by fir-jenkins plugin"

現(xiàn)在可以構建代碼了.

構建完成后fir下載地址:


圖片.png

9.2 通過Jenkins 插件上傳

(1)下載插件

-> fir 插件下載地址

(2)安裝插件

在jenkins安裝插件位置:
jenkins->系統(tǒng)管理(Manage Jenkins)->管理插件(Manage plugin)->高級advance->上傳fir-plugin.hpi插件.

(3)編輯配置:添加構建事件- > 上傳到fir
圖片.png

添加token , ipa包的文件夾路徑(最后沒有斜杠"/" )


圖片.png

保存后構建項目即可.

-------end---------

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市剪撬,隨后出現(xiàn)的幾起案子摄乒,更是在濱河造成了極大的恐慌,老刑警劉巖残黑,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件馍佑,死亡現(xiàn)場離奇詭異,居然都是意外死亡梨水,警方通過查閱死者的電腦和手機拭荤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來疫诽,“玉大人舅世,你說我怎么就攤上這事∑嫱剑” “怎么了雏亚?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長逼龟。 經常有香客問我评凝,道長,這世上最難降的妖魔是什么腺律? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任奕短,我火速辦了婚禮宜肉,結果婚禮上,老公的妹妹穿的比我還像新娘翎碑。我一直安慰自己谬返,他們只是感情好,可當我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布日杈。 她就那樣靜靜地躺著遣铝,像睡著了一般。 火紅的嫁衣襯著肌膚如雪莉擒。 梳的紋絲不亂的頭發(fā)上酿炸,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天,我揣著相機與錄音涨冀,去河邊找鬼填硕。 笑死,一個胖子當著我的面吹牛鹿鳖,可吹牛的內容都是我干的扁眯。 我是一名探鬼主播,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼翅帜,長吁一口氣:“原來是場噩夢啊……” “哼姻檀!你這毒婦竟也來了?” 一聲冷哼從身側響起涝滴,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤绣版,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后歼疮,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體僵娃,經...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年腋妙,在試婚紗的時候發(fā)現(xiàn)自己被綠了默怨。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡骤素,死狀恐怖匙睹,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情济竹,我是刑警寧澤痕檬,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站送浊,受9級特大地震影響梦谜,放射性物質發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一唁桩、第九天 我趴在偏房一處隱蔽的房頂上張望闭树。 院中可真熱鬧,春花似錦荒澡、人聲如沸报辱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽碍现。三九已至,卻和暖如春米奸,著一層夾襖步出監(jiān)牢的瞬間昼接,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工悴晰, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留辩棒,地道東北人。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓膨疏,卻偏偏與公主長得像,于是被迫代替她去往敵國和親钻弄。 傳聞我的和親對象是個殘疾皇子佃却,可洞房花燭夜當晚...
    茶點故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內容