10

Jenkins初步使用记录

 3 years ago
source link: https://blog.ch-wind.com/jenkins-start-up/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Jenkins这个工具似乎在流程中使用的还挺多的,于是就找了些时间试用了下。

使用的Jenkins版本是2.266。

Jenkins 的官方网站,初看还是有点上个世代的感觉的。至少和其他的CI工具相比,不是那么的重视界面。

不过Jenkins的主要优势是开源免费,对于只是需要自动化流程的小规模工作室而言还是有不少优势的。毕竟流程跑起来最重要的是功能,界面只要能表达清晰、流畅使用就足够了。

下面主要记录一些遇到的问题,安装过程这些可以参考官方网站。

Root权限运行

一开始没搞明白Jenkins的使用方式,其实如果流程依赖于svn或者git的话,是不需要root权限的。

Jenkins的运行用户可以在配置中修改:

vi /etc/sysconfig/jenkins

修改

$JENKINS_USER=”root”

出于保守起见,同时修改目录权限:

chown -R root:root /var/lib/jenkins
chown -R root:root /var/cache/jenkins
chown -R root:root /var/log/jenkins

然后重启Jenkins

/etc/init.d/jenkins restart ps -ef | grep jenkins

这样之后就能正常的对有权限的目录进行访问了。

由于后面发现不需要Root权限,把配置改回去之后,把目录权限直接全部开放:

chmod -R 777 /var/lib/jenkins
chmod -R 777 /var/cache/jenkins
chmod -R 777 /var/log/jenkins

错误捕捉

Jenkins在运行脚本时,遇到了明明脚本报错却将job视为成功的情况。

主要原因是,在脚本头部具有 #!/bin/bash 。由于jenkins会将脚本放在一个临时sh文件里面执行,导致这样无法捕获到错误,移除 #!/bin/bash 即可,无需指定命令解释器。

或者,在脚本头部( #!/bin/bash 后面)加入命令: set -o errexit 或者  set -e

编译错误

这个问题的表现有点奇怪:直接在命令行中执行指定的脚本,编译过程可以正常通过。但是Jenkins使用同样的脚本却无法正确的完成编译。

最后发现是CMake自动选择的编译器不同造成的,Jenkins在运行时获取的环境变量与在命令行中的环境变量不同。

分别执行 echo $PATH 会发现输出的内容不一致。

虽然CMake本身支持强制指定编译器路径,不过考虑到通用性,可以直接在Jenkins中设定环境变量参数。

jmYz2y6.png!mobile

这样就能正常通过编译了。

Bash记录

由于之前对bash不是很熟悉,过程中找到一些有帮助的bash命令记录在这里记录一下

读取Svn信息

REVISION=`svn info | grep 'Last Changed Rev' | tr -d 'Last Changed Rev: '`
echo $REVISION

写入到文件

直接写入:

echo "hello" > logfile.txt

附带输出:

echo "hello" | tee logfile.txt printf "hello" | tee logfile.txt

读取文件第一行

line="$(head -1 logfile.txt)"

插件安装

插件安装遇到了很多奇怪的问题,无论使用官方的发布版本还是docker版本都无法正确的安装。

搜索了下,找到的建议里面,无论是设置proxy参数还是修改镜像地址都无法完成安装。

表现上看,网络测试是通的,但是下载对应的插件包就是失败。可是使用wget去下载对应的路径又能成功,由于报错语焉不详,无法进一步寻找原因,最后只能使用手工下载安装包并直接在后台手动安装的方式。

由于需要按照依赖来按顺序安装,所以需要一个一个的去自己找。应该是可以写成脚本的形式来自动进行的,只是由于只是稍微试用,就没有仔细纠结了。而且正常的话,就算手工安装也花不了多少时间。不如说搜索如何解决自动安装失败问题的过程反而花了更多时间……


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK