Skip to main content

· 9 分钟阅读

Choerodon 猪齿鱼作为全场景效能平台,是基于Kubernetes,Istio,knative,Gitlab,Spring Cloud来实现本地和云端环境的集成,实现企业多云/混合云应用环境的一致性。平台通过提供精益敏捷、持续交付、容器环境、微服务、DevOps等能力来帮助组织团队来完成软件的生命周期管理,从而更快、更频繁地交付更稳定的软件。

2021年04月15日,Choerodon猪齿鱼发布0.25版本,本次更新敏捷中的问题项新增跨项目移动、上传并预览UI/UX文件等功能,组织层新增状态机模板及看板模板功能;流水线中CI阶段新增镜像安全扫描任务等功能及图表;测试中支持导出测试报表等功能;其它功能模块也都进行了不同程度的新增、修改和优化,欢迎各位更新体验。

  • 发布版本:0.25
  • 发布时间:2021年04月15日
  • 更新范围:敏捷协作、代码开发、环境部署、测试管理、制品库、基础功能

下面就为大家带来详细的模块介绍。

敏捷协作

新增功能

  • 所有问题增加列表视图;
  • 问题项详情支持上传并预览UI/UX文件;

  • 问题项支持评论及回复;
  • 问题项支持跨项目移动;

  • 项目报告支持项目质量图表;
  • 支持自定义问题类型;

  • 支持启停用问题类型;
  • 系统预定义字段支持维护默认值;
  • 页面配置的自定义字段控件增加人员多选控件;
  • 支持导入页面字段配置;
  • 模块支持自定义顺序;
  • 状态机支持状态自定义顺序;
  • 组织层增加状态机模板和看板模板;

  • 工作台增加我经手的、我报告的;
  • 项目概览增加项目动态;
  • 导入导出问题支持保存常用模板;
  • 支持问题延期通知;
  • 支持冲刺延期通知;
  • 敏捷问题支持移除关联分支的功能;

功能优化

  • 优化富文本编辑器:支持插入表格;

  • 上传附件支持分片上传;
  • 所有问题按状态筛选优化可按问题类型级联;
  • 优化导入导出按钮位置;
  • 迭代计划工作台模式融入项目概览;
  • 优化查找用户支持按用户名拼音搜索;
  • 优化创建问题项时切换问题类型,概要、描述清空的问题;

缺陷修复

  • 修复导出、发送项目报告因内容过长造成显示不全的问题;
  • 修复看板兼容Safari浏览器问题;
  • 修复待办事项快捷拖动issue数据不一致的问题;
  • 修复状态机初始状态设置自定义流转不生效的问题;
  • 修复导入问题自定义问题类型导入失败的问题;
  • 修复问题详情开发标签页存在两个more-vert按钮;

代码开发

新增功能

  • 应用流水线-CI阶段-构建任务中,新增支持镜像安全扫描的功能;

  • 流水线构建结果支持本地下载;
  • 流水线构建日志支持本地下载;
  • DevOps报表中新增流水线触发次数图与流水线执行时长图;

环境部署

新增功能

  • PV管理中创建PV时新增支持添加Label的功能;

功能优化

  • 部署人员变更实例时,默认不再调整其中Pod数量,仅可通过资源-运行详情界面中的Pod控制器调整其数量;

测试管理

新增功能

  • 测试用例增加自定义编号;

  • 测试计划支持批量删除用例;
  • 测试报表支持导出PDF;
  • 工作台增加待我执行的用例;

功能优化

  • 优化测试计划批量指派;
  • 优化测试计划选择用例形式;

缺陷修复

  • 修复测试计划中创建缺陷时关联问题选择框错位的问题;
  • 修复测试计划中创建缺陷时经办人显示乱码的问题;

制品库

新增功能

  • 制品库-Docker仓库中新增镜像安全扫描的功能,支持显示出扫描后的结果详情;

缺陷修复

  • 修复了制品界面上传jar包较大时,接口超时的问题;

基础功能

新增功能

  • 组织层与项目层-导入用户,支持通过Excel批量导入自定义的角色;
  • 创建项目支持选择多个项目类型,且支持修改已有项目的项目类型;
  • 工作台中加上个人代码提交的记录展示;
  • 自定义工作台与项目概览支持一键重置为默认的;
  • 项目设置-通用中支持修改项目类型;

缺陷修复

  • 修复了项目列表-最近使用栏,未将应用服务按照使用的时间进行倒序排序的问题;
  • 修复了组织层角色查询,自定义角色和预定义角色查询混淆的问题;

社区参与

感谢以下朋友在社区论坛中提出反馈和意见,在0.25版本更新中作出贡献,感谢大家一直以来的支持。

@kychen

@MyHarper01

@Rmond

更加详细的内容,请参阅Release Notes和官网用户手册。

安装文档:http://choerodon.io/zh/docs/installation-configuration/steps/

升级文档:https://choerodon.io/zh/docs/installation-configuration/update/0.24-to-0.25/

欢迎各位朋友通过Choerodon的GitHub和猪齿鱼社区进行反馈与贡献,帮助Choerodon猪齿鱼不断成长。Choerodon会持续优化,敬请期待。

-▼-

Choerodon猪齿鱼商业版0.25也做了同步更新,可通过汉得开放平台了解功能详情;

汉得开放平台https://open.hand-china.com/market-home/detail/=R9X1123B5UbNWDY_CL_8tg===?from=myProduct

-▼-

大家也可以通过以下社区途径了解猪齿鱼的最新动态、产品特性,以及参与社区贡献:

Choerodon猪齿鱼官方社区用户交流群,此群可交流猪齿鱼使用心得、Docker、微服务、K8S、敏捷管理等相关理论实践心得,群同步更新版本更新等信息,大家可以加群讨论交流。

①-Choerodon猪齿鱼官方交流(已满);

②-Choerodon猪齿鱼官方交流(可加);【微信号发至客服邮箱[email protected],运营同事拉您入官方交流群】

欢迎加入Choerodon猪齿鱼社区,共同为企业数字化服务打造一个开放的生态平台。

· 7 分钟阅读

居中

最常用的height + line-height,以及margin:0 auto的居中方式就不再阐述,以下介绍两种容错性高的实现方案。

  1. flex布局实现

​ 猪齿鱼前端日常开发中,我们多以flex布局进行居中,父元素display:flex并且设置align-items:center或者 justify-content: center;实现水平或者垂直的居中方式,取决于 flex-direction也就是flex布局的布局方向。类似如下布局的居中形式。

实现代码如下(举例)

<body>
<style>
.container {
height: 300px;
background: aqua;
display: flex;
align-items: center;
}

img {
max-width: 300px;
}
</style>

<div class="container">
<span>12111111111111111111111111111111111111111111111111eeeeeeeeeeee1111111dwaedwqqqqqqqqqqqqqqqqq</span>
<img src="https://www.baidu.com/img/bd_logo1.png" />
</div>

</body>

2. 绝对定位相对定位居中

在需要实现居中的元素确定宽高的情况下。平台内实现垂直水平居中效果的如下

外层容器高度继承,内部的loading圆圈定高宽,之后通过绝对定位 + margin的方式实现居中;

基础实现代码如下:

<body>
<style>
.father {
width: 400px;
height: 200px;
position: relative;
border: 1px solid #000;
}

.son {
width: 200px;
height: 100px;
background: red;
position: absolute;
left: 0;
top: 0;
bottom: 0;
right: 0;
margin: auto;
}
</style>

<div class="father">
<div class="son">
position:absolute;<br /> left:0; top:0;<br /> right:0; bottom:0; <br />margin:auto
</div>
</div>
</body>

常用布局实现

常用的布局实现就属flex以及grid布局,平台中也多处使用到了,主要是分情况进行取舍。

情况1

卡片元素宽度fit-content,宽度随外层容器平分(此处5等分),每个卡片直接需要有margin进行隔离,这里毋庸置疑使用grid布局;倘若使用flex布局,还需手动设置各个卡片margin属性,以及卡片的百分比宽度,grid布局直接通过设置grid-template-columns以及gridGap实现等分和间隙效果。

如下:

情况2

左边有菜单栏为定宽,右边的内容自适应,这样的情况采用flex布局。右边的主要内容设 flex:1(1 1 0)就能够实现自适应,flex:1的分解就相当于 flex-grow:1, flex-shrink:1, flex-basic:0。

当然如果只是单纯为了得出右侧的宽度从而占满全屏可以使用calc(100% - 菜单宽度);但是如果涉及到那种菜单能够进行折叠和伸缩的,使用flex布局是最好的。

文本溢出处理方案

平台多处地方需要进行文本的溢出省略处理

前者是单行溢出,后者是多行溢出省略

1、单行文本溢出

   white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;

2、多行文本溢出

   overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 4;
-webkit-box-orient: vertical;

因使用了WebKit的CSS扩展属性,该方法适用于WebKit浏览器及移动端;

1. -webkit-line-clamp用来限制在一个块元素显示的文本的行数。 为了实现该效果,它需要组合其他的WebKit属性。
2. display: -webkit-box; 必须结合的属性 ,将对象作为弹性伸缩盒子模型显示 。
3. -webkit-box-orient 必须结合的属性 ,设置或检索伸缩盒对象的子元素的排列方式 。

其他样式实现

1. 流程引线

如图,倘若需要实现类型如下的流程线,平台多处使用到了css类选择器中::before以及::after的伪类元素或者重新定义新标签,使其相对于卡片绝对定位,通过对特定的卡片进行伪类的追加或者标签的渲染,实现流程引线的显示 具体如下图:

2. 三角行箭头实现

使用border的均分原理去实现三角形

