前言
Jenkins安裝
Jenkins是一個開源軟件項目,是基于Java開發的一種持續集成工具,用于監控持續重復的工作,旨在提供一個開放易用的軟件平臺,使軟件的持續集成變成可能。
Jenkins下載地址
選擇Mac os X
下載好,一步一步安裝即可。
安裝成功后,直接在瀏覽器中輸入:http://localhost:8080/ ,打開jenkins;
http://localhost:8080/exit // 退出Jenkins
http://localhost:8080/restart // 重啟Jenkins,一般裝了插件重啟下
http://localhost:8080/reload // 重新加載Jenkins
找到/Users/用戶名/.jenkins/secrets/
也可能是/Users/Shared/Jenkins/Home/secrets/
這個目錄的initialAdminPassword文件,將文件內容拷貝至頁面密碼區域;
或者如下圖,執行sudo cat /Users/Shared/Jenkins/Home/secrets/initialAdminPassword
,將輸出的密碼拷貝紙頁面密碼區域;
插件安裝
在系統管理-->管理插件,添加如下插件:
Xcode integration
Git plugin
GitHub plugin
PostBuildScript Plugin
注意:
記得安裝環境變量注入插件,然后在配置工程時,構建->增加構建步驟->引入如下路徑;
PATH=$PATH:/usr/local/bin
# 包括pod、fastlane、git等shell的執行,都依靠這個路徑
Environment Injector Plugin // 環境變量注入
fastlane 安裝
fastlane工具
1、Xcode 命令行安裝
xcode-select --install
如果輸出如下,表示已經安裝
2、fastlane安裝
sudo gem install fastlane // 安裝fastlane
fastlane -v // 查看安裝版本
如果報錯
ERROR: While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /usr/bin directory.
請使用
sudo gem install -n /usr/local/bin/ fastlane
新建Item
/Users/developer/.jenkins/jobs/iOS_Test/workspace/項目工程
Jenkins通用配置
注意點:
1、Keychains
獲取Jenkins對鑰匙串的訪問權限
~/Library/Keychains/login.keychain 或者login.keychain-db
2、Provisioning Profiles
將描述文件拷貝到
~/Library/MobileDevice/Provisioning Profiles/
將以上文件分別拷貝到
/Users/Shared/Jenkins/Library/Keychains/
/Users/Shared/Jenkins/Library/MobileDevice/Provisioning Profiles/
3、證書權限
鑰匙串-> 登錄 -> 我的證書
找到對應證書,展開-選中私鑰,雙擊,訪問控制,允許所有應用程序訪問此項目,右下角,存儲更改。
fastlane配置
1、進入工程主目錄
fastlane init
2、查看Appfile文件
app_identifier("com.XX.XX") # The bundle identifier of your app
apple_id("renboan@liyun.com") # Your Apple email address
# For more information about the Appfile, see:
# https://docs.fastlane.tools/advanced/#appfile
3、配置Fastfile文件
# This file contains the fastlane.tools configuration
# You can find the documentation at https://docs.fastlane.tools
#
# For a list of all available actions, check out
#
# https://docs.fastlane.tools/actions
#
# For a list of all available plugins, check out
#
# https://docs.fastlane.tools/plugins/available-plugins
#
# Uncomment the line if you want fastlane to automatically update itself
# update_fastlane
# 平臺,安卓還是iOS
default_platform(:ios)
# iOS進行的操作
platform :ios do
desc "企業版"
# 在執行lane之前進行的操作,例如我們在每次打包之前都執行一次pod install
#before_all do
# faselane中pod install的操作
#cocoapods
#end
# 打包的lane操作,我們可以配置多個lane來打不同環境的包
lane :enterprise do |op|
# 打包之前跟新指定配置的描述文件
update_project_provisioning(
# 之前有sigh下載的描述文件存儲路徑
profile:"./XXXXDis.mobileprovision",
# 打包配置,Debug,Release
build_configuration:"Debug"
)
automatic_code_signing(
# 工程文件所在路徑
path:"ProjectName.xcodeproj",
# 是否使用自動簽名,這里如果是打包的話應該一般都為false吧,默認也是false
use_automatic_signing:false,
# 打包的team ID, 也就是打包使用的證書中的team ID,這個如果不知道是什么的話可以在xCode中設置好簽名用的描述文件后到xcodeproj下的pbxproj文件中搜索“DEVELOPMENT_TEAM”,它的值就是了
team_id:"XXXX",
# 這個就不用說了,需要修改的targets
targets:"ProjectName",
# 用哪種方式打包“iPhone Develop”還是“iPhone Distribution”
code_sign_identity:"iPhone Distribution",
# 描述文件名稱, 也就是使用哪個描述文件打包
profile_name:"XXXXDis"
)
currentTime = Time.new.strftime("%Y-%m-%d-%H-%M")
outputDirectory = "./build/#{currentTime}"
logDirectory = "#{outputDirectory}/fastlanelog"
gym(
# 打包方式,enterprise, adhoc,appstore,development
export_method: "enterprise",
scheme: "ProjectName",
# pod 生成的workspace文件
workspace:"ProjectName.xcworkspace",
# 輸出文件夾
output_directory: outputDirectory,
# 輸出包名稱
output_name:"ProjectName.ipa",
# 打包前是否clean
clean:true,
silent:true,
# 打包的配置 Debug Release
configuration:"Debug",
# 打包日志輸出文件夾
buildlog_path:logDirectory,
# 打包證書
codesigning_identity:'iPhone Distribution: XXXXXXXXXXXX TECHNOLOGY CO.,LTD.',
# Xcode 9 默認不允許訪問鑰匙串的內容,必須要設置此項才可以,運行過程可能會提示是否允許訪問鑰匙串,需要輸入電腦密碼
export_xcargs: "-allowProvisioningUpdates",
# 導出選項
export_options:{
# 打包導出時可選描述文件 "bundleID"=>"描述文件名稱"
provisioningProfiles: {
"com.XXXX.XXXX" => "XXXXDis.mobileprovision",
},
}
)
archive_path="Published succeed:/XXXXXXXXXXXX/build/#{currentTime}/ProjectName.ipa"
puts "#{archive_path}"
end
# 當lane執行完成之后進行哪些操作
after_all do |lane|
end
error do |lane, exception|
end
end
4、命令行執行打包
fastlane ios enterprise
Jenkins配置
1、shell語句
export LANG="en_US.UTF-8"
pwd
cd $WORKSPACE/ProjectName
fastlane ios enterprise
2、Set build description
Published succeed:(.*)
<a >單擊ipa包下載</a>
Regular expression:Published succeed:(.*) // 這里這樣寫,是因為fastlane文件中輸出了以Published succeed:為前綴的一個地址;
archive_path="Published succeed:/XXXXXXXXXXXX/build/#{currentTime}/ProjectName.ipa"
puts "#{archive_path}"
Description:構建后的描述中的\1
的意思是獲取正則表達式獲取的內容。
3、郵件通知
首先將系統管理員郵箱(你用來發郵件的郵箱)smtp服務打開,拿126郵箱舉例,打開郵箱,進入設置,進入POP3/SMTP/IMAP設置,打開如下圖幾個選項。
然后,在Jenkins,添加系統管理員郵箱及SMTP服務器,具體步驟是,進入Jenkins的系統管理-->系統設置,找到Jenkins Location,填寫系統管理員郵件地址;
添加SMTP服務器地址,126郵箱的是smtp.126.com,填寫管理員郵箱及密碼。
最后,在項目配置中,構建后操作項,添加收取郵件的郵箱,多個郵箱用空格隔開。
設置完成后,在構建歷史區域可以直接下載打包的ipa包。
- Jenkins啟動
sudo launchctl load /Library/LaunchDaemons/org.jenkins-ci.plist
- 停止運行Jenkins
sudo launchctl unload /Library/LaunchDaemons/org.jenkins-ci.plist
- 找回密碼
找到config.xml文件
/Users/Shared/Jenkins/Home/users/admin/config.xml
文件中找到,fullName為用戶名:admin
,passwordHash為加密的密碼:111111
<fullName>admin</fullName>
<passwordHash>#jbcrypt:$2a$10$DdaWzN64JgUtLdvxWIflcuQu2fgrrMSAMabF5TSrGK5nXitqK9ZMS</passwordHash>
本文已在版權印備案,如需轉載請在版權印獲取授權。
獲取版權