前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >jenkins + gitlab + fastlane 一键打包上传至蒲公英和 Fir

jenkins + gitlab + fastlane 一键打包上传至蒲公英和 Fir

作者头像
网罗开发
发布2022-03-25 16:25:26
2.1K0
发布2022-03-25 16:25:26
举报
文章被收录于专栏:网罗开发网罗开发

前言

在开发过程中,总是被其他同事(开发,测试,产品等)要求临时打个包。恰巧之前配置的是一套本地用Python命令的自动化打包工具,但是仍然无法避免的要贮藏当前分支的代码,然后切换分支在本机上打包。一来一回,很耽误时间,更不用说如果用的手动打包方式该有多浪费时间了。

那么如何提高工作效率呢?

把打包权限开放给测试,产品运维等同事,让他们随时可以打最新的包,让他们使用工具。我们只负责开发和提交代码,让测试来打包,让产品或运维来提审。其实最好就是部署devops平台(不了解的自己查资料),开发之后的流程与我们无关,一切的目的还是为了让自己能按时下班。

jenkins安装

brew install jenkins

安装完成后,开启jenkins服务或者每次手动开启jenkins(一般用第一种比较方便)

 #启动jenkins
 brew services start jenkins
 #停止jenkins 
 brew services stop jenkins
 #重启jenkins
 brew services restart jenkins
 
 #直接启动jenkins
jenkins

打开浏览器,输入localhost:8080,去相关路径找到密码复制进去即可

配置打包工程

首先检查有没有安装Git插件,如果没有,就在Plugin Manager安装一下即可。

新建一个打包空工程

拉到Source Code Management,输入你工程的gitlab http地址和想要打包的分支。第二行是要配置Credentials,点击add,直接使用默认的类型Username with password,然后输入你的gitlab用户名和密码即搞定。

接下来配置触发器Build Triggers, 我这里是配置的一个命令触发和每天定时打包。还可以配置其他的各种触发条件,比如想要配置gitlab推送代码这种方式触发,那还需要去gitlab配置api token,jenkins还要配置git lab connectionGitlab+Jenkins搭建持续集成系统[1]

然后配置Build Environment,我这里的样例是配置了获取git提交日志,但是后面用fastlane获取提交日志也行,没有采用这个。

最后一步,Build,这里只写了fastlane ios agent_dev,其实就是执行fastlane脚本。

fastlane配置

讲讲我这里为什么使用fastlane,网上有些人是直接在jenkins上配置构建命令或者xcode build脚本的,我试过是可以的,但是其实在配置过程中,繁琐又容易踩很多坑。所以最后还是用了fastlane,只需要配置文件即可,以后也方便迁移修改,始终觉得无论什么工具,越简单越好。

fastlane安装

话不多说,直接开始,先更换ruby源

$ gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/
$ gem sources -l
https://gems.ruby-china.com
# 确保只有 gems.ruby-china.com

安装fastlane

$ sudo gem install fastlane -NV

fastlane配置

cd 到项目的目录里,然后执行fastlane init

在这给大家推荐一个好用的工具Go2Shell,安装打开后,在finder上会出现一个笑脸按钮,点击后可以直接cd到当前目录,配合iTerm更好用哦。

如下,这里选择4(自定义配置)。2和3是TestFilght和App Store配置,我这里暂时用不上,所以不选,后续也可以自己加上。

当命令执行到 bundle update可能会卡住,需要打开项目目录下新增的文件GemFile,修改一下ruby源。保存后,继续在当前目录下执行bundle update即可。

#旧
#source "https://rubygems.org"
#新
source "https://gems.ruby-china.com"

FastLane编写

准备工作做完了,打开项目的目录,会发现新增了FastLane文件夹,里面有个Fastfile文件。在里面配置打包脚本即可,以下是我的配置,修改后可以拿来直接用。在当前目录里执行fastlane即可测试本地打包是否能成功。

default_platform(:ios)