<style>
div {
width: 0;
height: 0;
border-top: 10px solid green;
border-bottom: 10px solid transparent;
border-left: 10px solid transparent;
border-right: 10px solid transparent;
}
</style>
<div/>

3. 下拉展示框的动画效果

如图所示,实现效果。

鼠标hover上去会展示一个下拉面板,按照简单的逻辑实现,只需要控制它的display就能控制显隐,但是这样就很突兀,做不出如图的缓慢展示带有一点动画的效果。

具体的实现就需要涉及到css3的动画。

  • 元素的显隐可以通过状态管理来控制;

    这里通过useState去控制className;

  const [isHovered, setHovered] = useState(false);

const menuLists = (
<div
className={`${prefixCls}-sliderMune ${isHovered ? `${prefixCls}-sliderMune-hover` : ''}`}
>
{
map(moreAppMenuDs.toData(), ({ id, name }:any) => (
<div key={id}>
<span>
{name}
</span>
</div>
))
}
</div>
);
  • 绑定hover事件(当然这一步怎么绑定都行,不是重点);
  function showDom() {
setHovered(true);
}

function hideDom() {
setHovered(false);
}
  • css;
  @keyframes dropdownMenu {
0% {
transform: translateY(-10%);
opacity: 0;
}
100% {
transform: translateY(0);
opacity: 1;
}
}

.@{prefixCls} {
&-sliderMune {
position: absolute;
top: 100%;
left: 0;
z-index: 999;
color: black;
background: #fff;
opacity: 1;
max-width: 480px;
box-shadow: 0 2px 8px 0 rgba(15, 19, 88, 0.12);
padding: 20px;
display: none;
flex-flow: wrap;

> div {
......
}

&-hover {
display: flex;
animation: 0.3s ease-in-out dropdownMenu;
}
}
}

总结

有一种缓慢的位移效果,以及有一个渐变的显示过程,都是需要在动画帧中加入css的控制,重点就是动画的控制,位移使用transform,透明度就用opacity控制就OK。

· 13 分钟阅读

UI 测试是一种测试类型,也称为用户界面测试,通过该测试,我们检查应用程序的界面是否工作正常或是否存在任何妨碍用户行为且不符合书面规格的 BUG。了解用户将如何在用户和网站之间进行交互以执行 UI 测试至关重要,通过执行 UI 测试,测试人员将尝试模仿用户的行为,以查看用户将如何与程序进行交互,并查看网站的运行情况是否如预期的那样,是否有缺陷。

在上次的自动化测试系列(二)中为大家大体介绍了API测试的概念及在猪齿鱼中的实践展开,本文主要围绕UI测试进行概念介绍及Choerodon中的实践展开。

下面为大家详细介绍猪齿鱼提供的UI测试功能:

什么是 UI 测试

UI 测试涵盖了用户交互部分,包括用户关注的网站结构和视觉部分。Web 网站包含许多来自 CSS,JavaScript 和许多其他语言的不同 Web 元素,网站元素可以连接到屏幕、键盘、鼠标或用户用于与网站进行交互的任何其他工具,UI 测试则捕获这些元素并对其进行测试和声明。

在执行 UI 测试时,需要注意确保应用程序不存在任何跨浏览器兼容性问题。由于每个浏览器都使用不同的浏览器引擎,并且可能不支持相同的 CSS 功能。因此,确保UI 在所有主要浏览器上无缝呈现非常重要。在不同的浏览器上进行测试称为跨浏览器测试,可以帮助测试人员在所有主要浏览器和设备(包括手机,平板电脑等)的多种组合下测试其网站。

手动或自动,如何选择?

与其他任何类型的测试一样,UI 测试也可以手动或通过自动化执行。手动测试要求测试人员在每个元素上手动执行每个测试。例如,测试输入字段将需要针对任何差异一次又一次地键入不同的值。如果网站 UI 的组件较少​​,则最好通过手动过程进行 UI 测试,快速地完成。但它不适合复杂的网站,用户界面丰富的网站使手动 UI 测试则非常低效,费时且容易出错。

适合UI自动化测试的场景

不是所有的测试场景都适合用自动化测试来实现,对此,可以参考以下的标准辅助判断:

  • 项目的需求不会频繁变动
  • 页面的 UI 已经进入稳定阶段
  • 项目周期足够长
  • 大量回归的测试任务

其中,有些项目是明显不适合使用 UI 自动化测试的,例如视频播放器,音乐播放器等交动性强,并发依赖强的软件。

UI自动化测试的优点

UI自动化测试过程简化了创建UI测试、运行测试以及查看结果的过程,开发和测试团队选择自动化UI测试的原因有很多,最值得注意的包括:

  • 时间 – 手动测试速度很慢,无法与许多开发过程保持同步。
  • 成本 – 手动测试需要大量资源且成本很高。
  • 准确性 – 执行重复性任务时,手动测试容易出现更多错误。相反,自动化减少了这些错误的机会。
  • 规模化 – 执行复杂的迭代时,很难依靠手动测试。
  • 趋势 – 大多数组织已经意识到如何从自动化测试中受益,因此,跳上自动化潮流的压力越来越大。

UI自动化测试设计原则

  • 一个测试用例完成一个功能点测试(常用):一个手工用例对应一个自动化测试用例;
  • 一个脚本是一个完整的场景;
  • 脚本之间独立,不能有依赖(脚本间相互隔离):例如与登陆状态相关的用例:个人中心、订单详情、下单购物等,如果脚本之间不独立,相互依赖,在登陆的测试脚本失败的情况下,会导致个人中心、订单详情、下单购物的测试脚本全军覆灭,后续修复与维护成本高;
  • 设置合适的检查点:通过断言判断用例的成功与否;
  • 设计良好的框架:Python 常用的测试框架有 unittest 与 pytest,利用框架,及对共用的测试模块进行封装,减少自动化测试脚本维护的工作量;

WEB端UI测试工具介绍

API测试用例主要由4个部分组成,分别是:用例的基础信息、前置步骤、请求脚本以及断言。

UTF

UTF( Unified Functional Testing) = QTP( Quick Test Pro) + ST( Service Test)由 HP 公司开发。它是一种企业级的自动测试工具,提供了强大易用的录制回放功能,同时兼容对象识别模式与图像识别模式两种识别方式,支持 B/S 与 C/S 两种架构的软件测试,是目前主流的自动化测试工具。主要是用于回归测试和同一软件的新版本测试。

Robot Framework

是一款基于 Python 语言编写的自动化测试框架,具备良好的可扩展性,支持关键字驱动,可以同时测试多种类型的客户端或者接口,可以进行分布式测试。

Selenium

Selenium概要

Selenium 也是一个用于 Web 应用程序测试的工具,支持多平台、多浏览器、多语言去实现自动化测试,目前在 Web 自动化领域应用最为广泛。

Selenium 是最广泛使用的开源 Web UI(用户界面)自动化测试套件之一,最初由杰森·哈金斯(Jason Huggins)于 2004 年开发,作为 Thought Works 的内部工具。Selenium 支持跨不同浏览器,平台和编程语言的自动化。

Selenium功能特性

  • Selenium 是一个开源和可移植的 Web 测试框架。
  • Selenium IDE 为创作测试提供了回放和录制功能,而无需学习测试脚本语言。
  • 它可以被视为领先的基于云的测试平台,可帮助测试人员记录他们的操作并将其导出为可重复使用的脚本,并具有易于理解且易于使用的界面。
  • Selenium 支持各种操作系统,浏览器和编程语言。如下列表:
    • 编程语言: C# ,Java,Python,PHP,Ruby,Perl 和 JavaScript
    • 操作系统:Android,iOS,Windows,Linux,Mac,Solaris。
    • 浏览器:谷歌浏览器,Mozilla Firefox,Internet Explorer,Edge,Opera,Safari 等。
  • 它还支持并行测试执行,从而减少了时间并提高了测试效率。
  • Selenium 可以与 Ant 和 Maven 等框架集成,用于源代码编译。
  • Selenium 还可以与 TestNG 等测试框架集成,以进行应用程序测试和生成报告。
  • 与其他自动化测试工具相比,Selenium 需要的资源更少。
  • WebDriver API 已经尝试集于 Selenium 中,这是对 Selenium 进行的最重要的修改之一。
  • Selenium Web 驱动程序不需要服务器安装,测试脚本直接与浏览器交互。
  • Selenium 命令根据不同的类进行分类,使其更易于理解和实现。
  • Selenium Remote Control(RC)与 WebDriver API 一起被称为 Selenium 2.0。此版本旨在支持充满活力的网页和 Ajax。

Selenium三大优点

  • 速度:时间是每家公司的主要资源,自动化测试可以节省很多时间。Selenium Automation 测试要求我们只编写一次测试,然后一次又一次地运行它们,而不会以不同的值和不同的方案进行任何干预。
  • 准确性:只要测试编写正确,Selenium Automation 测试就可以帮助我们正确执行测试。手动测试的主要缺点是容易发生人为错误。
  • 透明度:Selenium Automation 测试还有助于快速生成报告,并在测试完成后立即与团队共享。另一方面,手动测试需要时间来提取结果并手动报告结果以通过软件或手动生成报告。

Choerodon UI测试

安装

若在Choerodon 中使用 UI 测试,需要先安装Selenium IDE 。

Selenium IDE(集成开发环境)是 Selenium Suite 下的开源 Web 自动化测试工具。与 Selenium WebDriver 和 RC 不同,它不需要任何编程逻辑来编写其测试脚本,而只需记录与浏览器的交互以创建测试用例。之后,可以使用播放选项重新运行测试用例。 注意:Selenium IDE 仅作为 Firefox 和 Chrome 插件提供,它无法在 Firefox 和 Chrome 以外的浏览器上记录测试用例。记录的测试脚本也可以导出到 C#,Java,Ruby 或 Python 等编程语言。

