基于 jenkins 的持续测试方案

CI/CD

Continuous Integration;

Continuous Deployment;

  • 持续集成,将新代码和旧代码一起打包、构建;
  • 持续部署,将新构建的包进行部署;
  • 持续测试,将新代码、新单元测试一起测试;
  • 方案:
    • 公有云DevOps 平台,如gitlab runner,github action
      • 服务器在国外,速度慢
      • 使用YAML编写流程脚本
    • 自建CI/CD平台,如jenkins(java编写)/ BuildBot(python编写地址)
      • 可以执行任意的代码、搭建结果完全私有、开源的软件

持续测试

  1. 代码托管平台-gitee
    编写简单的python项目,并上传gitee仓库

app.py:

python 复制代码
# app.py
# __author__ = "laufing"

from fastapi import FastAPI # 异步web框架
import uvicorn # ASGI

app = FastAPI()


@app.get("/")
def index():
    return {
        "code": 200,
        "msg": "0k"
    }


# 数据模型、序列化
from pydantic import BaseModel


class UserData(BaseModel):
    name: str
    password: str
    phone: str


@app.post("/user/register") # post /user/register   {"name": "jack", "password": 123, "phone": 123}
def register(user: UserData) -> dict:
    print(user, type(user)) # UserData类型的对象
    return user # 将模型序列化为json


if __name__ == '__main__':
    uvicorn.run(app, host="localhost", port=8080, log_level="info")

test_app.py:

python 复制代码
# __author__ = "laufing"
import requests
import allure


HOST = "http://localhost:8080"


class TestApp:
    @allure.feature("index首页的功能模块")
    @allure.title("get_index") # 测试用例的名称
    def test_index(self):
        res = requests.get(HOST + "/")
        assert res.status_code == 200

    @allure.feature("注册的功能模块")
    @allure.title("user_register")
    @allure.severity(allure.severity_level.CRITICAL)
    def test_register(self):
        user = {
            "name": "jack",
            "password": 123,
            "phone": 123
        }
        res = requests.post(HOST + "/user/register", json=user)
        assert res.status_code == 200

将以上项目推送到gitee仓库。

  1. 在CentOS7中使用root用户启动jenkins,并在防火墙中开启对应端口。
bash 复制代码
# java11+  启动jenkins
java -jar jenkens.war --httpPort=8081 --httpListenAddress=0.0.0.0

# 防火墙开放端口
firewall-cmd --permanent --add-port=8081/tcp
firewall-cmd --reload
  1. 使用创建的admin账户登录jenkins,安装git 、allure 插件(Manage Plugins>Plugins>availablexx),并配置tool(需要在linux下安装git/allure);

    配置allure的安装家目录(bin的上级目录):

最后创建item;

  1. 配置创建的jenkins项目;

这里添加项目的描述、配置git仓库地址(需要在gitee代码托管平台配置启动jenkins的账户下.ssh的公钥)及分支、配置build steps执行的shell命令、build triggers poll SCM、post-build actions(构建后的动作,如测试报告、邮件通知等);

选择Poll SCM触发器,每两分钟轮询一次仓库,代码是否发生变化;若不设置轮询计划,则仅在仓库代码发生变化时,通过web hook 触发jenkins流水线;

这里是构建,执行shell的步骤,工作目录为~/.jenkins/workspace/my_py_test1/

配置构建后的动作,使用linux下安装的allure命令生成allure html报告;

  1. 手动执行构建(也可以提交代码到仓库自动触发构建)

流程总结

  • 本地开发代码
  • 提交到gitee仓库
  • jenkins监控代码变化(poll轮询、webhook钩子)
  • jenkins执行构建的命令
  • jenkins生成测试报告
  • 发送结果邮件通知
相关推荐
开发者联盟league8 小时前
使用jenkins pipeline将项目打包运行在k8s上报错kubectl: Permission denied
java·kubernetes·jenkins
江华森8 小时前
Jenkins 运维管理实战博客大纲
运维·jenkins
X1A0RAN8 小时前
解决jenkins(本机部署或容器部署)安全机制【CSP】问题
jenkins·allure报告
烧饼Fighting8 小时前
Jenkins自动化编译部署Spring Boot项目
spring boot·自动化·jenkins
serve the people9 小时前
Elasticsearch(3) show me some examples
大数据·elasticsearch·jenkins
牛奶咖啡139 小时前
CI/CD——通过Jenkins插件实现与K8s集成并部署应用到k8s集群的实践保姆级教程
ci/cd·kubernetes·jenkins·jenkins安装k8s插件·jenkins对k8s配置凭据·jenkins配置pod模板·编写流水线脚本部署应用到k8s
serve the people9 小时前
Elasticsearch(4) show me some more advanced content
大数据·elasticsearch·jenkins
兄台の请冷静21 小时前
Linux 安装es
linux·elasticsearch·jenkins
江华森1 天前
Jenkins CI/CD 实战博客教程
servlet·ci/cd·jenkins
云原生指北1 天前
告别 Jenkins UI:jk 让 AI Agent 也能操控 Jenkins
jenkins·devops