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用户关闭 防止权限问题
安装完成后就会发现秘钥就也在用户目录下了
如果忘记勾选了你会发现秘钥的位置是在shared/jenkins目录下。
没关系,设置里面删掉用户,shared 中 把jenkins 目录删了
回到Finder的Application,找到Jenkins文件夹 双击jenkins.jar
继续回到localhost:8080中也能看到秘钥地址回到用户目录下了
接下来就是正常的安装插件和语言。
由于本地使用rvm来管理ruby,也是深坑一大堆,构建时会出现这些报错。
找了很多方法 原因大概是ruby的问题,加过全局变量,还是不行
最后发现,其实很简单。。。一个插件搞定。
插件管理中搜索 rvm
安装完成后 在项目配置的构建环境中选择rvm的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
直接查看密码 输入 进入安装插件界面。
安装完成后,先去插件管理中 安装个 汉化
配置一下中文
接下来就是正常创建项目了。
这里可以直接填写托管平台的账号的密码,或者使用sshkey
这里就直接执行fastlane命令就可以
至此就足够了。
点击立即构建,查看控制台,所有的日志都会打印出来。
等待成功就ok了
后记
踩了好几遍的坑 对于pkg的安装一直不死心,来来回回重装了好几遍。最终还是放弃了。还是老老实实用jar
参考文章:
https://www.jianshu.com/p/dc6f3fea7aa9
https://www.jianshu.com/p/3b4a131653e0