Firefox 浏览器

Chrome 浏览器

使用

在 Chrome 浏览器上使用 Selenium IDE 录制与回放脚本

1、打开 IDE,初始化界面如图:

2、创建并开始录制,输入录制的 web 地址

3、录制完成,右击测试用例,保存或导出。Selenium IDE 保存的都是.side 的单文件

Choerodon 中的 UI 测试是通过 Selenium IDE 中录制生成的 side 文件导入系统中,在 UI 测试界面中生成对应的测试用例与步骤;而后便能直接执行对应的测试文件来对界面 UI 操作进行测试,可以直观的看到生成的测试报告。

总结

UI测试是软件测试周期的重要组成部分,是改善用户体验和客户满意度的重要驱动力,大多数最终用户更关心他们实际看到和触摸的内容。因此,这也是为什么UI或用户界面变得如此重要,从而进行UI测试的原因。

· 5 分钟阅读

关于Choerodon猪齿鱼

Choerodon猪齿鱼全场景效能平台,是基于Kubernetes,Istio,knative,Gitlab,Spring Cloud来实现本地和云端环境的集成,实现企业多云/混合云应用环境的一致性。平台通过提供精益敏捷、持续交付、容器环境、微服务、DevOps等能力来帮助组织团队来完成软件的生命周期管理,从而更快、更频繁地交付更稳定的软件。 Choerodon猪齿鱼主要特性

  • 协作

提供工作列表、故事地图、知识管理等协作工具,是贯穿开发、测试、部署的价值链,促进团队成员沟通交流,降低项目管理成本,提高沟通协作效率。

  • 开发 以DevOps理念为指引,结合精益看板和Gitlab的分支管理,提供持续集成的流水线,缩短应用服务开发周期,同时提高团队效率,高效频繁向测试团队或者用户交付软件新版本。

  • 测试

测试管理为用户提供敏捷化的持续测试工具,包括测试用例管理、测试循环、测试分析等,可以有效地提高软件测试的效率和质量,提高测试的灵活性和可视化水平,最终减少测试时间,让用户将主要精力放到软件功能构建上。

  • 部署

用户可以方便地使用部署功能管理各种使用Choerodon开发部署的应用服务,包括应用启停、状态监控,以及应用服务对应的版本控制、容器管理等,同时还包括应用服务涉及到的各种资源管理,例如网络、域名、数据库服务、缓存服务等。

  • 运营

运营中包含了辅助项目进行管理的各种报表,包括敏捷报表、DevOps报表、测试报表,可视化项目进程细节,多维度直观地记录和展示项目,方便用户做出调整。

  • 基础

最主要对所属项目的代码库进行权限维护、日志监控、安全审计等管理,并对制品库(maven、npm、docker)进行制品管理,例如创建、权限维护、包列表引入、docker镜像管理、日志监控等。

  • 平台管理

基于 Spring Cloud 的微服务应用开发框架,方便快捷的构建应用服务,简化开发,提高 IT 系统对业务的支撑能力。

最后

感谢Gitee对Choerodon猪齿鱼的肯定,在此要特别感谢Choerodon猪齿鱼社区的每一位成员在Choerodon猪齿鱼成长中的贡献,你们的参与和见证是Choerodon猪齿鱼成长最好的养分,让我们共同为企业数字化服务打造一个开放的生态平台。

-▼- 大家也可以通过以下社区途径了解猪齿鱼的最新动态、产品特性,以及参与社区贡献: 官网:http://choerodon.io 论坛:https://openforum.hand-china.com/ Github:https://github.com/open-hand/choerodon

Choerodon猪齿鱼官方社区用户交流群,此群可交流猪齿鱼使用心得、Docker、微服务、K8S、敏捷管理等相关理论实践心得,群同步更新版本更新等信息,大家可以加群讨论交流。

①-Choerodon猪齿鱼官方交流(已满);

②-Choerodon猪齿鱼官方交流(可加);【微信号发至客服邮箱[email protected],运营同事拉您入官方交流群】

欢迎加入Choerodon猪齿鱼社区~

· 14 分钟阅读

Choerodon猪齿鱼全场景效能平台,是基于Kubernetes,Istio,knative,Gitlab,Spring Cloud来实现本地和云端环境的集成,实现企业多云/混合云应用环境的一致性。目前对于通过 Choerodon 开发部署的应用系统有多种部署方式——kubernetes集群部署,主机 JAR 包和 Docker 部署,所以请根具部署方式的不同请灵活选择系统架构。

安装方式

Choerodon提供两种安装方式,即一键部署Choerodon和分步部署Choerodon。下面将介绍一键部署最小化安装Choerodon。

环境准备

硬件最低要求

  • 服务器总内存:32G及以上
  • 服务总CPU数:8核心及以上
  • 单节点硬盘:100Gb及以上(如使用NFS存储,那么NFS服务节点建议存储不小于512G)

软件要求

  • 系统版本:CentOS7.4及以上
  • Kubernetes:1.10及以上
  • Helm:v3.2.4及以上

网络要求

  • 各个服务器之间内网互通内网带宽建议1Gbps以上
  • 各个服务器能够访问外网

下面将以一台8核心32G内存的服务器为例,演示如何安装猪齿鱼。

安装步骤

安装 Choerodon 首先完成 kubernetes 集群的部署和 helm 安装;然后部署 NFS 服务器端,如果你选择其他类型的存储,可以忽略NFS相关的搭建信息;接着使用猪齿鱼命令行工具一键式安装 Choerodon;最后部署 Gitlab Runner,其用于代码提交后自动进行代码测试、构建服务的镜像及生成helm chart并将结果发回给Choerodon。

Kubernetes 集群安装

准备安装脚本

# 安装 git 命令行
sudo yum install git -y
# 克隆本项目代码
git clone https://gitee.com/open-hand/kubeadm-ha.git
# 进入项目目录
cd kubeadm-ha
# 安装 ansible 环境
sudo ./ansible/install.sh

配置 ansible inventory 文件

项目 example 文件夹下提供了 6 个 ansible inventory 示例文件,请按需求进行选择并修改。

拷贝项目下的 example/hosts.allinone.hostname.ini 文件至项目根目录下,命名为 inventory.ini,修改kubernetes部署版本为 1.16.15、各服务器的 IP 地址、用户名、密码,并维护好各服务器与角色的关系。

; 将所有节点的信息在这里填写
;    第一个字段                  为 kubernetes 节点 nodeName,注意必须由小写字母、数字,“-”或“.”组成,并且必须以小写字母或数字开头和结尾
;    第二个字段 ansible_host     为节点内网IP
;    第三个字段 ansible_port     为节点 sshd 监听端口
;    第四个字段 ansible_user     为节点远程登录用户名
;    第五个字段 ansible_ssh_pass 为节点远程登录用户密码
[all]
node1 ansible_host=192.168.56.11 ansible_port=22 ansible_user="vagrant" ansible_ssh_pass="vagrant"
; 单节点lb节点组留空。
[lb]
; 注意etcd集群必须是1,3,5,7...奇数个节点
[etcd]
node1
[kube-master]
node1
[kube-worker]
node1
; 预留组,后续添加master节点使用
[new-master]
; 预留组,后续添加worker节点使用
[new-worker]
; 预留组,后续添加etcd节点使用
[new-etcd]
; 预留组,后续删除worker角色使用
[del-worker]
; 预留组,后续删除master角色使用
[del-master]
; 预留组,后续删除etcd角色使用
[del-etcd]
; 预留组,后续删除节点使用
[del-node]
;-------------------------------------- 以下为基础信息配置 ------------------------------------;
[all:vars]
; 是否跳过节点物理资源校验,Master节点要求2c2g以上,Worker节点要求2c4g以上
skip_verify_node=false
; kubernetes版本
kube_version="1.20.2"
; 容器运行时类型,可选项:containerd,docker;默认 containerd
container_manager="containerd"
; 负载均衡器
;   有 nginx、openresty、haproxy、envoy  和 slb 可选,默认使用 nginx
;   为什么单节点 apiserver 也使用了负载均衡请参与此讨论: https://github.com/TimeBye/kubeadm-ha/issues/8
lb_mode="nginx"
; 使用负载均衡后集群 apiserver port
lb_kube_apiserver_port="8443"
; 网段选择:pod 和 service 的网段不能与服务器网段重叠,
; 若有重叠请配置 `kube_pod_subnet` 和 `kube_service_subnet` 变量设置 pod 和 service 的网段,示例参考:
;    如果服务器网段为:10.0.0.1/8
;       pod 网段可设置为:192.168.0.0/18
;       service 网段可设置为 192.168.64.0/18
;    如果服务器网段为:172.16.0.1/12
;       pod 网段可设置为:10.244.0.0/18
;       service 网段可设置为 10.244.64.0/18
;    如果服务器网段为:192.168.0.1/16
;       pod 网段可设置为:10.244.0.0/18
;       service 网段可设置为 10.244.64.0/18
; 集群pod ip段,默认掩码位 18 即 16384 个ip
kube_pod_subnet="10.244.0.0/18"
; 集群service ip段
kube_service_subnet="10.244.64.0/18"
; 分配给节点的 pod 子网掩码位,默认为 24 即 256 个ip,故使用这些默认值可以纳管 16384/256=64 个节点。
kube_network_node_prefix="24"
; node节点最大 pod 数。数量与分配给节点的 pod 子网有关,ip 数应大于 pod 数。
; https://cloud.google.com/kubernetes-engine/docs/how-to/flexible-pod-cidr
kube_max_pods="110"
; 集群网络插件,目前支持flannel,calico
network_plugin="calico"
; 若服务器磁盘分为系统盘与数据盘,请修改以下路径至数据盘自定义的目录。
; Kubelet 根目录
kubelet_root_dir="/var/lib/kubelet"
; docker容器存储目录
docker_storage_dir="/var/lib/docker"
; containerd容器存储目录
containerd_storage_dir="/var/lib/containerd"
; Etcd 数据根目录
etcd_data_dir="/var/lib/etcd"%

