为了账号安全,请及时绑定邮箱和手机立即绑定

基于Jenkins和fastlane的iOS持续集成与发布环境搭建

标签:
Java

前言

临安的荆湘妹子,在他乡还好吗?看到请回复~

Jenkins安装

Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。

Jenkins下载地址
选择Mac os X
下载好,一步一步安装即可。

webp  安装成功.png


安装成功后,直接在浏览器中输入:http://localhost:8080/ ,打开jenkins;

http://localhost:8080/exit            // 退出Jenkins http://localhost:8080/restart       // 重启Jenkins,一般装了插件重启下 http://localhost:8080/reload       // 重新加载Jenkins

   webp  解锁Jenkins.png

找到/Users/用户名/.jenkins/secrets/也可能是/Users/Shared/Jenkins/Home/secrets/这个目录的initialAdminPassword文件,将文件内容拷贝至页面密码区域;
或者如下图,执行sudo cat /Users/Shared/Jenkins/Home/secrets/initialAdminPassword,将输出的密码拷贝纸页面密码区域;

webp  解锁Jenkins-initialAdminPassword.png     webp  解锁Jenkins-密码拷贝.png     webp  自定义安装.png     webp  下一步安装.png     webp  创建管理员.png     webp  instace config.png
   webp  start jenkins.png     webp  安装完成.png

插件安装

在系统管理-->管理插件,添加如下插件:


   webp  image.png

Xcode integration
Git plugin
GitHub plugin
PostBuildScript Plugin

注意:
记得安装环境变量注入插件,然后在配置工程时,构建->增加构建步骤->引入如下路径;

PATH=$PATH:/usr/local/bin # 包括pod、fastlane、git等shell的执行,都依靠这个路径

Environment Injector Plugin // 环境变量注入

webp  Inject environment variables.png


webp  fastlane指令.png

fastlane 安装

fastlane工具
1、Xcode 命令行安装

xcode-select --install

如果输出如下,表示已经安装


   webp  Xcode-select.png

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

webp  新建Item.png     webp  create Item.png     webp  iOS_test.png     webp  workspace path.png  

/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

webp  Set build description.png  

Published succeed:(.*) <a href="http://XX.XX.XX.XX:8080/job/${JOB_NAME}/ws\1">单击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设置,打开如下图几个选项。


   webp  image.png

然后,在Jenkins,添加系统管理员邮箱及SMTP服务器,具体步骤是,进入Jenkins的系统管理-->系统设置,找到Jenkins Location,填写系统管理员邮件地址;


   webp  image.png

添加SMTP服务器地址,126邮箱的是smtp.126.com,填写管理员邮箱及密码。


   webp  image.png

最后,在项目配置中,构建后操作项,添加收取邮件的邮箱,多个邮箱用空格隔开。


   webp  image.png

设置完成后,在构建历史区域可以直接下载打包的ipa包。


   webp

作者:仁伯
链接:https://www.jianshu.com/p/db5fe7fed9f3


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消