platform :ios do
  desc "Description of what the lane does"
  

  before_all do
      changelog_from_git_commits(
      # commit message 范围:自上次成功提交至当前最新提交
      between: [ENV['GIT_PREVIOUS_SUCCESSFUL_COMMIT'] || "HEAD^", "HEAD"],
      # 格式化,%s 代表 commit message,%an 代表提交人名
      pretty: "\n iOS \n - %s (%an)",
      # 忽略 Merge 信息
      merge_commit_filtering: 'exclude_merges',
    )

    # faselane中pod install的操作
     targetName = "Backend"  #项目名称
     cocoapods
  end
  #-----------------------------------------------------------------------DEV配置
  lane :agent_dev do|options|
    currentTime = Time.new.strftime("%Y-%m-%d %H: %m: %S")
    gym(
     scheme:"Backend_debug",
     configuration: "Release", #Release 或者 debug
     clean:true, #清除上次构建
     workspace:"AgentBackend.xcworkspace", # 项目入口文件名 如果是工作控件请换成:workspace: "xxx. workspace"
     export_method:"ad-hoc",  #打包的类型 ad-hoc 或者App Store等
     output_directory:"/Users/XXX/Downloads/Backend_DEV#{currentTime}", #打包输出路径 我写的是时间,防止文件夹生成相同报错
     output_name:"Backend_DEV", #生成的ipa文件名
 export_xcargs: "-allowProvisioningUpdates"
    )
  puts "开始上传蒲公英"
  pgyer(api_key: "b599c64357f6b8404c152a30caXXX", user_key: "819c717f5bd0d3123e248a1e431XXX",update_description:lane_context[SharedValues::FL_CHANGELOG])
  
  puts "开始上传FIR"

  firim(firim_api_token: "e69b09d037ca9979007e545a2b67XX",app_changelog:lane_context[SharedValues::FL_CHANGELOG]) 

  end

changelog_from_git_commits是为了在打包前获取git提交信息,然后在上传到蒲公英的时候取出来,作为更新信息填入进去。

cocoapods命令是在打包前执行pod install,如果需要这个命令,还需要在上面之前提到的Gemfile里增加一行gem "cocoapods"才能生效。

还需要注意workspace,这个看你项目是使用.xcworkspace还是.xcodeproj,之前没注意写错了,一直报错找不到pod的三方库。

上传到蒲公英或Fir

以下是安装两个插件的命令,然后去平台上找到相应的key即可

fastlane add_plugin pgyer
#安装fir
fastlane add_plugin firim

通知相关人员

打包完成后需要通知到相关人员,可以通过邮件或企业微信,钉钉等其他方式。我用的是推到企业微信,在fastlane上可以配置,但是我这里直接在蒲公英上配置webhook的,fir同理。关于webhook,在企业微信或钉钉的群里,可以增加一个机器人,然后会生成一个webhook。

总结

以上流程算是比较简单快捷的,最多几个小时就配置好了,当然这只是一个简单示例,还可以配置相当多的东西,比如上传到商店等。整个过程中可能会出现很多问题,大部分都能在网上找到,如果实在找不到,可以评论留言,可能我也遇到过。

jenkins开始打包大概率会报的两个错

出现fastlane requires your locale to be set to UTF-8.警告

环境变量里面设置 export LANG=en_US.UTF-8 export LC_ALL=en_US.UTF-8,我在jenkins的环境配置和本机的.zshrc.bash_porfile文件里都有设置。

出现 fastlane: command not found

这个情况一般是由于 jenkins 没有设置正确的 PATH,在命令行输入

echo $PATH

记录下输出的结果 在 jenkins 中系统管理-系统设置中,找到 环境变量(Environment variables) 在 key 中填写 PATH,在 value 中填写第一步中输出的结果 保存即可。如下图所示

参考资料

[1]

Gitlab+Jenkins搭建持续集成系统: https://rorschachchan.github.io/2018/05/25/Gitlab-Jenkins%E6%90%AD%E5%BB%BA%E6%8C%81%E7%BB%AD%E9%9B%86%E6%88%90%E7%B3%BB%E7%BB%9F/

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-03-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 网罗开发 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • jenkins安装
  • 配置打包工程
  • fastlane配置
    • fastlane安装
      • fastlane配置
        • FastLane编写
          • 上传到蒲公英或Fir
            • 通知相关人员
            • 总结
              • jenkins开始打包大概率会报的两个错
                • 参考资料
                相关产品与服务
                持续集成
                CODING 持续集成(CODING Continuous Integration,CODING-CI)全面兼容 Jenkins 的持续集成服务,支持 Java、Python、NodeJS 等所有主流语言,并且支持 Docker 镜像的构建。图形化编排,高配集群多 Job 并行构建全面提速您的构建任务。支持主流的 Git 代码仓库,包括 CODING 代码托管、GitHub、GitLab 等。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档