集群部署

部署集群:

# 在项目根目录下执行
ansible-playbook -i inventory.ini 90-init-cluster.yml

查看等待 pod 的状态为 runnning:

# 任意master节点下执行
kubectl get po --all-namespaces -w

如果部署失败,想要重置集群,执行:

# 在项目根目录下执行
ansible-playbook -i inventory.ini 99-reset-cluster.yml

其他集群运维操作请查阅项目使用指南

Helm部署

部署客户端

在任意一个master节点执行以下命令

  • 根据系统下载所需版本
curl -L -o helm-v3.2.4-linux-amd64.tar.gz https://file.choerodon.com.cn/kubernetes-helm/v3.2.4/helm-v3.2.4-linux-amd64.tar.gz
  • 解压压缩包(以linux-amd64为例)
tar -zxvf helm-v3.2.4-linux-amd64.tar.gz
  • 将文件移动到PATH目录中(以linux-amd64为例)
sudo mv linux-amd64/helm /usr/bin/helm

验证部署

执行命令,出现以下信息即部署成功。

$ helm version
version.BuildInfo{Version:"v3.2.4", GitCommit:"0ad800ef43d3b826f31a5ad8dfbb4fe05d143688", GitTreeState:"clean", GoVersion:"go1.13.12"}

NFS动态存储卷

创建 NFS 服务器

在集群每一个节点安装nfs-utils

 sudo yum install -y nfs-utils

配置nfs-server

  • 创建共享目录
mkdir -p /u01/prod
  • 编辑/etc/exports文件添加需要共享目录,每个目录的设置独占一行,编写格式如下:
NFS共享目录路径 客户机IP段(参数1,参数2,...,参数n)
# 例子
/u01 192.168.1.1/16(rw,sync,insecure,no_subtree_check,no_root_squash)

启动NFS服务

配置完成后,您可以在终端提示符后运行以下命令来启动 NFS 服务器:

sudo systemctl enable nfs-server
sudo systemctl start nfs-server

检查NFS服务提供是否正常

到客户机上执行showmount命令进行检查

$ showmount -e <NFS服务器IP地址>
Exports list on <NFS服务器IP地址>:
/u01

安装 nfs-client-provisioner

添加choerodon chart仓库

helm repo add c7n https://openchart.choerodon.com.cn/choerodon/c7n/
helm repo update

在任意一个master节点执行下面helm命令,安装nfs-client-provisioner

helm upgrade --install nfs-client-provisioner c7n/nfs-client-provisioner \
--set rbac.create=true \
--set persistence.enabled=true \
--set storageClass.name=nfs-provisioner \
--set persistence.nfsServer=127.0.0.1 \
--set persistence.nfsPath=/u01/prod \
--version 0.1.1 \
--namespace kube-system

域名解析

如果有域名,解析到服务器IP即可。没有域名则可以通过 coredns 的 hosts 插件配置。

编辑 coredns 的 ConfigMap,将域名替换成你自己的域名:

apiVersion: v1
kind: ConfigMap
data:
  Corefile: |
    .:53 {
        hosts {
            192.168.56.11 charts.example.choerodon.io
            192.168.56.11 minio.example.choerodon.io
            192.168.56.11 gitlab.example.choerodon.io
            192.168.56.11 registry.example.choerodon.io
            192.168.56.11 sonarqube.example.choerodon.io
            192.168.56.11 nexus.example.choerodon.io
            192.168.56.11 api.example.choerodon.io
            192.168.56.11 notify.example.choerodon.io
            192.168.56.11 devops.example.choerodon.io
            192.168.56.11 hzero.example.choerodon.io
            192.168.56.11 app.example.choerodon.io
            fallthrough
        }
    }

一键部署猪齿鱼

下载安装工具

在集群 master 执行下面的命令,先安装命令行工具 c7nctl:

curl -fsSL -o get_c7nctl.sh https://gitee.com/open-hand/c7nctl/raw/0.24/scripts/get-c7nctl.sh
chmod 700 get_c7nctl.sh
./get_c7nctl.sh

配置文件

创建并编辑配置文件,修改域名为你自己的域名:

# vim config.yml
--------------------
version: 0.24
metadata:
name: resource-choerodon
namespace: c7n-system # 指定命名空间安装choerodon
spec:
persistence:
storageClassName: nfs-provisioner
resources:
gitlab:
domain: gitlab.example.choerodon.io
minio:
domain: minio.example.choerodon.io
harbor:
domain: harbor.example.choerodon.io
chartmuseum:
domain: chart.example.choerodon.io
sonatype-nexus:
domain: nexus.example.choerodon.io
sonarqube:
domain: sonarqube.example.choerodon.io
choerodon-gateway:
domain: api.example.choerodon.io
choerodon-message:
domain: notify.example.choerodon.io
devops-service:
domain: devops.example.choerodon.io
choerodon-front-hzero:
domain: hzero.example.choerodon.io
choerodon-front:
domain: app.example.choerodon.io

执行安装

在安装过程中,会提示设置某些组件用户名及密码,注意保存;执行部署命令,安装过程中如果遇到问题,请先查看本文最后一节关于常见问题的介绍,如果未能解决你的问题,可以到论坛中提问。

./c7nctl install c7n -c config.yml --version=0.24 --thin-mode
  • 安装完成后您可以访问您配置的choerodon-front域名,默认用户名和密码为admin/Admin@123!
  • 登录一次Gitlab,第一次登录会提示设置root用户密码,随后会跳转到Choerodon认证,使用admin/Admin@123!登录即可,如果使用root/admin用户拉取代码用户名为root,密码为界面设置的密码,其他用户创建后会通过站内信通知Gitlab密码。

安装 Gitlab runner

如你使用一键部署安装的猪齿鱼,在同一集群中可以使用下面命令一键部署Gitlab-Runner。

./c7nctl install runner -c config.yml --version 0.24  --thin-mode

手动安装 runner 请参考官网文档

关于猪齿鱼

Choerodon猪齿鱼全场景效能平台,是基于Kubernetes,Istio,knative,Gitlab,Spring Cloud来实现本地和云端环境的集成,实现企业多云/混合云应用环境的一致性。平台通过提供精益敏捷、持续交付、容器环境、微服务、DevOps等能力来帮助组织团队来完成软件的生命周期管理,从而更快、更频繁地交付更稳定的软件。

更多内容

大家可以通过以下社区途径了解Choerodon猪齿鱼文档,最新动态,产品特性:

【Choerodon官网】

https://choerodon.io/zh/

【汉得开放平台】

https://open.hand-china.com/

【汉得开放论坛】

https://openforum.hand-china.com/

也可以加入Choerodon猪齿鱼官方社区用户交流群,交流猪齿鱼使用心得,Docker,微服务,K8S,敏捷管理等相关理论实践心得,群同步更新版本更新等信息,大家可以加群讨论交流。

①-Choerodon猪齿鱼官方交流(已满);

②-Choerodon猪齿鱼官方交流(可加);【微信号发至客服邮箱[email protected],运营小伙伴拉您入官方交流群】

欢迎加入Choerodon猪齿鱼社区,共同为企业数字化服务打造一个开放的生态平台。

· 11 分钟阅读

在上次的自动化测试系列(一)中为大家大体介绍了自动化测试的概念,本文主要针对API测试的概念及API测试在Choerodon猪齿鱼中的实践展开。

API(应用程序编程接口)测试是一种软件测试,可以直接在API级别执行验证。它是集成测试的一部分,它确定API是否满足测试人员对功能,可靠性,性能和安全性的期望。与UI测试不同,API测试是在没有GUI的消息层执行的。

什么是API测试

接口(API)是各种系统功能的基础,一旦接口出现问题可能会引起许多系统功能的问题并且不容易定位。而接口测试则帮助节省了测试成本,促进了测试前移。如图所示,在软件的自动化测试金字塔中,越是底层的测试,越是能够提前发现Bug,而在底层发现的这些Bug造成的影响往往也会更大。所以,我们倡导测试前移,也就是说,在金字塔中层级越低,占的比重应该更大。(但是在实际工作中,单元测试对技术专业性要求更高,很多情况下都是由开发来实施,因此我们可以先选择接口测试来更早地介入测试。)

其次,接口测试相较于传统的功能测试,接口测试能够更好地解决系统测试的复杂度问题,同时避免了UI层可能不稳定的问题,以此来提高测试人员的工作效率。

通过将API测试任务集成至应用流水线,Choerodon平台实现了接口测试的自动化。

怎样使用Choerodon API测试功能?

本次旨在为大家介绍在Choerodon猪齿鱼 V0.24.0商业版中API测试相关的功能。

API测试用例管理

Choerodon中的接口测试模块通过集成Jmeter,实现了API用例的添加、归集、管理与执行的功能。其中支持基于接口URL或Swagger文档快速编排接口测试用例,而导入或添加API测试用例的整个过程免代码编写,技术门槛低,适合敏捷团队中各个角色使用。

  • 创建API测试用例

API测试用例主要由4个部分组成,分别是:用例的基础信息、前置步骤、请求脚本以及断言。

  • 前置步骤用于为执行用例请求做前置准备,分为:前置请求、生成随机数据、前置等待3种类型。
  • 请求脚本中包含了:选择请求方式、维护URL、维护请求头、请求参数或请求体,同时还能从对应的响应结果中提取出变量供后续的用例引用。
  • 断言用于对用例执行后的响应结果做判断,判断请求执行后的响应结果是否满足我们的预期。若满足,则称之为:通过断言;不满足,则为:不满足断言;
  • 导入API测试用例

