已使用bitnami搭建gitlab服务器,现在想要搭建自动化测试,百度查询发现需要另外搭建gitlab-runner,以下是搭建与配置自动化测试过程:
一、下载并安装gitlab-runner:
查看gitlab版本为16.4.1:
下载对应的gitlab-runner安装包:
Index of /gitlab-runner/yum/el7-x86_64/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
我用的是centos7.9系统,所以下载的是rpm包。
安装gitlab-runner的详细教程参考:
实战:GitLabRunner安装部署-2023.4.26(安装成功) - 知乎 (zhihu.com)
问题:
1、tls: failed to verify certificate: x509: cannot validate certificate for 192.168.xx.xx because it doesn't contain any IP SANs
这个报错是由于gitlab的证书的CN值与本机IP地址不匹配,需要重新生成证书:
首先创建一个配置文件san.conf:
[req]
distinguished_name = req_distinguished_name
req_extensions = v3_req
[req_distinguished_name]
countryName = Country Name (2 letter code)
countryName_default = CN
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = SD
localityName = Locality Name (eg, city)
localityName_default = JN
organizationName = Organization Name (eg, company)
organizationName_default = HG
commonName = Common Name (e.g. server FQDN or YOUR name)
commonName_default = 192.168.xx.xx
[v3_req]
# Extensions to add to a certificate request
subjectAltName = @alt_names
[alt_names]
DNS.1 = example.com
DNS.2 = www.example.com
DNS.3 = mail.example.com
IP.1 = 192.168.xx.xx
使用上述配置文件用openssl生成证书:
sudo openssl req -x509 -nodes -newkey rsa:2048 -keyout /etc/gitlab/ssl/server.key -out /etc/gitlab/ssl/server.crt -days 3650 -config san.conf -extensions v3_req
我这里生成的是自签名证书,更标准的做法是先生成根证书,再用根证书签发gitlab证书。
将上面生成的证书拷贝到gitlab配置目录/etc/gitlab/ssl/下(注意先备份原证书),重启gitlab服务:
gitlab-ctl restart
2、tls: failed to verify certificate: x509: certificate signed by unknown authority
centos7(gitlab-runner服务器)执行命令sudo gitlab-runner run报上面的错,这是因为系统不信任gitlab的证书,需要把他添加为系统信任的证书:
可以使用下面的命令获取到gitlab证书,也可以直接从gitlab服务器上拷贝出来:
openssl s_client -showcerts -connect 192.168.9.69:443 < /dev/null | \
> openssl x509 -outform PEM > gitlab.crt
Can't use SSL_get_servername
depth=0 C = CN, ST = SD, L = JN, O = HG, CN = 192.168.9.69
verify error:num=18:self signed certificate
verify return:1
depth=0 C = CN, ST = SD, L = JN, O = HG, CN = 192.168.9.69
verify return:1
DONE
然后放到centos7目录/etc/pki/ca-trust/source/anchors/下,然后执行:
sudo update-ca-trust extract
二、创建project runner
登录gitlab,按照如下步骤创建runner:
这么配置:
生成:
在centos7(gitlab-runner)上执行命令:
sudo gitlab-runner register
这一步会要求你提供url和token,将上面的url和token填入:
新的runner已创建成功,详细配置见配置文件/etc/gitlab-runner/config.toml:
三、配置.gitlab-ci.yml
在git工程的根目录下创建文件.gitlab-ci.yml,并作为git项目的普通文件提交到gitlab仓库,文件内容:
stages:
- build
build-job:
stage: build
script:
- ./configure CFLAGS="-O2" --prefix=`pwd`/install
- make -j16 && make install && cd contrib/ && make -j16 && make install && cd ../
- make check-world
提交.gitlab-ci.yml后,gitlab服务器的pipeline自动寻找gitlab-runner按照yml文件执行自动测试,可能会出现自动测试一直在等待开始的情况,这时可以手动执行命令启动gitlab-runner:
gitlab-runner run
或者在文件/etc/gitlab-runner/config.toml的[[runners]]中新增条目使之主动接收job并执行
按照上述配置配置完成即可正常进行自动化测试,如有疑问或错误请联系我。
不懂就问AI:通义官网 (aliyun.com)
补充:
1、非root用户执行自动化测试:
我测试的是postgresql数据库,因为这个数据库不能在root用户下启动,当执行回归测试的时候因为检测到是root用户而不能启动数据库导致回归测试失败,所以需要设置以其他非root用户执行自动化测试:
1)按照上述第二步创建project runner重新创建一个runner,这一步在执行gitlab-runner register是需要在非root用户下执行,不能加sudo;
2)创建好runner后,打开配置文件vim ~/.gitlab-runner/config.toml(注意这个配置文件在当前用户目录),在runner里添加该用户有读写权限的路径:
3)最后重启gitlab-runner,然后在上述非root用户下执行gitlab-runner run就可以了