71 天前 / openio
阿里妹导读:这么多的CASE,花了大量时间和资源去运行,真能发现BUG吗?CI做到90%的行覆盖率,能发现问题吗?测试用例越来越多,删一些,会不会就发现不了问题了?今天,我们谈谈如何评估测试用例的有效性? 我们的测试用例有两个比较关键的部分: 1)调用被测代码:例如下面的RuleService.getLastRuleByClientId(ClientId)。2)进行结果Check:例如下面的AssertEqual(OrderId,"ABCD1234")。 TestCaseA... RuleService.createRuleByClientId(ClientId,RuleDO); StringOrderId=RuleService.getLastRuleByClientId(ClientId);... TestCas......
164 天前 / 冷星1024
在公司搭建内部 GitLab 平台后,前端活动项目从 SVN 迁移到 GitLab。本文介绍如何基于 GitLab CI/CD 实现自动化构建及发布。 在从 SVN 迁移到 GitLab 和接入 GitLab CI/CD 的过程中,特别感谢发布系统和服务端同学的大力支持。 一、目前的构建、发布流程 在这部分,我们先给出使用 GitLab CI/CD 的收益,然后分别介绍使用 GitLab CI/CD 之前以及之后的构建、发布流程。 1. 团队收益 1. 发布时间由平均 5 分钟减少到 1.5 分钟。从全程 5 分钟的手动操作,到只需合并分支代码、自动化构建及发布的 1.5 分钟。 2. 前端构建放到 CI/CD 中......
184 天前 / 崔秀龙
Gitlab 提供了基于 Code Climate 的代码质量评估功能,这一功能是通过 dind(Docker in Docker)方式运行的,在 Kubernetes 环境中、尤其是托管集群中,这种方式不太合适,还好还有一个替代方案:Sonarqube,通过在 .gitlab-ci.yml 中的设置,可以使用 Sonarqube 对代码进行扫描,接收到 Commit 之后,Sonarqube 会生成针对提交的代码质量提示,如图所示: 过程也并不复杂,简单的部署一个 Sonarqube 服务,并在 Gitlab CI 中调用即可。 配置 Gitlab这个步骤很简单,只要打开页面 profile/personal_access_tokens,新建 Token 备用即可。 启动......
210 天前 / 玲珑南书
作者:bbbmj(才云软件工程师) 编辑:bot(才云) 如果你正在大规模进行 CI/CD,却没有使用 Kubernetes 原生 CD,你可能错过了不少东西。Prow——正如这个希腊语的含义“船头”——一直是使 Kubernetes 成为大规模执行 CI/CD 的优秀平台的强大助力。多年来,它也始终处在原生 Kubernetes CD 的最前沿。 如果你经常混迹于 Kubernetes 上游社区,你一定知道 k8s-ci-bot,它能帮助管理上游的 PR & Issue,几乎无处不在。今天,我们就来探究一下它背后的项目 Prow。 什么是 Prow Prow 的出现称得上是顺势而为。在它诞生前夕,Kubernetes 正值......
214 天前 / Allo
容器环境持续集成优化,Drone CI 提速 500%日志未经声明,均为AlloVince原创。本作品采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可。 前文介绍了容器环境下 Drone + semantic release 实现的语义化持续集成 Workflow,为了方便演示,流程仅给出了工作流中最重要的几个环节,实际用起来可能会发现不少值得优化的地方。 因此本次在这个工作流的基础上,介绍一些容器环境下 CI 的优化及提速方法,方法本身不限定一定要使用 Drone,使用同样的思路完全可以套用到其他的 CI 工具中。 #优化前项目概况以一个生产环境的实际项目为例,项目的......
217 天前 / 好学的阳明
上节课我们完成了最基本的流水线流程,接下来的工作就是来实现之前的具体 Pipeline 脚本了。 Pipeline第一个阶段:单元测试,我们可以在这个阶段是运行一些单元测试或者静态代码分析的脚本,我们这里直接忽略。 第二个阶段:代码编译打包,我们可以看到我们是在一个maven的容器中来执行的,所以我们只需要在该容器中获取到代码,然后在代码目录下面执行 maven 打包命令即可,如下所示: stage('代码编译打包') {try {container('maven') {echo "2. 代码编译打包阶段"sh "mvn clean package -Dmaven.test.skip=true"}} catch (exc) {println "构......
222 天前 / heart
一、环境准备首先需要有一台 GitLab 服务器,然后需要有个项目;这里示例项目以 Spring Boot 项目为例,然后最好有一台专门用来 Build 的机器,实际生产中如果 Build 任务不频繁可适当用一些业务机器进行 Build;本文示例所有组件将采用 Docker 启动, GitLab HA 等不在本文阐述范围内 Docker Version : 1.13.1GitLab Version : 10.1.4-ce.0GitLab Runner Version : 10.1.0GitLab IP : 172.16.0.37GitLab Runner IP : 172.16.0.36二、GitLab CI 简介GitLab CI 是 GitLab 默认集成的 CI 功能,GitLab CI 通过在项目内 .gitlab-ci.yaml 配置文件读取......
239 天前 / 好学的阳明
上节课和大家介绍了Gitlab CI结合Kubernetes进行 CI/CD 的完整过程。这节课结合前面所学的知识点给大家介绍一个完整的示例:使用 Jenkins + Gitlab + Harbor + Helm + Kubernetes 来实现一个完整的 CI/CD 流水线作业。 其实前面的课程中我们就已经学习了 Jenkins Pipeline 与 Kubernetes 的完美结合,我们利用 Kubernetes 来动态运行 Jenkins 的 Slave 节点,可以和好的来解决传统的 Jenkins Slave 浪费大量资源的缺点。之前的示例中我们是将项目放置在 Github 仓库上的,将 Docker 镜像推送到了 Docker Hub,这节课我们来结合我们前面学习的知识......
264 天前 / 好学的阳明
上节课我们将 Gitlab CI Runner 安装到了 Kubernetes集群中,接下来看看如何结合 Kubernetes 和 Gitlab CI 进行持续集成和持续部署。 基本配置首先将本节所用到的代码库从 Github 上获得:cnych/gitlab-ci-k8s-demo,可以在 Gitlab 上新建一个项目导入该仓库,当然也可以新建一个空白的仓库,然后将 Github 上面的项目 Clone 到本地后,更改远程仓库地址即可: $ git clone https://github.com/cnych/gitlab-ci-k8s-demo.git$ cd gitlab-ci-k8s-demo# Change the remote of the repository$ git remote set-url origin ssh://git@git.qikqiak.com......
265 天前 / 好学的阳明
上节课我们使用 Helm 快速的将 Gitlab 安装到了我们的 Kubernetes 集群中,这节课来和大家介绍如何使用 Gitlab CI 来做持续集成,首先先给大家介绍一些关于 Gitlab CI 的一些基本概念,以及如何在 Kubernetes 上安装 Gitlab CI Runner。 简介从 Gitlab 8.0 开始,Gitlab CI 就已经集成在 Gitlab 中,我们只要在项目中添加一个.gitlab-ci.yml文件,然后添加一个Runner,即可进行持续集成。在介绍 Gitlab CI 之前,我们先看看一些 Gitlab CI 的一些相关概念。 Pipeline一次 Pipeline 其实相当于一次构建任务,里面可以包含很多个流程,如安装依赖、......
283 天前 / heartEngine
前端在粗放开发模式下的痛点前端业务在近几年迎来一个很好的发展,但关于前端的基础设施并没有跟上前端业务的迅速扩展。业务扩张之后,我们不能再像小作坊一样进行粗放的开发:开发前如何快速规范的初始化项目?开发中如何保证多人高效的合作开发?开发完成后如何保证正确快速的上线?上线后如何管理诸多业务稳定的运行?围绕这些问题,笔者列举一些相关的基础设施:完整的构建打包流程/服务(统一的脚手架、上线服务等)、完整的测试环境、前端错误日志管理系统(收集、统计、报警)、前端资源离线化管理、前端资源增量下载服务以及针对Node应用的......
296 天前 / cultus
华相 阿里巴巴解决方案架构师 关注业务容器化,Kubernetes 管理,DevOps 实践等领域 本文根据华相在「Kubernetes & Cloud Native Meetup-广州站」现场演讲内容整理。 公众号后台回复关键字“弹性”可获取 PPT. 大家好,我是来自阿里云容器服务团队的华相。首先简单解释一下何为 Kubernetes 来帮助大家理解。Kuberentes 是一个生产可用的容器编排系统。Kuberentes 一方面在集群中把所有 Node 资源做一个资源池,然后它调度的单元是 Pod,当然 Pod 里面可以有多个容器。 就像一个人左手抓着 ECS 资源或计算资源,右手抓容器,然后把它们......
297 天前 / 九卷
作者简介 毛剑 B站 平台架构师&EP负责人 Agenda我是在大概2015年的时候加入B站,之前是负责整个B站的后端,大概在2018年的时候转架构师,监管一个EP的团队。其实之前虽然没有做EP的一些事情,但是在转团队的时候,其实也进行了这样的实践。自己也有一些想法,如何快速交付、如何监管代码质量、如何测试等等。 我的分享会分为三大块,首先什么是大仓库。 这个东西是大概一两年前,我当时听别人一个分享,介绍的是他们把所有的代码放在仓库里面如何工作。后来我也看到一些文章包括一些论文,有一篇文章非常经典,叫做谷歌为什么把数十亿代......
305 天前 / 头条机器人
【编者的话】本文作者通过一个简单的小项目详细介绍了如何使用Docker, GitLab, Portainer等组件搭建一套CICD流水线 长文预警 现如今,使用市面上的一些工具配置一套简单的CI/CD流水线并不是一件难事。给一个副项目弄一套这样的流水线也是一个学习许多东西的好方法。Docker,Gitlab,Portainer这些优秀的组件可以用来搭建这个流水线。 示例项目作为一名法国索菲亚科技园区(位于法国南部)的技术活动组织者,我经常被问到是否有办法知道所有即将举行的活动(会议,灌水,由当地协会组织的聚会等...)。由于此前并没有一个单独的地方列出所有的......