基于Jenkins的LTP(Linux Test Project)压力测试 CI部署流程

发布时间 2023-09-24 23:03:37作者: 终末之诗EndPoem_ZH

基于Jenkins的LTP(Linux Test Project)压力测试 CI部署

下面以CentOS 7系统为例,写出流程、可能遇到的问题及解决方案。

安装Jenkins

参考链接:https://www.jenkins.io/doc/book/installing/linux/

CentOS系统,执行下列指令安装Jenkins和openjdk-17:

sudo wget -O /etc/yum.repos.d/jenkins.repo \
    https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key
sudo yum upgrade
# Add required dependencies for the jenkins package
sudo yum install java-17-openjdk
sudo yum install jenkins
sudo systemctl daemon-reload

问题:安装openjdk-17提示没有可用软件包

[root@localhost 下载]# sudo yum install java-17-openjdk
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * epel: mirror.lzu.edu.cn
github_git-lfs/x86_64/signature                          |  833 B     00:00     
github_git-lfs/x86_64/signature                          | 1.8 kB     00:00 !!! 
github_git-lfs-source/signature                          |  833 B     00:00     
github_git-lfs-source/signature                          | 1.8 kB     00:00 !!! 
没有可用软件包 java-17-openjdk。
错误:无须任何处理

解决方法:
通过以下链接下载jdk 17:
https://www.oracle.com/java/technologies/downloads/#java17

新建Jenkins自动构建项目

总体思路:在需要测试的服务器上下载LTP源码,用make编译安装(这一步骤只需进行1次)后,添加Jenkins项目进行定期自动测试。
下载、编译和安装的步骤,也可以添加到Jenkins中,这样每次构建将耗费更多时间。鉴于LTP源码较为稳定,下面的步骤只将测试部分加入Jenkins。

在服务器端下载和编译LTP源码

参考链接:https://github.com/linux-test-project/ltp

LTP最新Release版链接如下:https://github.com/linux-test-project/ltp/releases
可以在服务器端访问上方链接,找到最新版本下的Assets,下载Source code压缩包并解压。也可使用git clone命令:

$ git clone https://github.com/linux-test-project/ltp.git

克隆到本地之后,继续执行:

$ cd ltp
$ make autotools
$ ./configure

之后编译与安装所有测试用例:

$ make
$ make install

将LTP代码从Github仓库克隆到Gitee(可选)

国内Jenkins访问Github较慢,此步骤提供一个思路,当需要Jenkins从Github拉取代码时,可以将代码仓clone到Gitee后再进行后续操作。在本文介绍的LTP测试中,此部分不是必须的,只要能将LTP源码下载到服务器端,无需克隆也可以继续下面的步骤。下面介绍克隆的流程:

打开Gitee并登录 - 右上角“+”号 - 新建仓库:
新建仓库

选择右上方的“在其他网站已经有仓库了 - 点击导入”,在Git仓库URL中填写要拉取的代码仓库(如https://github.com/linux-test-project/ltp.git),点击下方导入按钮即可。注意创建时仓库默认私有,之后要改为公开,后面还会提到。

问题:
Failed to connect to repository : Command "git ls-remote -h HEAD" returned status code 128: stdout: ...
解决方法:
将Gitee仓库设为公开。

配置Jenkins进行定期自动构建与测试

参考链接:https://github.com/linux-test-project/ltp

前面已经下载并编译安装好了LTP,下面添加Jenkins项目进行定期自动运行测试。只需在Jenkins页面中新建Item,在配置 - Build Steps 新建 Execute shell类型,填写所需的测试命令即可。命令可以参考上方链接中的Running tests一节。下面是填写举例:

cd /opt/ltp
./runltp -f syscalls

测试填写举例

如需定期构建,只需在创建Jenkins项目时勾选Build periodcally,在日程表的方框中按照语法格式设置周期即可,详见说明:
定期构建

以上即为下载、编译LTP源码并用Jenkins进行CI部署的流程。

问题:
make: aclocal:命令未找到 make: *** [aclocal.m4] 错误 127
解决方法:
先执行 autoreconf -ivf 加载缺失文件后再执行 make 即可。如果提示 autoreconf: 未找到命令..,需要执行下列指令安装autoconf:yum -y install autoconf automake libtool

问题:
构建失败,日志提示make指令权限不够;输入sudo提升权限后,日志提示“没有终端存在,且未指定 askpass 程序
解决方法:
参考https://qastack.cn/programming/21659637/how-to-fix-sudo-no-tty-present-and-no-askpass-program-specified-error
任开一个终端,sudo visudo,在最后一行输入jenkins ALL = NOPASSWD: /bin/make, /opt/ltp/runltp
说明:Jenkins运行脚本时的用户是jenkins,该指令作用是使Jenkins用sudo执行make和runltp指令时不必输入密码。