导入用例的功能支持将已有的接口及其相关信息批量快速地导入到用例库中,并自动生成符合规范的API测试用例。目前支持Swagger导入用例cURL导入用例方式。

  • Swagger导入用例支持输入Swagger URL从Swagger中批量导入API测试文档中已经维护的接口信息。

  • cURL导入用例支持从浏览器(如chrome、safari)中复制请求为cURL格式,并将其粘贴进图中的命令行中即可。

  • 执行API测试用例

执行API测试用例时,需选择API测试用例,并支持选择API测试任务-任务配置页面已经维护好的任务配置,同时支持在此基础上进行修改,或者直接输入各项配置。

执行配置中设置的参数支持用于此次执行的所有用例,避免重复多次的维护相同的用例信息。

API测试任务

API测试任务是某些特定用例的集合(这里可以是产品的某个版本中的API测试用例,或者是其中某个功能块的API测试用例的集合);从API测试用例库中选择用例创建API测试任务成功后,便能以API测试任务为整体来执行该任务。此外,应用流水线中也集成了API测试任务,从而实现了API测试的自动化执行。

  • 创建API测试任务

创建API测试任务时,需选择API测试用例,作为API测试任务中执行的对象。支持选择API测试任务-任务配置页面已经维护好的任务配置,同时支持在此基础上进行修改,或者直接输入各项配置作为此任务的通用配置。

任务配置中设置的参数支持用于API测试任务中执行的用例,避免重复多次的维护相同的用例信息。

  • API测试任务记录

API测试任务菜单下,可查看所有API测试任务的执行记录,除此之外,还支持查看直接通过执行用例而产生的用例执行的记录。

测试记录中包含了两部分,分别是:执行概览与执行结果详情;

1. 执行概览:其中包括记录的编号、执行结果、执行者、开始时间、执行耗时、用例通过率、执行成功的用例数、执行失败的用例数。
2. 执行结果详情:即每个用例的执行详情查看;其中包括:用例请求的基本信息(请求方式、URL)、用例执行状态、开始时间、执行耗时、断言的通过情况、请求头、请求体、状态码、响应头以及响应体。

  • 任务配置管理

任务配置用于为执行用例或执行API测试任务提供基础的配置,其中包括:全局请求头配置、全局请求配置、授权管理配置以及用户变量配置,以此来避免在多个用例中频繁重复地配置这些参数。

  • 流水线中集成API测试任务

流水线中API测试任务目前仅支持Choerodon商业版能选择。当API测试任务触发后,会立刻执行选中的测试任务。

注意:该类型的CD任务仅Choerodon商业版可用。

  • 选择添加此类型任务后,首先需要填写任务名称、配置触发分支;触发分支的匹配方式支持:分支类型匹配、正则匹配、精确匹配以及精确排除。
  • 选择API测试任务:此处仅支持选择项目下已有的API测试任务。

总结

持续测试是DevOps流程中重要的一环,而API测试能帮助实现测试前移,从而帮助团队降低测试成本,更快地发现缺陷与问题。

关于猪齿鱼

Choerodon猪齿鱼作为全场景效能平台,是基于的Kubernetes,Istio,knative,Gitlab,Spring Cloud来实现本地和云端环境的集成,实现企业多云/混合云应用环境的一致性。平台通过提供精益敏捷,持续交付,容器环境,微服务,DevOps等能力来帮助组织团队来完成软件的生命周期管理,从而转变,更替代地交付更稳定的软件。

更多内容

大家可以通过以下社区途径了解Choerodon猪齿鱼文档,最新动态,产品特性:

【Choerodon官网】

https://choerodon.io/zh/

【汉得开放平台】

https://open.hand-china.com/

【汉得开放论坛】

https://openforum.hand-china.com/

也可以加入Choerodon猪齿鱼官方社区用户交流群,交流猪齿鱼使用心得,Docker,微服务,K8S,敏捷管理等相关理论实践心得,群同步更新版本更新等信息,大家可以加群讨论交流。

①-Choerodon猪齿鱼官方交流(已满);

②-Choerodon猪齿鱼官方交流(可加);【微信号发至客服邮箱[email protected],运营小伙伴拉您入官方交流群】

欢迎加入Choerodon猪齿鱼社区,共同为企业数字化服务打造一个开放的生态平台。

· 16 分钟阅读

当今激烈的商业竞争中,企业中的服务和产品需要更快速的版本迭代和高质量的软件交付,同时减少完成项目所需的成本和时间,不少企业引入了DevOps概念来提升软件研发交付效率。DevOps是开发和运营的结合,代表着一种文化和实践,强调了软件开发人员(Dev)和信息技术(IT)运营与维护(O&M)专业人员(Ops)的协作和交流,同时促进了软件交付和基础架构变更。它旨在建立一种文化和环境,使软件构建,测试和发布可以更加方便,频繁和可靠地进行。DevOps中的测试是自动化的,不同于传统的手工测试,自动化测试通过测试工具或者框架,录制编写测试脚本,对软件功能进行测试,能够快速检测错误并查找可能对用户体验产生负面影响的问题,从而更快的发布高质量产品。

本文通过介绍自动化测试体系概念,带你了解自动化测试在实现高质量产品方面的重要作用。具体内容如下:

  • 什么是自动化测试
  • 为什么要进行自动化测试
  • 手工测试和自动化测试之间的区别
  • 自动化测试如何与DevOps相适应
  • Choerodon猪齿鱼如何进行自动化测试

什么是自动化测试?

自动化测试是使用工具、脚本和软件对重复、预定义的操作来执行测试用例的过程。由于自动化测试是通过自动化工具完成的,因此在增加总体测试覆盖率的同时,它在探索性测试中花费的时间更少,在维护测试脚本时花费的时间更多。

自动化测试的基本概念是测试金字塔。它演示了如何解决项目的自动化测试:构成金字塔基础的哪些部分首先要进行测试,以及在金字塔最后阶段剩下什么?

按照测试金字塔的模式,首先是单元测试层,即开发人员在编写代码时经常执行的代码测试。然后是API测试所属的服务器层。稍后,当前端完成时,将进行UI测试。

图:三层测试自动化金字塔

自动化测试的类型

  • 冒烟测试: 针对每个版本或每次需求变更后,在正式测试前,对产品或系统的一次简单的验证性测试;
  • 单元测试: 对软件中的最小可测试单元在与程序其他部分相隔离的情况下进行检查和验证的工作;
  • 集成测试: 是组装软件的系统测试技术,按设计要求把通过单元测试的各个模块组装在一起之后,进行综合测试以便发现与接口有关的各种错误;
  • 功能测试: 是黑盒测试的一方面,它检查实际软件的功能是否符合用户的需求,比如说逻辑功能测试,界面测试,易用性测试,安装/卸载测试,兼容性测试等;
  • 性能测试: 通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试
  • 回归测试: 指修改了旧代码后,重新测试以确认修改没有引入新的错误或导致其他代码产生错误;
  • 数据驱动测试: 一种在软件测试过程中使用的方法,用于描述直接测试的输入、可验证输出的条件表,以及测试环境的设置还有控制编码的过程;
  • 黑盒测试: 又称为功能测试、数据驱动测试或基于规格说明书的测试,是一种从用户观点出发的测试主要测到的错误类型有:不正确或遗漏的功能;接口、界面错误;性能错误;数据结构或外部数据访问错误;初始化或终止条件错误等等。

为什么要进行自动化测试?

自动化测试是软件开发生命周期的重要组成部分, 主动修复错误需要对基础代码进行的每个小更改都进行测试和重新测试。随着时间的流逝,回归测试的数量将会增加,测试人员将承受很大的压力,而创新和增长的时间会越来越少。此外,至少有四个因素导致测试成本上升:

  • 跨设备、系统和平台进行测试的需求不断增加。 将测试范围从例如一个Web浏览器扩展到两个或扩展到包含移动设备会影响工作量。
  • 测试用例的数量不断增加。 随着每次产品更新,涵盖更多功能所需的测试用例数量都会增加。新功能会影响需要重新测试的现有功能;常见的回归测试问题。

  • 发布管道的成熟。 团队不希望仅进行一次回归测试,而是希望在发布管道的多个阶段运行测试。这有助于为开发人员提供最快的反馈,但同时也需要大量测试。
  • 管理层希望增加发布数量。 为了保持其最新产品的市场地位,企业希望确保软件质量并更快速的迭代产品。 面对测试成本的增加,为了改变测试不可持续的局面,团队可以引入自动化测试以减轻测试人员的重复、不可预测、繁琐的任务。

通过自动化测试可以带来以下好处:

  • 提高生产率: 可以高精度执行更多测试,产品功能测试的范围更广;
  • 快速反馈: 在软件开发生命周期(SDLC)中更快,更早地执行测试时,反馈也可以更快地提供给开发人员;
  • 加快产品版本迭代: 更快的测试执行和连续的反馈循环可以缩短总体SDLC,并提高发布频率;
  • 成本效率::优化资源后,可以降低成本;
  • 更高的敏捷性和市场响应能力: 较短的发布周期使企业可以更好地响应变化并确定资源的优先级;
  • 降低人为错误的风险: 自动化测试可满足回归测试需求,将人为错误的风险降到最低;
  • 提高交付质量: 高效测试可最大程度地扩大测试范围,提高产品质量;
  • 更高的工作满意度: 由于消除了高度重复的任务,测试人员可以体验到更高的工作满意度。

手动和自动化测试之间的区别

