文章目录
- 写在前面
- 一、准备工作
- 1.1 注册GitLink账号
- 1.2 托管项目
- 1.3 新建项目管理引擎流水线
- 二、开始构建流水线
- 2.1 进入图形流水线编辑页
- 2.2 添加git clone节点
- 2.3 添加shell节点
- 2.4 添加allure html节点
- 2.5 添加新建GitLink疑修节点
- 2.6 添加钉钉通知节点
- 2.7 设置任务触发器
- 2.7.1 第一类触发器cron
- 2.7.2 第二类触发器GitLink
- 三、流水线示例
写在前面
想要运行自动化测试,但是对于服务器知识了解过少,不足以支撑构建自动化测试项目怎么办?
想要运行自动化测试,但是没有可以服务器怎么办?
GitLink引擎来帮你解决这些问题!
今天给大家推荐一款好用的CI/CD工具:GitLink引擎,可以轻松实现一键构建自动化测试项目,让你的自动化测试运行无忧!
一、准备工作
1.1 注册GitLink账号
要使用GitLink引擎,我们需要注册一个GitLink账号,注册地址:https://gitlink.org.cn/register
1.2 托管项目
首先,我们需要准备一个自动化测试项目,将自动化测试项目上传到GitLink或者Gitee或者Github上进行托管。
建议使用GitLink进行托管哦~
1.3 新建项目管理引擎流水线
GitLink账号新建成功后,我们可以在GitLink新建一个项目,用来管理我们的流水线。
注意:假如是在GitLink托管自动化测试项目,如果需要直接使用该项目的引擎,需要将流水线保存在其他分支中,因为流水线的保存会更新代码库文件,以免影响自动化测试代码;
新建项目地址:https://www.gitlink.org.cn/projects/deposit/new (登录后可正常访问)
二、开始构建流水线
2.1 进入图形流水线编辑页
-
进入项目详情页,点击“引擎”,进入引擎页面,点击“图形流水线”
-
选择流水线代码保存的分支(一般默认master分支)后,添加所需要的节点。
注意:必须有开始和结束节点。
2.2 添加git clone节点
需要注意如下几个参数:
- 用户名: 访问自动化测试私有仓库的用户名,仓库是公开的可以不填
- 密码: 访问自动化测试私有仓库的用密码,仓库是公开的可以不填
- git地址:自动化测试项目的git地址
- 标签、分支或pr/mr:自动化测试项目的所在分支,一般都是默认master
2.3 添加shell节点
需要注意几个参数:
-
docker镜像
可以手动输入所需的镜像,我这里用过2个镜像:- mcr.microsoft.com/playwright/python:v1.38.0-focal:有playwright环境
- python:3.9-slim-buster:python 3.9环境
-
环境变量
我们需要将git clone节点,clone下来的自动化测试项目路径,保存为环境变量,参考如下:
-
脚本
这里需要输入运行自动化测试项目的命令。
可以参考我输入的命令:
# 这里是因为我当前使用的镜像没有安装jdk,所以我手动安装了一下
apt update
apt install -y openjdk-8-jdk-headless
# 由于我是自动化测试项目保存了allure的代码,需要给allure执行文件赋予执行权限。
cd $PROJECT/lib/allure-2.22.0/bin
chmod +x allure
# 切换当前目录到自动化测试项目所在目录
cd $PROJECT
# 我是使用pipenv管理依赖环境,所以需要安装pipenv
pip install pipenv
# 使用pipenv安装项目所需依赖,正常命令是pipenv install; 由于镜像使用的3.8,我使用的3.9,因此我需要使用如下命令
pipenv install --python 3.8 --skip-lock
# 在虚拟环境中安装playwright浏览器驱动
pipenv run playwright install
# 在虚拟环境中运行测试
pipenv run python run.py
假如你的自动化测试代码,没有封装单独的run.py
文件,是通过pytest去运行测试的,那么命令参考如下:
# 一键安装项目所需依赖,项目所需依赖都保存在requirements.txt中
# 或者也可以pip单独一个个安装依赖包
pip install requirements.txt -r
pytest --alluredir=allure-results
2.4 添加allure html节点
注意:如果你的自动化测试代码运行完成后,已经生成了allure html测试报告,可以跳过这个节点;
注意:这里“allure-results路径”需要输入自动化测试项目生成的allure results测试结果集的目录。git clone节点会返回自动化测试项目的根路径,我们只需要拼接具体的allure-results所在路径即可。例如:git_clone_0.git_path + "/outputs/report/allure_results"
。
这个节点会自动调用allure生成allure html测试报告,并将报告压缩成.zip文件,返回.zip文件路径(.zip文件中含有一个.bat文件,在windows环境下,可以不安装allure,直接双击打开查看报告)。
2.5 添加新建GitLink疑修节点
这里,我需要该节点的作用在于,将allure html报告的压缩包上传到仓库的疑修,获取疑修的链接,作为测试运行结果发送到钉钉。
因为钉钉机器人不能直接发送压缩包文件,所以曲线救国,发送疑修链接,如果需要查看测试报告,可以点击疑修链接后,下载测试报告查看。
该节点有以下参数:
- GitLink平台域名:一般为:
https://gitlink.org.cn/
; - GitLink仓库拥有者标识/仓库标识:可以在GitLink访问某个需要新增疑修的项目>代码库页面,参考格式:
floraachy/gitlink_test
; - GitLink平台账号:登录GitLink平台的账号,需要通过密钥管理进行管理,防止暴露;
- GitLink平台密码:登录GitLink平台的密码,需要通过密钥管理进行管理,防止暴露;
- 疑修指派负责人id: Gitlink项目成员的user_id, 不需要指派的情况下可以留空:
"[]"
; - 疑修(Issue)标题:疑修的标题,例如:allure html报告生成啦!/ 自动化测试完成了!可自定义;
- 疑修(Issue)内容:疑修内容,可自定义;
- 疑修(Issue)附件:这里可以上传allure html报告的压缩包,点击右侧参数>allure_html报告生成>allure-report压缩的zip包路径即可,一般情况下是这样的格式:
allure_html_report_0.allure_report_path
(不需要引号);
2.6 添加钉钉通知节点
前提:首先我们需要在钉钉上配置一个钉钉机器人, 获取钉钉机器人的webhook地址,具体配置参考:使用钉钉机器人发送消息至钉钉
我这里添加的钉钉节点,是发送markdown格式的钉钉消息。
需要注意几个参数:
- 展示内容:收到钉钉消息,首屏会话会透出的内容;
- markdown消息内容:消息的具体内容,markdown格式;
- 提醒列表:需要艾特的用户id或者手机号;
- 是否艾特所有人;
最后,我们添加一个结束节点,整个流程就串起来了。
2.7 设置任务触发器
我们知道jenkins里面也是有触发器的,可以设置每周或者每天什么时间点,自动运行流水线。
或者检测到当前代码仓库有指定事件就自动触发流水线运行。
GitLink引擎也有这个功能, 提供了2类触发器:cron, GitLink。
注意:任务触发器需要添加在开始节点之前。
2.7.1 第一类触发器cron
这个添加完成后,看具体的说明就可以了,挺简单的。
2.7.2 第二类触发器GitLink
这个触发器是检测当前仓库是否有这三类事件触发:推送代码/合并请求/创建标签,一旦这3类事件发生,就会自动触发流水线的运行。
三、流水线示例
注意:我这个流水线跟上述讲解的有细微差别。因为有些我是已经在自动化测试代码里面实现了,所以对应节点我就忽略了。
代码流水线参考:
version: 2
name: UI_playwright_图形流水线
description: ""
global:
concurrent: 1
cache: path
trigger:
type: cron
schedule: 0 0 1 ? * FRI
workflow:
- ref: git_clone_0
name: git clone
task: git_clone@1.2.9
input:
remote_url: '"https://gitlink.org.cn/floraachy/uiautotest_playwright.git"'
ref: '"refs/heads/master"'
commit_id: '""'
depth: 1
needs:
- start
- ref: shell_0
name: shell
image: mcr.microsoft.com/playwright/python:v1.38.0-focal
env:
PROJECT: git_clone_0.git_path
script:
- apt update
- apt install -y openjdk-8-jdk-headless
- apt install -y unzip
- cd $PROJECT/lib/allure-2.22.0/bin
- chmod +x allure
- ls -l
- cd $PROJECT
- pip install pipenv
- pipenv install --python 3.8 --skip-lock
- pipenv run playwright install
- pipenv run python run.py
needs:
- git_clone_0
- ref: end
name: 结束
task: end
needs:
- dingtalk_notice_markdown_0
- ref: start
name: 开始
task: start
- ref: dingtalk_notice_markdown_0
name: 钉钉通知-markdown
task: dingtalk_notice_markdown@1.0.2
input:
boot_webhook_url: ((dingbot.webhook_url))
secret: ((dingbot.secret))
msg_title: '"UI自动化测试已完成!"'
msg_text: extract_txt_0.result + "\n复制链接打开查看详细测试报告:" +
new_gitlink_issue_0.issue_link
at_user_ids: '"[]"'
at_mobiles: '"[]"'
needs:
- new_gitlink_issue_0
- ref: extract_txt_0
name: 文本内容提取
task: floraachy/extract_txt@2.0
input:
file: git_clone_0.git_path + "/outputs/report/test_result.txt"
needs:
- shell_0
- ref: new_gitlink_issue_0
name: 新建GitLink疑修Issue
task: floraachy/new_gitlink_issue@1.0.1
input:
host: '"https://gitlink.org.cn"'
project_url: '"floraachy/uiautotest_playwright"'
username: ((gitlink.username))
password: ((gitlink.password))
issue_assign: '"[87611]"'
issue_title: '"UI自动化测试报告"'
issue_content: '""'
issue_attach: git_clone_0.git_path + "/outputs/report/autotest_report.zip"
needs:
- extract_txt_0