[教程] 如何在 jenkins 里使用 fir-cli 工具
我们以 centos 7.x , root 账户为例
安装 jenkins 环境
安装 java 环境
yum install -y java
开始安装 jenkins
wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key
yum install -y jenkins
service jenkins start
理论上, 此时在 端口 8080 就启动了 jenkins
我们可以 使用 ps -ef | grep jenkins
查看 jenkins 进程的状态
[root@iZj6c529hta7bjc8lr5dpwZ ~]# ps -ef | grep jenkins
jenkins 1530 1 99 14:10 ? 00:00:09 /etc/alternatives/java -Dcom.sun.akuma.Daemon=daemonized -Djava.awt.headless=true -DJENKINS_HOME=/var/lib/jenkins -jar /usr/lib/jenkins/jenkins.war --logfile=/var/log/jenkins/jenkins.log --webroot=/var/cache/jenkins/war --daemon --httpPort=8080 --debug=5 --handlerCountMax=100 --handlerCountMaxIdle=20
root 1579 1258 0 14:10 pts/0 00:00:00 grep --color=auto jenkins
[root@iZj6c529hta7bjc8lr5dpwZ ~]#
我强烈建议继续运行以下指令
yum install -y autoconf automake bison bzip2 gcc-c++ libffi-devel libtool readline-devel ruby sqlite-devel zlib-devel glibc-headers glibc-devel openssl-devel
确保相应依赖软件也都安装完毕.
我们可以看到 这个 jenkins 是使用了用户 jenkins 启动的, 所以, 就算你在其他账号下, 使用rvm 安装了 ruby 和 fir-cli , 也是不生效的, 因为 rvm 是基于用户的, 不是全局安装., 接下来, 我们就需要为jenkins 用户安装 fir-cli
为 jenkins 用户安装 fir-cli
分为如下几步:
- 切换到 jenkins 用户
- 安装 rvm
- 安装 ruby
- 安装 fir-cli
切换到 jenkins 用户
在root 用户下运行下面的指令
su -s /bin/bash - jenkins
为何需要制定 /bin/bash? 因为在安装 jenkins 的时候添加的 jenkins 用户是没有 对应的bash 而是 /bin/false 的
jenkins:x:997:995:Jenkins Automation Server:/var/lib/jenkins:/bin/false
为何需要 -
?
因为我们要 jenkins 的登录状态
安装rvm
运行下列语句
gpg2 --keyserver hkp://pool.sks-keyservers.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
\curl -sSL https://get.rvm.io | bash -s stable
source /var/lib/jenkins/.rvm/scripts/rvm
rvm
当有一大片 rvm 输出之后, 说明 rvm 已经成功安装, 接下来安装 ruby.
安装 ruby
继续运行下列指令 安装 ruby 2.6.2 版本 (>= 2.4.2 版本均可)
# 国内用户如果想加速运行, 则可以执行下列语句使用rubychina 的镜像
# echo "ruby_url=https://cache.ruby-china.com/pub/ruby" > ~/.rvm/user/db
rvm install 2.6.2
rvm use 2.6.2 --default
# 经过一阵子等待, 会安装完毕. 国内会比较慢
#如果过程中提示需要一些依赖软件, 则需要sudo yum install 那些需要依赖的软件, 或者 再开一个terminal 用root 身份运行yum install
此时输入 ruby -v
, 则会提示
-bash-4.2$ rvm use 2.6.2 --default
Using /var/lib/jenkins/.rvm/gems/ruby-2.6.2
-bash-4.2$
-bash-4.2$ ruby -v
ruby 2.6.2p47 (2019-03-13 revision 67232) [x86_64-linux]
-bash-4.2$
此时 则可以安装 fir-cli 了
gem install fir-cli
fir help
如果一切顺利, 您将会看到 fir 的帮助指令.
至此, 您已经在 jenkins 用户中 安装了 fir-cli 指令, 接下来, 就可以在 jenkins 中调用了.
在jenkins web 中调用 fir-cli
我们进入 jenkins web 中, 新建一个项目
在构建里选择 运行 shell
填写
#!/bin/bash --login
fir help
特别指出的是, #!/bin/bash --login 不能省略, 需要使用 登录状态的 bash 执行fir 才行(https://askubuntu.com/questions/444880/why-do-i-need-to-run-bin-bash-login)
我们运行一下这个项目 可以看到项目运行的结果:
Started by user atpking
Running as SYSTEM
Building in workspace /var/lib/jenkins/workspace/fir demo
[fir demo] $ /bin/bash -login /tmp/jenkins2462650852516776345.sh
Commands:
fir (EXPIRED, PLEASE use fastlane instead) build_ipa BUILD_DIR [options] [s...
fir build_apk BUILD_DIR ...
fir help ...
fir info APP_FILE_PATH ...
fir login ...
fir me ...
fir publish APP_FILE_PATH ...
fir upgrade ...
fir version ...
Options:
-T, [--token=TOKEN] # User's API Token at fir.im
-L, [--logfile=LOGFILE] # Path to writable logfile
-V, [--verbose], [--no-verbose] # Show verbose
# Default: true
-q, [--quiet], [--no-quiet] # Silence commands
-h, [--help], [--no-help] # Show this help message and quit
Finished: SUCCESS
至此, fir-cli 可以在 jenkins 中运行, 您可以把 fir help 换成需要执行的指令.
FAQ
1. 问: 我在其他用户上安装了 rvm, 没在 jenkins 用户上安装, 可以么?
答: 可以, 你也可以将 jenkins 进程使用 其他用户启动, 但是我不太推荐这么做.
2. 问: shell 下 jenkins 用户无法 sudo yum install 软件, 所以rvm 安装失败
答: 如果是缺乏依赖, 系统会告诉你缺啥, 之后你复制一下这个指令, 在root下执行即可
3.问: 太麻烦了, 有咩简单的方法?
答: 有, jenkins 下直接调用 fir-cli 的 docker. 需要您有一定的 docker 基础
或者您使用 jenkins rvm 插件, 启用插件, 插件选取ruby 版本为 2.6.3, 之后在 执行 shell
里 先加入
rvm use 2.6.3
gem install fir-cli
# 第一次会安装, 第二次运行就只是检查安装了
fir publish xxxxxx
问: 我还是搞不定, 愿意付费要求技术支持.
答: 请在 https://github.com/FIRHQ/fir-cli 中找到我的联系方式联系我