在快速且连续的产品开发中,手动测试是验证终端用户工作流程的最有效方法。但实际情况是,手工测试并不能完全做到重测每个功能,持续测试工作中需要编写快速且频繁运行的自动化测试,找出生产版本中的缺陷。

通过以下对比,让我们来了解测试工作中手工测试与自动化测试之间的区别:

特征手动测试自动化测试
准确性和可靠性精度低,手动测试更容易出现人为错误使用工具和脚本的准确性很高
所需时间手动测试比自动化慢,手动运行测试耗时多自动化运行测试用例的速度明显快于人力资源
投资成本成本低初始成本比手动测试高
用法适用于探索性,可用性和临时测试适用于回归测试,性能测试,负载测试
体验首次使用手动测试执行测试用例很顺利,但面对频繁变化的需求,捕获回归缺陷能力有限能快速适应代码频繁更改的测试

自动化测试如何与DevOps相适应

DevOps中持续测试是软件产品交付管道中执行自动化测试的过程,其目的是获取有关最新构建或预发布的版本中业务风险的快速连续反馈。然后,可以使用此信息来确定软件产品是否已准备好在任何给定时间通过交付管道进行升级。由于测试提早开始并连续执行,因此减少了发现和修复缺陷所需的时间和精力,可以提高交付高质量软件(满足对可接受风险水平的期望的软件)的速度和频率,并减少技术负担。

持续测试包括对功能需求非功能需求的验证,均与自动化测试有关。对于功能测试,持续测试通常涉及单元测试,API测试,集成测试和系统测试非功能性测试涉及诸如静态代码分析,安全性测试,性能测试等实践。

Choerodon猪齿鱼如何进行自动化测试

Choerodon猪齿鱼目前支持的自动化测试有:API测试、性能测试、流量回归测试、UI测试,允许测试人员通过关键测试信息来完成测试操作,无需编程。

ChoerodonAPI测试模块通过集成Jmeter,实现了API用例的添加、归集、管理与执行的功能。其中支持基于接口URL或Swagger文档快速编排接口测试用例,而导入或添加API测试用例的整个过程免代码编写,技术门槛低,适合敏捷团队中各个角色使用。

Choerodon性能测试也是通过集成Jmeter测试工具,支持用户在已有的测试任务基础上调整执行参数(线程数、预热时长、循环数)来对系统的各项性能指标进行测试,从而发现性能瓶颈与性能缺陷,以便更好地优化系统或产品的整体性能。

Choerodon流量回归测试适用于:批量录制产品界面操作并将得到的用例进行集中管理,以便后续进行批量的回归测试。此功能通过使用Goreplay录制产品界面中的操作生成流量文件,然后将其导入Choerodon平台生成用例进行管理与执行。

ChoerodonUI测试适用于:测试人员通过插件录制web应用的界面操作,生成对应的测试用例与步骤;而后便能直接执行对应的测试文件来对界面UI操作进行测试。

结论

自动化测试能够提高测试人员的工作效率并且优化测试速度,提高软件产品的准确性和稳定性,代替人工完成各种业务场景,使资源最大化利用,增加软件的信任度。希望以上关于自动化测试的概念对你有所帮助。

关于猪齿鱼

Choerodon猪齿鱼作为全场景效能平台,是基于的Kubernetes,Istio,knative,Gitlab,Spring Cloud来实现本地和云端环境的集成,实现企业多云/混合云应用环境的一致性。平台通过提供精益敏捷,持续交付,容器环境,微服务,DevOps等能力来帮助组织团队来完成软件的生命周期管理,从而转变,更替代地交付更稳定的软件。

更多内容

大家可以通过以下社区途径了解Choerodon猪齿鱼文档,最新动态,产品特性:

【Choerodon官网】

https://choerodon.io/zh/

【汉得开放平台】

https://open.hand-china.com/

【汉得开放论坛】

https://openforum.hand-china.com/

也可以加入Choerodon猪齿鱼官方社区用户交流群,交流猪齿鱼使用心得,Docker,微服务,K8S,敏捷管理等相关理论实践心得,群同步更新版本更新等信息,大家可以加群讨论交流。

①-Choerodon猪齿鱼官方交流(已满);

②-Choerodon猪齿鱼官方交流(可加);【微信号发至客服邮箱[email protected],运营小伙伴拉您入官方交流群】

欢迎加入Choerodon猪齿鱼社区,共同为企业数字化服务打造一个开放的生态平台。

· 10 分钟阅读

Choerodon 猪齿鱼作为全场景效能平台,是基于Kubernetes,Istio,knative,Gitlab,Spring Cloud来实现本地和云端环境的集成,实现企业多云/混合云应用环境的一致性。平台通过提供精益敏捷、持续交付、容器环境、微服务、DevOps等能力来帮助组织团队来完成软件的生命周期管理,从而更快、更频繁地交付更稳定的软件。

2020年12月31日,Choerodon猪齿鱼发布0.24版本,本次更新上线了敏捷协作中的绩效甘特图功能,其它功能模块也都进行了不同程度的新增、修改和优化,如代码开发、环境部署等,欢迎各位更新体验。

  • 发布版本:0.24
  • 发布时间:2020年12月31日
  • 更新范围:敏捷协作、代码开发、环境部署、测试管理、制品库以及基础功能

下面就为大家带来详细的模块介绍。

敏捷协作

新增功能

  • 支持关注问题项;
  • 新增甘特图功能,以便项目管理员进行任务排期;

  • 工作列表问题项支持批量删除;
  • 问题项支持关联或新建测试用例;
  • 故事地图新增冲刺泳道;

  • 故事地图支持所有字段进行筛选;
  • 看板支持一键折叠、一键展开;
  • 新增绩效,通过图表展示冲刺的完成情况,以便更好的管理项目;

绩效功能

分析当前冲刺故事、任务、缺陷情况及历史冲刺故事、任务、缺陷趋势变化,以便用户更好的了解冲刺的完成情况。

  • 故事点分布图从计划、实际两个维度展示故事点、任务工时主要负责人的数量以及占比;
  • 故事完成情况图从故事点、任务两个维度展示主要负责人计划、实际完成对比及百分比;
  • 缺陷排行榜从非生产环境、生产环境两个维度展示责任人、创建人缺陷数量并按降序排列;
  • 缺陷分布图从非生产环境、生产环境两个维度展示责任人、创建人缺陷数量柱状分布图;
  • 问题完成趋势图从故事点、任务工时两个维度展示每个冲刺计划、完成数量及顺冲刺的变化;
  • 缺陷趋势分析图从非生产环境、生产环境两个维度展示责任人、创建人每个冲刺缺陷数量及随冲刺的变化,可通过责任人筛选;

功能优化

  • 优化故事地图卡片样式;
  • 优化看板卡片样式;
  • 优化状态机自定义流转;
  • 优化问题详情剩余问题显示;
  • 优化问题复制时同时复制自定义字段的值;
  • 优化搜索栏支持全选、反选、无;

缺陷修复

  • 禁用点击空白关闭弹窗;

代码开发

新增功能

  • 流水线-代码检查任务中新增Maven单测的功能;

  • 流水线CD阶段中新增外部卡点的任务,用于触发外部的工作流或其他系统;

  • 应用服务版本新增支持批量删除的功能;

功能优化

  • 优化了应用流水线树结构中的搜索,直接筛出含有字段的对象,并进行字体颜色加深;
  • 创建与修改流水线的界面新增通过拖拽来改变阶段与任务的顺序;
  • 优化了流水线页面的刷新加载速度;

缺陷修复

  • 修复了创建流水线,添加任务时,应用服务为空问题;
  • 修复了流水线中人工卡点任务,可以选择没有应用服务权限的成员作为审核人员的问题;
  • 修复了应用流水线-CD阶段-部署任务中,不支持修改配置信息的问题;
  • 修复了实例视图中,共享应用服务详情中信息的展示问题;

环境部署

新增功能

  • 部署模块新增主机配置功能,支持项目人员在此维护管理部署类型的主机;
  • 手动部署模块新增主机部署的方式,支持将jar包与Docker镜像直接部署到已有的主机中;
  • 集群模块新增“新建集群”的操作,支持通过录入节点来新建集群;
  • 集群模块新增支持增减“平台集群”的节点,并支持移除节点中的master或etcd角色;

功能优化

  • 针对同一集群下的service外部ip及端口,添加了不能重复的限制;

缺陷修复

  • 修复了部署配置页面列表中各个字段排序报错的问题;

测试管理

新增功能

  • 测试计划新增测试报告;

制品库

新增功能

  • 新增maven、npm制品仓库删除功能;
  • 新增组织时创建harbor仓库;
  • 制品库中允许有的项目所有者都能在Nexus仓库中给自己或项目成员分配角色;
  • 制品库中允许所有Nexus仓库人员都能看到Nexus制品库下载记录;

缺陷修复

  • harbor初始化脚本空指针修复;
  • saga任务扫描不到修复;

基础功能

新增功能

  • 平台管理与组织管理的安全策略中新增强制用户修改默认密码的设置;
  • 组织层与项目层的自定义角色新增支持删除的功能;
  • 工作台-快速链接中新增置顶功能,支持将任意链接置顶;
  • 工作台-快速链接中新增个人分组,支持单独查看项目或个人的快速链接;
  • 项目层新增客户端的创建与管理功能,并支持项目所有者在此为客户端分配项目角色;

功能优化

  • 优化了用户创建失败后的操作,此时支持停用此用户;

