原文:基于Jenkins和fastlane的iOS持续集成与发布环境搭建
前言
Jenkins安装
Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。
Jenkins下载地址
选择Mac os X
下载好,一步一步安装即可。
安装成功后,直接在浏览器中输入:http://localhost:8080/ ,打开jenkins;
找到
PATH=$PATH:/usr/local/bin
包括pod、fastlane、git等shell的执行,都依靠这个路径
|
|
xcode-select –install
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
|
|
/Users/developer/.jenkins/jobs/iOS_Test/workspace/项目工程
~/Library/Keychains/login.keychain 或者login.keychain-db
~/Library/MobileDevice/Provisioning Profiles/
/Users/Shared/Jenkins/Library/Keychains/
/Users/Shared/Jenkins/Library/MobileDevice/Provisioning Profiles/
钥匙串-> 登录 -> 我的证书
找到对应证书,展开-选中私钥,双击,访问控制,允许所有应用程序访问此项目,右下角,存储更改。
fastlane init
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
|
|
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
|
|
fastlane ios enterprise
export LANG=”en_US.UTF-8”
pwd
cd $WORKSPACE/ProjectName
fastlane ios enterprise
Published succeed:(.*)
单击ipa包下载
archive_path=”Published succeed:/XXXXXXXXXXXX/build/#{currentTime}/ProjectName.ipa”
puts “#{archive_path}”
sudo launchctl load /Library/LaunchDaemons/org.jenkins-ci.plist
sudo launchctl unload /Library/LaunchDaemons/org.jenkins-ci.plist
/Users/Shared/Jenkins/Home/users/admin/config.xml
|
|
本文已在版权印备案,如需转载请在版权印获取授权。
获取版权