自动化测试平台搭建
自动化测试平台搭建
测试平台技术论证与实践
初步方案
需要2台服务器(a,b)均安装Ubuntu 2204,a作为Gitlab服务器,b作为Jenkins服务器,同时均安装docker作为镜像的部署工具。
存在问题
序号 | 问题简述 | 解决方案 | 当前状态 |
---|---|---|---|
1 | 系统采用centos还是ubuntu | ubuntu | |
2 | 采用docker方式安装配置Gitlab还有Jenkins,还是直接在系统上部署Gitlab,Jenkins?docker安装,便于部署,升级,但是目前只在单机上验证过部署Gitlab docker |
基础环境配置
(下表将列出所有电脑通用环境配置)
软件名称 | 开放端口 | 软件版本 |
---|---|---|
Docker Client/ Docker Compose | —— | 24.0.7 |
Git | —— | Docker version 24.0.7, build afdd53b |
Portainer | 19000 | 2.19.4 |
软件基本信息
软件名称 | 部署设备名称 | 开放端口 | 软件版本 |
---|---|---|---|
Gitlab | PC_02(192.168.2.136) | 19980、19922、19443 | 16.7 |
Jenkins | PC_01(192.168.2.105) | 18080、50000 | 2.440 |
VsCode | PC_01(192.168.2.105) | 18000 | 1.4.0 |
硬件基本信息
设备名称(角色) | 设备IP | 系统信息 |
---|---|---|
PC_01(Jenkins) | 192.168.2.105 | root@DESK-01:/home/qwea# uname -a Linux DESK-01 6.2.0-39-generic #40~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 16 10:53:04 UTC 2 x86_64 x86_64 x86_64 GNU/Linux |
PC_02(Gitlab) | 192.168.2.136 | root@DESK-02:~# uname -a Linux DESK-02 6.2.0-37-generic #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2 x86_64 x86_64 x86_64 GNU/Linux |
server(Centos测试机) | 192.168.2.135 | root@server sqa# uname -a Linux server 4.18.0-348.7.1.el8_5.x86_64 #1 SMP Wed Dec 22 13:25:12 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux |
系统初始化配置
Firefox配置
关闭 Firefox 的提示 “您必须先登录此网络才能访问互联网
- 在搜索地址栏输入about:config
- 搜索 network.captive-portal-service.enabled,并将值设为 false
系统更新
1 | # 系统更新 |
通用基础软件配置
MAKE GCC
1 | root@DESK-01:/newFS# apt-get install -y make |
SSH
1 | # 开启SSH |
Docker安装
1 | # 自动脚本安装 |
Git
1 | # add-apt-repository ppa:git-core/ppa |
Portainer
1 | root@DESK-01:/newFS/docker# docker run -d \ |
Gitlab
Docker Client(推荐)
1 | # 运行镜像 |
Docker Compose
1 | # 1 创建Docker配置文件 |
Jenkins
Docker Client(推荐)
1 | docker run -itd \ |
Docker Compose
1 | # 1 创建Docker配置文件 |
VsCode
Docker Client
1 | docker run -d \ |
系统初始化
1 | gcc -v |
Git配置
1 | # 配置提交用户名 |
拉取项目
1 | root@f0a5b14e4336:~/code/vscode-server/GitProjects# |
搭建过程问题记录
Docker overlay2迁移
docker部署应用过程中,默认会在 /var/lib/docker 下新建overlay2数据卷,占用存储空间,解决方法如下
1 | # 如果系统原有硬盘空间不足可以通过挂载额外硬盘的方式增加存储空间 |
Gitlab http 克隆地址更改为本地IP
docker部署Gitlab之后系统仓库克隆地址会变为字符串,并非实际IP地址:自定义端口,解决方法如下
通过映射配置目录修改gitlab.rb配置配置文件
1 | root@DESK-02:/# find /newFS/docker/gitlab/ -name gitlab.rb |
按以上配置的效果是可以使用端口访问gitlab的web服务
直接修改Gitlab容器内的配置文件(此方法未解决,容器重启后依然会出现)
1 | # 进入Gitlab容器修改配置文件后重启 |
Docker创建测试环境
Ubuntu
1 | # ubuntu2204 |
Centos
现有的环境中Jenkins容器编译好的结果文件,放在Ubuntu2204上测试没有问题,但是放在Centos8上执行出现GLIBC版本错误
1 | [root@server sqa]# ./all_test |
- 分析错误信息可以知道在Centos8上执行二进制文件(all_test),需要glibc的版本至少为GLIBC_2.34,而现在系统上的glibc版本低于执行文件需要的版本
- 查看测试过程中所有设备的glibc版本
设备名称 | GLIBC版本 | GLIBC版本详细信息 |
---|---|---|
DESK-01 | 2.35 | root@DESK-01:~# ldd --version ldd (Ubuntu GLIBC 2.35-0ubuntu3.6) 2.35 |
DESK-02 | 2.35 | root@DESK-02:~# ldd --version ldd (Ubuntu GLIBC 2.35-0ubuntu3.5) 2.35 |
server | 2.28 | [root@server sqa]# ldd --version ldd (GNU libc) 2.28 |
Gitlab | 2.35 | root@963e760bd6b3:/# ldd --version ldd (Ubuntu GLIBC 2.35-0ubuntu3.5) 2.35 |
Jenkins | 2.36 | root@7fcd1a013aa4:/# ldd --version ldd (Debian GLIBC 2.36-9+deb12u3) 2.36 |
VsCode | 2.37 | root@f0a5b14e4336:/# ldd --version ldd (Ubuntu GLIBC 2.37-0ubuntu2.2) 2.37 |
- 解决方法
a. 更新测试机中GLIBC的版本(glibc是系统级别的库,全局更新,风险较大)
b. 按照测试机中的GLIBC版本重新编译文件(测试系统中存在过多环境版本,增加管理成本)
c. 交叉编译?
使用交叉编译适配不同架构测试环境
1 | root@DESK-01:/newFS/data/x86_64# tar -xvf gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu.tar.xz |
用户名密码管理
软件名称 | 访问地址 | 用户名 | 密码 | 备注 |
---|---|---|---|---|
Gitlab | http://192.168.2.136:19980/ | root | 1234qwer | |
Gitlab | http://192.168.2.136:19980/ | test01 | 1234qwer | 提交代码过程建议使用测试用户,非必要不使用root用户 |
Jenkins | http://192.168.2.105:18080/ | root | 1234qwer | |
VsCode | http://192.168.2.105:18000/ | —— | —— | |
Portainer | http://192.168.2.105:19000/ | admin | 1234qwer@qwea | |
Portainer | http://192.168.2.136:19000/ | admin | 1234qwer@qwea |
项目配置
Gitlab项目配置
用户管理
用户注册模板
项目仓库管理
管理员设置项目仓库用户权限
如果想要Gitlab项目中的用户具有代码拉取推送的权限,需要设置为Maintainer的权限
Jenkins项目配置
容器配置
1 | # 系统更新 |
Publish Over SSH
- 进入系统主页后,依次选择系统管理、插件管理
- 选择可用插件(Available plugins),搜索Publish Over SSH 点击安装
- 安装后可在已安装插件(Installed plugins)里查看到
配置SSH服务器
Docker Pipeline
- 参考上述插件安装过程,进入系统主页后,依次选择系统管理、插件管理,
选择可用插件(Available plugins),搜索Docker Pipeline点击安装 - 配置流水线语法
1 | pipeline { |
- 如果想使用docker镜像作为基础环境,需要系统具备docker环境,且安装了使用的镜像
- 上述过程中可能会出现,Jenkins用户和docker用户权限不足的问题,解决方法如下
1 | # Pipeline Console Outp |
自由风格软件项目Demo
- 选择自由风格创建项目,输入项目名,点击确定
- 选择General 进行配置
设置丢弃旧的构建,保持5天构建,最大构建7个(根据需要自行设置)
- 选择源码管理 添加仓库地址,第1次添加Git仓库地址可能出现如下错误
b. 配置Jenkins 选择具有Gitlab仓库权限的用户名密码,其他根据需要自行决定,添加完成后点击Credentials,选择成功添加的凭据、选择要构建的分支
c. 重新回到源码管理页面选择设置好的Credentials
- 根据需要配置构建触发器
- 根据需要配置构建环境
- 选择Build Steps,点击增加构建步骤,可根据需要选择执行shell或Send files or execute commands over SSH等。
a. 选择执行shell,在Jenkins中执行make命令,构建项目
b. 选择执行shell,在Jenkins中执行make命令,对编译后的结果文件增加执行权限
c. 选择 Send files or execute commands over SSH,将Jenkins编译好的需要的结果文件传输到远程服务器
- 选择构建后操作,点击增加构建后操作步骤,可根据需要选择Send build artifacts over SSH等。
a. 选择Send build artifacts over SSH,在远程服务器上执行命令,自动保存log
b. 预先配置好要执行的远程脚本如下,自动执行结果文件并保存到指定文件
流水线项目Demo
- 选择自由风格创建项目,输入项目名,点击确定
- 选择General 进行配置
设置丢弃旧的构建,保持5天构建,最大构建7个(根据需要自行设置)
- 根据需要配置构建触发器
- 根据需要配置高级项目选项
- 选择流水线,根据需要选择流水线语法进行配置
a. 从Gitlab拉取测试仓库,选择步骤,点击checkout: Check out from version control,输入Repository URL、Credentials、指定分支后点击生成流水线脚本
- 在Jenkins上执行make命令编译仓库内的文件
- 传输结果文件到远程服务器
- 在远程服务器执行命令,自动保存log
- 流水线项目Demo脚本
1 | pipeline { |
SSH Key(暂未确定SSH Key是否跟远程服务器上传有关)
Jenkines主机生成密钥
1 | # jenkines主机生成ssh密钥 |
Gitlab主机生成密钥
1 | root@DESK-02:~# ssh-keygen -t rsa -b 2048 |
VsCode 容器生成密钥
将客户端主机密钥添加到要连接的服务端主机上
1 | # 1. ubuntu 默认禁止root通过ssh登陆,需要先修改如下配置 |
1 | pipeline { |
Slave 节点管理
- Jenkins的任务可以分布在不同的节点上运行
- 节点上需要配置Java运行时化境,Java_Version > 1.5
- 节点支持WIndows,Linux, Max
- Jenkins运行的主机在逻辑上是master节点
添加节点
系统管理 》 节点管理
使用手册
测试流程管理
CI/CD流程
代码仓库管理
在Gitlab上依据3.3.2 安全车控操作系统测评能力要求中的测试分类新建不同的代码仓库,分别是协议符合性(ProtocolConformance)、功能(Function)、性能(Performance)、可靠性(Reliability)、专项测试(SpecialTest)、功能安全(FunctionalSafety)
以上所有仓库新建main、dev、test分支,除系统管理员外,所有人员只有往test分支提交或拉取代码的权限,禁止操作main分支和dev分支,系统管理员可以管理审核test分支上的代码确认无误后提交到dev分支,进行CICD操作,CICD验证无误后,可以将代码合并到main分支。
人员角色权限管理
- 系统管理员 代码审核,仓库管理
- 开发
- 测试
- 维护
- 标题: 自动化测试平台搭建
- 作者: Sunmy
- 创建于 : 2025-05-07 13:35:54
- 更新于 : 2025-06-29 21:05:24
- 链接: https://ldspdvsun.github.io/cmchvp8fm0006h0gbfoglcp7k/
- 版权声明: 版权所有 © Sunmy,禁止转载。