缺陷修复

  • 修复了平台层任务管理页面,点击浏览器刷新时白屏的问题;
  • 修复了LDAP同步记录中同步类型显示的问题;
  • 修复了登录Token失效后多标签页弹框的问题;
  • 修复了工作台中,偶现最近使用环境重复出现的问题;
  • 修复了消息铃铛通知中,流水线的跳转链接有误且点击后报错的问题;
  • 修复了项目层-通知-资源删除验证,勾选某个框之后,点击保存,勾选的内容无效的问题;

社区参与

感谢以下朋友在社区论坛中提出反馈和意见,在0.24版本更新中作出贡献,感谢大家一直以来的支持。

@**zhuozuozhi**

@hyland

更加详细的内容,请参阅Release Notes和官网用户手册。

欢迎各位朋友通过Choerodon的GitHub和猪齿鱼社区进行反馈与贡献,帮助Choerodon猪齿鱼不断成长。Choerodon会持续优化,敬请期待。

-▼-

大家也可以通过以下社区途径了解猪齿鱼的最新动态、产品特性,以及参与社区贡献:

Choerodon猪齿鱼官方社区用户交流群,此群可交流猪齿鱼使用心得、Docker、微服务、K8S、敏捷管理等相关理论实践心得,群同步更新版本更新等信息,大家可以加群讨论交流。

①-Choerodon猪齿鱼官方交流(已满);

②-Choerodon猪齿鱼官方交流(可加);【微信号发至客服邮箱[email protected],运营同事拉您入官方交流群】

欢迎加入Choerodon猪齿鱼社区,共同为企业数字化服务打造一个开放的生态平台。

· 11 分钟阅读

Choerodon猪齿鱼V0.23版本中的部署 > 应用部署 > 流水线功能在猪齿鱼中停用,需要切换为开发 > 应用流水线功能,相比于老版的流水线,新版本的应用流水线增强了猪齿鱼的管理功能,提供了更多的扩展。通过 Gitlab 和 猪齿鱼的 DevOps 实现提交代码后自动更新服务的流程。

前置条件

开发规范

开发人员在特性分支(feature-*)进行功能开发,完成功能开发之后将特性分支合并到环境分支develop进行部署。

自动化部署配置

在猪齿鱼中配置 K8s Config Map

功能路径:应用部署 > 资源 > 资源视图 > 选择环境 > 配置映射

在配置映射中需要定义CM的名称,这里以hzero-dev为例,在配置映射中维护公共的环境变量,例如注册中心地址等.

调整 Chart 中的配置文件

创建完成配置映射之后,需要在k8s部署时读取cm配置,这一步需要调整项目下的helm配置。

注意配置的缩进,直接拷贝(Ctrl + V)IDEA会自动调整缩进,请使用Paste as Plain Text保证缩进不会被自动调整。

  • charts/hzero-platform/templates/_helpers.tpl
{{/* vim: set filetype=mustache: */}}
{{- /*
service.labels.standard prints the standard service Helm labels.
The standard labels are frequently used in metadata.
*/ -}}

{{- define "service.image" -}}
{{- printf "%s:%s" .Values.image.repository (default (.Chart.Version) .Values.image.tag) -}}
{{- end -}}

{{- define "service.microservice.labels" -}}
choerodon.io/version: {{ default (.Chart.Version) .Values.image.tag }}
choerodon.io/service: {{ .Chart.Name | quote }}
choerodon.io/metrics-port: {{ .Values.deployment.managementPort | quote }}
{{- end -}}

{{- define "service.labels.standard" -}}
choerodon.io/release: {{ .Release.Name | quote }}
{{- end -}}

{{- define "service.match.labels" -}}
choerodon.io/release: {{ .Release.Name | quote }}
{{- end -}}

{{- define "service.logging.deployment.label" -}}
choerodon.io/logs-parser: {{ .Values.logs.parser | quote }}
{{- end -}}

{{- define "service.monitoring.pod.annotations" -}}
choerodon.io/metrics-group: {{ .Values.metrics.group | quote }}
choerodon.io/metrics-path: {{ .Values.metrics.path | quote }}
{{- end -}}

{{/*
Return the appropriate apiVersion for deployment.
*/}}
{{- define "app.deployment.apiVersion" -}}
{{- if semverCompare "<1.9-0" .Capabilities.KubeVersion.GitVersion -}}
{{- print "apps/v1beta2" -}}
{{- else -}}
{{- print "apps/v1" -}}
{{- end -}}
{{- end -}}

{{/*
Return the appropriate apiVersion for statefulset.
*/}}
{{- define "app.statefulset.apiVersion" -}}
{{- if semverCompare "<1.9-0" .Capabilities.KubeVersion.GitVersion -}}
{{- print "apps/v1beta2" -}}
{{- else -}}
{{- print "apps/v1" -}}
{{- end -}}
{{- end -}}

{{/*
Return the appropriate apiVersion for ingress.
*/}}
{{- define "app.ingress.apiVersion" -}}
{{- if semverCompare "<1.14-0" .Capabilities.KubeVersion.GitVersion -}}
{{- print "extensions/v1beta1" -}}
{{- else -}}
{{- print "networking.k8s.io/v1beta1" -}}
{{- end -}}
{{- end -}}
  • charts/hzero-platform/templates/deployment.yaml

26~28行定义读取CMCM的名称来自于values.yaml

