前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Mac下使用Jenkins踩坑 Fastlane自动化iOS打包写在前面使用FastlaneJenkins 踩坑后记

Mac下使用Jenkins踩坑 Fastlane自动化iOS打包写在前面使用FastlaneJenkins 踩坑后记

作者头像
gwk_iOS
发布2018-08-23 10:51:02
1.6K0
发布2018-08-23 10:51:02
举报
文章被收录于专栏:coding...coding...

2018.4.17更新: 解决MAC下使用pkg安装权限问题 踩坑记录 Fastlane+蒲公英+Jenkins fastlane command not found mac下Jenkins 主目录导致的权限问题

写在前面

本文同步博客,掘金,简书

最近项目在做新项目时经常发现有很多小bug需要改动,一改就要重新打包,哪怕是一个很小的项目,光是编译打包导出,再上传到测试平台没个十几分钟也是下不来的。本来的话也只是想找个自动打包的脚本,找了几个发现都不怎么理想,于是就瞄准了 Jenkins + Fastlane

Jenkins是用于管理,如果只需要打包的话Fastlane就足够了

本文也主要是记录自己踩的坑,而且大部分是来自于Jenkins的,

有兴趣的童靴可以继续往下看~

当前环境

名称

版本

macOS

10.13.4

Xcode

9.3

ruby

2.4.0

fastlane

2.91.0

使用Fastlane

先说说Fastlane,毕竟Jenkins是持续化管理的,相信很多小伙伴的初衷也只是想要自动化的快速快速编译打包,省去漫长等待而已

准备工作

  • 安装RVM 使用rvm来管理ruby环境,macOS虽然有自带的ruby环境,但是会出现各种权限问题 安装完成后记得 使用 source ~/.rvm/scripts/rvm 完了后 关闭终端跑一下rvm -v看看是否正常 如果出现command not found那就是有问题了, 具体情况需要具体分析还是google吧
  • 安装ruby 有了rvm安装后 直接安装ruby 安装好后 执行which ruby 看看ruby是否由rvm管理

如果显示为

/Users/xxxxxx/.rvm/rubies/ruby-2.4.0/bin/ruby

那就可以了

  • 安装fastlane 上面都搞定后执行安装命令 gem install fastlane -NV

至此,我们已经可以使用fastlane自动化打包了

准备打包

  • cd 到工程主目录
  • 执行fastlane init 我这里选择的是手动配置
  • 执行fastlane add_plugin pgyer 安装蒲公英插件

编辑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
#

# Uncomment the line if you want fastlane to automatically update itself
# update_fastlane

default_platform(:ios)

platform :ios do
desc "上传到测试版本到蒲公英"
  desc "生成本地版本"
  lane :topgyer do|option|
    
    #自动增加build
    # increment_build_number

    #自动生成证书
#cert

    #自动生成配置文件
#sigh(force: true)//我使用的是手动配置关闭这个。如需自动则打开即可

    #gym配置,打包输出。

    #fastlane gym --export_method ad-hoc
    #fastlane gym --export_method enterprise
    #fastlane gym --export_method app-store
    scheme_name = "你的scheme名字"

    #获取version和build版本号
    version = get_info_plist_value(path: "./#{scheme_name}/Info.plist", key: "CFBundleShortVersionString")
    build = get_info_plist_value(path: "./#{scheme_name}/Info.plist", key: "CFBundleVersion")
    
    #导出路径
    output_directory = "./build"
    
    #导出名称
    output_name = "#{scheme_name}_#{version}_#{build}_#{option[:desc]}_#{Time.now.strftime('%Y%m%d%H%M%S')}.ipa"

    gym(
      export_method: "ad-hoc",     #这里填写导出方式,我使用的是ad-hoc
    export_xcargs: "-allowProvisioningUpdates",
    export_options:{
       provisioningProfiles: {
           "cn.com.kkk" => "iPhone Distribution: kkk. (77777XXRRR)"
       }
},
      scheme: scheme_name,
      clean: true,
      output_directory: output_directory,
      output_name: output_name
     )

    pgyer(api_key: "11111122222233333444444", user_key: "111122233344455555", update_description: "#{option[:desc]}")
end
end

回到项目项目主目录 执行fastlane topgyer desc:更新

编译完成后就会自动上传到蒲公英

Jenkins 踩坑

Mac 下的 Jenkins真是一个大坑了。

重复过多种安装方法来进行构建,一会是github拉不到代码,一会又是fastlane command not found ,又或者是报了一堆ruby的错误,心累啊。

最后尝试了各种方法 总算是有点眉目了

pkg安装

首先我们说说最坑爹的pkg安装

Jenkins下载 LTS的macOS版本,很方便 直接是一个.pkg文件,安装一下。

但是安装后会直接启动jenkins的web站,然后你会发现jenkins的目录是默认安装/Users/Shared/jenkins的(就是共享文件夹),也就是在你的用户目录之外, 接下来等你安装完成后一构建就是各种报错。。。

所以。。。

不要使用pkg安装。。。。

2018.4.17更新

需要注意的是安装时不使用Shared用户 (当然用了也无妨)

自定义

把share用户关闭 防止权限问题

取消jenkins用户

安装完成后就会发现秘钥就也在用户目录下了

如果忘记勾选了你会发现秘钥的位置是在shared/jenkins目录下。

没关系,设置里面删掉用户,shared 中 把jenkins 目录删了

回到Finder的Application,找到Jenkins文件夹 双击jenkins.jar

继续回到localhost:8080中也能看到秘钥地址回到用户目录下了

接下来就是正常的安装插件和语言。

由于本地使用rvm来管理ruby,也是深坑一大堆,构建时会出现这些报错。

找了很多方法 原因大概是ruby的问题,加过全局变量,还是不行

最后发现,其实很简单。。。一个插件搞定。

插件管理中搜索 rvm

rvm插件

安装完成后 在项目配置的构建环境中选择rvm的ruby版本就行了。。

选择ruby版本

接下来就可以愉快的构建了。

命令行安装

brew install jenkins

后端执行

nohup java -jar /usr/local/Cellar/jenkins/版本号/libexec/jenkins.war --httpPort=8080 &

接着 新开一个终端执行

open /Library/LaunchDaemons

新建一个plist文件

<?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/leon/Documents/FuckingJenkins/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>

接着更改plist的权限

sudo chown root:wheel /Library/LaunchDaemons/org.jenkins-ci.plist

最后执行启动jenkins

sudo launchctl load /Library/LaunchDaemons/org.jenkins-ci.plist

回到localhost:8080

Screen Shot 2018-04-16 at 3.54.19 PM.png

直接查看密码 输入 进入安装插件界面。

安装完成后,先去插件管理中 安装个 汉化

Screen Shot 2018-04-16 at 4.07.07 PM.png

配置一下中文

Screen Shot 2018-04-16 at 4.08.07 PM.png

接下来就是正常创建项目了。

create

这里可以直接填写托管平台的账号的密码,或者使用sshkey

执行脚本

这里就直接执行fastlane命令就可以

shell

至此就足够了。

点击立即构建,查看控制台,所有的日志都会打印出来。

等待成功就ok了

后记

踩了好几遍的坑 对于pkg的安装一直不死心,来来回回重装了好几遍。最终还是放弃了。还是老老实实用jar

参考文章:

https://www.jianshu.com/p/dc6f3fea7aa9

https://www.jianshu.com/p/3b4a131653e0

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.04.16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 写在前面
  • 使用Fastlane
    • 准备工作
      • 准备打包
  • Jenkins 踩坑
    • pkg安装
      • 命令行安装
      • 后记
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档