[教程] 如何在 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

分为如下几步:

  1. 切换到 jenkins 用户
  2. 安装 rvm
  3. 安装 ruby
  4. 安装 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 中找到我的联系方式联系我

jc

继续阅读此作者的更多文章