apiVersion: {{ include "app.deployment.apiVersion" . }}
kind: Deployment
metadata:
name: {{ .Release.Name }}
labels:
{{ include "service.labels.standard" . | indent 4 }}
{{ include "service.logging.deployment.label" . | indent 4 }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
{{ include "service.labels.standard" . | indent 6 }}
template:
metadata:
labels:
{{ include "service.labels.standard" . | indent 8 }}
{{ include "service.microservice.labels" . | indent 8 }}
SERVICE_CODE: {{ .Chart.Name | quote }}
annotations:
{{ include "service.monitoring.pod.annotations" . | indent 8 }}
spec:
containers:
- name: {{ .Release.Name }}
image: "{{ .Values.image.repository }}:{{ .Chart.Version }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
envFrom:
- configMapRef:
name: {{ .Values.configMap.name }}
env:
{{- range $name, $value := .Values.env.open }}
{{- if not (empty $value) }}
- name: {{ $name | quote }}
value: {{ $value | quote }}
{{- end }}
{{- end }}
ports:
- name: http
containerPort: {{ .Values.service.port }}
protocol: TCP
# readinessProbe:
# httpGet:
# path: /health
# port: {{ .Values.deployment.managementPort }}
# scheme: HTTP
readinessProbe:
exec:
command:
- curl
- localhost:{{ .Values.deployment.managementPort }}/actuator/health
failureThreshold: 3
initialDelaySeconds: 60
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 10
resources:
{{ toYaml .Values.resources | indent 12 }}
volumeMounts:
- mountPath: /Charts
name: data
{{- if not (empty .Values.persistence.subPath) }}
subPath: {{ .Values.persistence.subPath }}
{{- end }}
volumes:
- name: data
{{- if .Values.persistence.enabled }}
persistentVolumeClaim:
claimName: {{ .Values.persistence.existingClaim | default ( .Release.Name ) }}
{{- else }}
emptyDir: {}
{{- end }}
  • charts/hzero-platform/values.yaml

6~7行定义了CM的名称,这里需要和猪齿鱼配置映射的名称匹配。

# Default values for hzero-platform.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
replicaCount: 1
configMap:
name: hzero-dev

image:
repository: registry.choerodon.com.cn/hzero-hzero/hzero-platform
pullPolicy: Always

env:
open:
# 数据库地址
SPRING_DATASOURCE_URL: jdbc:mysql://db.hzero.org:3306/hzero_platform?useUnicode=true&characterEncoding=utf-8&useSSL=false
# Redis DB
SPRING_REDIS_DATABASE: 1
metrics:
path: /actuator/prometheus
group: spring-boot

logs:
parser: spring-boot

persistence:
enabled: false

service:
enabled: false
type: ClusterIP
port: 8100
name: hzero-platform
deployment:
managementPort: 8101

resources:
# We usually recommend not to specify default resources and to leave this as a conscious
# choice for the user. This also increases chances charts run on environments with little
# resources,such as Minikube. If you do want to specify resources,uncomment the following
# lines,adjust them as necessary,and remove the curly braces after 'resources:'.
limits:
# cpu: 100m
memory: 1.7Gi
requests:
# cpu: 100m
memory: 1.2Gi

创建部署配置

功能路径:部署 > 应用部署 > 资源 > 创建部署配置

在部署配置选择对应服务,如果项目中有values.yaml文件,这里会自动带出。将环境相关的信息替换完成后保存。

创建应用流水线

功能路径:开发 > 应用流水线

在应用流水线中创建流水线,基本的流程至少需要包含构建、发布和部署三个流程,代码检查是可选的部分。

代码检查配置

选择需要检查的代码分支,检查类型分为两类,SonarMaven用来检查Maven项目,SonarScanner用来检查通用项目,自定义配置用来配置私有的Sonar服务信息。

构建配置

构建这一步主要执行Maven编译打包和Docker镜像构建,共享目录设置定义是否使用缓存,比如历史拉取的Maven资源等等。

Maven构建这一步,没有特殊需要,一般只需要执行

mvn package -Dmaven.test.skip=true -U -B

Docker构建这一步需要配置一些文件路径,Dockerfile文件路径需要填写文件的相对路径,镜像构建上下文是执行镜像打包命令的目录,一般是构建产物所在的目录,例如Maven默认构建的包所在的目录为target目录,这里填写的是构建产出物的相对路径。

生效“应用流水线”

在上一步创建完应用流水线之后,如下所示:

注意:如果你的目标分支不是master还需要做一些手工处理,需要手工将master分支的.gitlab-ci.yml文件复制或者合并到目标分支

测试自动化部署

完成所有配置之后,在项目中提交代码或者直接在应用流水线中选择全新执行,然后在猪齿鱼的应用流水线中和 Gitlab 的CI/CD > Pipelines中可以看到编译和镜像打包步骤的执行。

在部署节点执行完成之后,在部署 > 应用部署 > 资源中查看相关的服务可以看到实例的替换。

触发器部署

在实际项目开发过程中,可能存在部分基础组件项目,这些项目不会直接部署到服务器,而是需要打包成可以来的JarMaven仓库中,然后再部署依赖了此模块的项目,为了解决这类的需求,需要借助Gitlab的触发器来实现。

创建触发器

如果项目依赖了其他的模块,需要在模块代码更新之后自动部署,可以在Gitlab中创建触发器。

触发触发器

新建好触发器之后,复制下方提示中的脚本到被依赖模块项目的应用流水线的自定义阶段。

自定义CI配置:

如果需要将当前工程部署到Maven仓库供其他项目拉取,在CIMaven构建步骤中选择自定义仓库配置

然后执行打包命令

mvn clean deploy -Dmaven.test.skip=true -Dmaven.springboot.skip=true -Dmaven.javadoc.skip=true -U -B -s settings.xml

完整的应用流水线配置如下所示:

关于猪齿鱼

Choerodon 猪齿鱼作为全场景效能平台,是基于Kubernetes,Istio,knative,Gitlab,Spring Cloud来实现本地和云端环境的集成,实现企业多云/混合云应用环境的一致性。平台通过提供精益敏捷、持续交付、容器环境、微服务、DevOps等能力来帮助组织团队来完成软件的生命周期管理,从而更快、更频繁地交付更稳定的软件。

更多内容

大家可以通过以下社区途径了解Choerodon猪齿鱼文档、最新动态、产品特性:

【Choerodon官网】

https://choerodon.io/zh/

【汉得开放平台】

https://open.hand-china.com/

【汉得开放论坛】

https://openforum.hand-china.com/

也可加入Choerodon猪齿鱼官方社区用户交流群,交流猪齿鱼使用心得、Docker、微服务、K8S、敏捷管理等相关理论实践心得,群同步更新版本更新等信息,大家可以加群讨论交流。

①-Choerodon猪齿鱼官方交流(已满);

②-Choerodon猪齿鱼官方交流(可加);【微信号发至客服邮箱[email protected],运营小伙伴拉您入官方交流群】

欢迎加入Choerodon猪齿鱼社区,共同为企业数字化服务打造一个开放的生态平台。

· 12 分钟阅读

基于DevOps思想和微服务架构设计理念,汉得信息研发团队利用容器技术将敏捷管理、持续交付、运营管理、微服务框架、容器编排等相关工具整合为全价值链多云敏捷协作平台,即Choerodon猪齿鱼平台,平台实现企业多云/混合云应用环境的一致性,通过提供精益敏捷、持续交付、容器环境、微服务、DevOps等能力来帮助组织团队来完成软件的生命周期管理,从而更快、更频繁地交付更稳定的软件。

经过两年零六个月的发展与沉淀,Choerodon猪齿鱼商业版0.23版本正式上线了,覆盖需求管理、规模化敏捷、多组织等模块,致力于打造全价值链多云敏捷协作平台,帮助企业聚焦业务,加速数字化转型。

以下是详细的模块介绍:

多组织管理

组织是Choerodon平台内层级结构中的一级,组织管理员可以管理组织下所有的项目。而多组织协同功能支持企业在Choerodon平台中管理与维护多个组织,适用于多部门多项目的企业场景。

  • 创建组织:平台管理员能在Choerodon平台中创建组织,并分配一个组织管理员来管理该组织;
  • 管理组织:平台管理员能查看到各组织的基础信息,并能对平台中各组织执行启用/停用的操作;

需求管理

需求池作为需求管理的一个容器,相当于需求的数据库,贯穿着产品的整个生命周期,包括内部及外部用户的需求收集、需求审核、分析、拆解及开发进度的跟进。

  • 需求池:需求池是需求管理和项目管理的一个重要工具,使得整个项目管理流程形成一个完美的闭环。作为需求规划和反馈的重要依据,可以有效的汇集来自各个方面的需求,避免需求流失;
  • 需求审核:为了避免需求池的内容鱼龙混杂,在需求进去需求池前进行一次筛选过滤,过滤不属于项目的需求;

规模化敏捷

以企业级的大规模敏捷框架SAFe为基础,对多项目并行开发、多团队业务需求整理及产品开发路线图等进行管理,帮助团队提高协作性,降低团队管理的复杂性。

  • 敏捷项目群:SAFe的核心是项目群层,在这一层里敏捷团队、主要的利益相关者以及其他资源,致力于完成一个重要的、进行中的解决方案使命,他们组成了一个项目群结构,被称为“敏捷发布火车(ART)”;
  • 特性:是满足利益相关者需求的服务,它用于描述满足用户需求的大型系统行为,并在特性和利益矩阵中以简单的语言进行表达。每个特性均包括收益假设和接受标准,它可以通过项目群看板进行开发和管理;
  • 使能:是非功能性需求,是一项技术举措,用来促成和支持业务举措的开发实现,使能可用于支持即将到来的业务功能特性所需的任何活动;
  • ART设置:用以组建敏捷发布火车,确定开始时间和迭代节奏等一系列ART基本信息设置;
  • 项目群看板:看板方法是用于高效管理软件开发流程的新方法。它的核心作用是确保特性在到达项目群增量PI边界之前,已经进行了合理化和分析,排定了合适的优先级,并建立了接收标准,从而可以指导团队的实施。此外,可以跟踪特性的状态,清楚地看出哪些正在开发,哪些已经完成,清晰展示开发执行过程中的短板或者瓶颈;
  • 迭代日历:通过迭代日历提高敏捷团队可见性。迭代日历完整、透明的展示了ART中各个敏捷团队的开发情况,项目群管理人员可以通过PI、团队、冲刺多个视角,再结合故事点、问题计数两种维度,多方位的展示各个团队、各个冲刺、各个工作项的进展情况;
  • PI:项目群增量,PI提供了一个比冲刺更大、更具有战略意义的固定时间盒,用于进行计划、执行以及检视和调整;
  • 路线图:由一系列计划的PI组成,并标注了里程碑和发布的一个长期视图。路线图上的每个元素都是计划在特定的PI中完成的功能,特性(甚至是史诗);
  • 项目群公告板:公告板展示了特性的交付期间、特性和团队之间依赖关系,方便ART快速消除障碍;
  • WSJF:加权最短作业优先, WSJF通过计算延迟成本和工作规模(持续时间的代理),说明了ART待办事项如何通过加权最短作业优先(WSJF)重新确定优先级。在PI边界使用此算法根据当前业务背景、价值、时间、发展情况、风险和工作注意事项不断更新工作的优先级。它也可以快速地、自动地忽略沉没成本(付出且不可回收的成本),这是精益经济学的重要原则。延迟成本除以持续时间来计算WSJF,优先选择在最短时间内交付最大价值(或CoD)的特性用于实施;

质量管理

通过报表以图形化的方式直观的展示项目下应用代码质量数据,代码质量数据从SonarQube服务端获取,报表从整个项目维度及单个应用维度展示统计数据,便于直观展示当前项目的总体代码质量及每个应用的代码质量,以供团队管理参考。

  • 整个项目:从项目维度统计分析项目下所有应用代码质量,并通过图表直观展示;
  • 代码缺陷大字图:项目下代码缺陷数量;
  • 代码异味大字图:项目下代码异味数量;
  • 重复部分大字图:项目下代码重复部分数据量;
  • 安全漏洞大字图:项目下代码安全漏洞数量;
  • 技术债务大字图:项目下代码技术债务数量;
  • 代码质量环形图:项目下代码质量各类型问题占比;
  • 代码质量变化图:时间维度展示,项目下代码质量各类型问题数量随时间变化;
  • 代码质量分析图:展示项目下总问题数,各类型问题数占比及数据,项目下每个应用各类型问题数及占比;
  • 应用服务:应用服务维度展示问题、覆盖率、重复度随时间变化;

文档库管理

文档库服务通过整合SVN、Apache、Mysql、LDAP,集成相关的开源工具,实现了文档库服务器管理、文档库创建、目录管理、权限管理、日志监控、账号体系等功能。

  • 文档库:即SVN仓库;
  • 文档库服务器管理:用户可以维护已经配置好的SVN服务器,授权给对应项目。支持服务器创建、更新、删除、授权、取消授权;
  • 文档库创建:在已授权服务器上创建文档库。支持关联已有文档库、自定义服务器创建。
  • 目录管理:系统中可直接创建目录,支持创建、重命名、删除目录;
  • 权限管理:分配文档库权限,可以精细到目录维度。支持分配权限、更新权限、删除权限;
  • 日志监控:可查看权限分配日志,服务运行情况,异常处理日志;
  • 账号体系:与猪齿鱼账号体系打通、或者使用LDAP管理账号;

-▼-

更多内容

大家可以通过以下社区途径了解Choerodon猪齿鱼商业版的文档、最新动态、产品特性:

【汉得开放平台】

https://open.hand-china.com/

【汉得开放论坛】

https://openforum.hand-china.com/

也可加入Choerodon猪齿鱼官方社区用户交流群,交流猪齿鱼使用心得、Docker、微服务、K8S、敏捷管理等相关理论实践心得,群同步更新版本更新等信息,大家可以加群讨论交流。

①-Choerodon猪齿鱼官方交流(已满);

②-Choerodon猪齿鱼官方交流(可加);【微信号发至客服邮箱[email protected],运营小伙伴拉您入官方交流群】

欢迎加入Choerodon猪齿鱼社区,共同为企业数字化服务打造一个开放的生态平台。