Jenkins

同城技术负责人纯手写:小团队构建大网站中小研发团队架构实战

♀尐吖头ヾ 提交于 2020-08-04 17:46:11
本书结合作者近几年的工作经验,总结了一套可直接落地、基于开源、成本低、可快速搭建的中小研发团队架构实践方法。本书共5篇22章,开篇是本书的导读;架构篇是设计思想的提升,包括企业总体架构、应用架构设计、统- -应用分层等;框架篇主讲中间件和工具的使用,包括消息队列、缓存、Job、 集中式日志、应用监控和微服务等:公共应用篇是技术与业务的结合,包括单点登录和企业支付网关:进阶篇是从架构到管理,包括技改案例、技术与业务的匹配与融合等。从架构、框架、公共应用,到案例实战和技术管理,本书将大公司的工程理念压缩应用到中小研发团队,使小团队也能构建大网站。 本书不仅适用于高级程序员、架构师、CTO,也适用于IT项目经理、技术经理,以及对架构技术感兴趣的中高级软件开发从业者。需要获取的小伙伴可以直接添加小助理vx:kaixindian331或者扫文末二维码即可免费获取! 前言 需求:没有人会读前言? ! 解决方案:把前言内容写好,并作为开篇第1章。 话不多说直接开始“展示” 第1篇开篇. 1可参考的才是有价值的(含案例和代码) 第2篇架构篇 2企业总体架构 3应用架构设计 4统一应用分层 5生产环境诊断工具 WinDbg. 第3篇框架篇 6 RabbitMQ 快速入门及应用 7 Redis 快速入门及应用 8任务调度Job. 9应用监控系统Metrics 10 集中式日志ELK 11微服务架构

解决Docker无法停止的方法

给你一囗甜甜゛ 提交于 2020-08-04 16:21:15
在本篇文章里小编给大家整理了关于docker容器无法stop的解决办法,有需要的朋友们可以参考下。 解决方法如下: 1、强制删除容器 docker rm -f jenkins 2、清理此容器的网络占用 docker network disconnect --force bridge jenkins docker 无法stop,kill容器 最近在遇到docker无法删除,或者kill相应的容器,要么是运行完docker stop xxx后发现xxx仍然存在,要么就根本无法删除,或者发现会报错,提示 Error response from daemon: Conflict, cannot remove the default name of the container 这种情况的可能原因是在过去的某个时刻,已创建了一个命名容器,然后您已将其保持运行状态。之后,主机因任何原因重新启动,并且没有优雅地终止容器。剩下的文件现在似乎阻止你重新生成旧名称的新容器,因为系统认为旧容器仍然存在。 我们先使用docker ps -a 看看所有容器的运行记录,以异常方式退出的容器将具有非零状态代码。根据名称搜索需要的名称,然后使用实际的十六进制代码将其删除 docker rm xxxxxx。 但是,有时候发现-a并没有多余信息。则可用手动删除容器方法。即删除/var/lib/docker

通过批处理调用SQL*Plus执行批量脚本

时间秒杀一切 提交于 2020-08-04 10:23:55
文章目录 在批处理文件中调用SQL*Plus命令执行批量脚本的场景 Windows命令终端连接数据库 方式1:登录进入SQL命令行 方式2:先进入SQL命令行,再登录 方式3: 使用用户名/密码连接指定机器 切换用户或服务器 批量脚本执行 已经登录 没有登录 批量脚本的内容 set echo off set feedback off spool 完整示例 常见设置与语句汇总 关于SQL*Plus的介绍和安装参考: Oracle SQL*Plus的安装与使用 在批处理文件中调用SQL*Plus命令执行批量脚本的场景 SQL Plus是Oracle提供的命令行工具,可以在命令行中输入命令执行查询、插入和建表和执行脚本SQL等操作。 对于应用开发人员,一般数据库相关操作使用界面工具sqldeveloper就可以了,但是如果是CI(持续集成),需要命令行执行一些脚本文件就需要使用到SQL Plus。 在CI中,可以使用Jenkins等工具串接部署前确认、代码获取、代码构建、代码部署、数据导入以及部署后通知等流程节点。而在数据导入这一步,如果使用的是Oracle数据库,则可以在Jenkins中配置批处理文件(本地、远程皆可)进行导入。也就是: Jenkins触发批处理 批处理调用SQL*PLus命令 通过SQL*PLus执行批量脚本,插入数据到数据库表。 接下来从登录

Track execution time per task in gradle script?

不羁的心 提交于 2020-07-31 06:26:47
问题 What is the most elegant way to track the execution times on how long a task took in a gradle build script? In an optimal case log the time directly same or next line to the task name :buildSrc:testClasses (0.518 secs) :fooBar (28.652 secs) 回答1: The cleanest solution is to implement a TaskExecutionListener (I'm sure you can handle that part) and register it with gradle.taskGraph.addTaskExecutionListener . 回答2: Just to elaborate on Peter Niederwieser's answer: We wanted to do the same thing,

GitLabRunner和流水线的数据采集与监控

妖精的绣舞 提交于 2020-07-29 08:59:15
本文主要阐述如何配置GitLabRunner和GitLabCI/CD流水线的数据采集与监控。 1.1 配置GitLab Runner监控 GitLab Runner本地具有Prometheus指标,可以访问嵌入式HTTP服务器,通过 /metrics 路径公开。该服务器(如果已启用)可以被Prometheus监视系统抓取,或通过任何其他HTTP客户端进行访问。 公开的信息包括: Runner业务逻辑指标(例如,当前正在运行的作业数) Go特定的流程指标(垃圾收集统计信息,goroutines,memstats等) 常规指标(内存使用情况,CPU使用情况,文件描述符使用情况等) 这些指标是运维人员监视和了解GitLab Runners的一种方式。例如,您可能会对Runner主机上的平均负载和作业数量感兴趣。 Runner默认是没有开启内置的HTTP服务,可以通过两种方式配置指标HTTP服务器: 在 config.toml 文件中配置全局选项 listen_address 。 在Runner启动的时候添加 --listen-address 命令选项。 在这里我直接修改的 config.toml 文件,内容参考如下: $ cat config.toml listen_address = "[::]:9252" concurrent = 10 check_interval = 30 log

自动化测试之Jenkins配置

空扰寡人 提交于 2020-07-29 08:47:54
UI自动化所用到的技术: selenium:不解释。 pytest:单元测试框架,因为它可以全局的配置浏览器驱动的开启与关闭,而且有很多好用的扩展插件,更适合来做UI自动化。 pytest-html:生成HTML测试报告,可以配置用例失败自动截图,这一点对UI自动化很重要。 pytest-rerunfailures:可以实现用例的失败重跑,这一点对UI自动化也很重要。 Selenium-page-objects:我封装的page objects库,以前也有介绍,让你编写page层更加简单。 Git/Bitbucket:我们的测试代码提交到Bitbucket上管理。 加入我们,群,642830685,领取最新软件测试资料大厂面试和Python自动化、接口、框架搭建学习资料! Jenkin做什么? 接下来才是重点,Jenkins主要用来运行UI自动化测试。接下来介绍一下我的配置。 配置Git,连接Bitbucket,检查项目代码更新。 定时任务,设置为每天晚上22:00运行。 构建命令,拉取代码,并运行所有用例。 设置HTML测试报告的路径 设置XML测试报告的路径。 配置发邮件功能。 大致效果如下: 可以点击HTML Report查看HTML报告,最新结果可以看到项目XML格式的报告。测试趋势图,这个是基于XML报告插件生成的。 在Jenkins中查看测试HTML测试报告。 当然

记一次通过Memory Analyzer分析内存泄漏的解决过程

跟風遠走 提交于 2020-07-29 06:30:00
状况描述: 最近项目新打的版本,过不了多长时间,项目就会挂掉。状况就是处于一种假死的状态。索引查询都很慢,几乎进行不了任何操作,慢慢卡死。 然后我们再发版时,只能基于之前打好的war包,替换或者增加class文件。 情况对比及分析: 由于之前代码做过一次大整顿,提交的代码比较多,所以通过回滚版本的方式解决,比较困难。一是因为整顿的成果不能白白抹杀;二是那么多文件,靠人工挨个对比查找,比较困难。 解决方案一: 之前, 一直对目前项目的打包方式心存质疑,所以这次发生问题时,我首先怀疑的对象是Jenkins和生产的Tomcat服务器。我通过堡垒机连接到生产时,发现通过Jenkins启动应用程序,会启动两个两个tomcat进程。 然后,这似乎更加坚定了我的看法,马上就找到了运维,但是经确认后,是没有问题的。一个是用root用户启动的,一个是用tomcat用户启动的。一个守护进程,一个应用进程。 解决方案二: 排除了服务器的问题,开始正面考虑程序的问题。 重新发项目有问题的版本,Dump下来的日志,然后迅速回滚观察。单台机器的dump日志有5个G: 通过Memory Analyzer分析,在Leak Supects Report 视图中,有如下分析结果: 上图所示,共有三类问题a、b、c;还有一些其他的,类型为d。 先来看第一个问题(后来发现,前几个问题都是同一个问题)

通过JaCoCo统计接口测试代码覆盖率

时光毁灭记忆、已成空白 提交于 2020-07-29 05:29:26
通过JaCoCo统计接口测试代码覆盖率 JaCoCo 需求:统计微服务接口测试的代码覆盖率 JaCoCo的ant与maven方法都是在编译期对单元测试的覆盖率统计 JaCoCo的可以开启一个agent服务收集运行过程中的代码执行覆盖率。 主要会用到jacoco 的两个功能:agent和cli 覆盖率收集 收集方式 JaCoCo使用 Sprint Boot测试项目 创建项目 工程结构 CountController.java 上传代码到github 覆盖率统计测试 启动项目 jenkins任务 构建报告 覆盖率收集 收集方式 鉴于接口测试是在微服务启动后运行的测试,所以在选用第二种agent的测试,会有两个比较麻烦的地方(列出了自己比较笨拙的解决方法) 源码获取:去git上再拉取一遍。 编译后字节码获取:按照测试环境构建再统计过程中再构建一遍。 统计覆盖率过程基本如: 微服务启动,同时启动agent收集覆盖率 接下来基本都是jenkins任务需要做的 git获取项目源码 使用构建工具编译源码 使用cli工具获取JaCoCo覆盖率统计文件 使用cli工具根据exec文件生成覆盖率报告 2. JaCoCo使用 参考jacoco官方使用文档:官方文档索引、agent帮助文档、cli帮助文档 JaCoCo官方给出了3种收集覆盖率文件的方式:file、tcpserver、tcpclient。

智能自研平台

|▌冷眼眸甩不掉的悲伤 提交于 2020-07-28 20:11:33
http://www.zsyai.top/dist 完全独立自主完成前后端架构设计及研发。主要技术包含(java+mysql+vue+jenkins+docker) 主要功能: 1.基础数据管理 2.一键生成前后端代码 3.流程管理 4.数据权限管理 5.编码生成管理 来源: oschina 链接: https://my.oschina.net/Logan626/blog/4276694

自动化测试框架知识,读这一篇就够了

被刻印的时光 ゝ 提交于 2020-07-28 18:29:41
自动化测试因其节约成本、提高效率、减少手动干预等优势已经日渐成为测试人员的“潮流”,从业人员日益清楚地明白实现自动化框架是软件自动化项目成功的关键因素之一。本篇文章将从 什么是真正的自动化测试框架、自动化脚本如何工作以及自动化测试框架会如何在测试过程中为你提供竞争优势 三个方面进行阐述,让您通过这一篇文章,踏入自动化测试框架的领域。 私信我领取视频教程 自动化软件测试交流群:642830685,领取最新软件测试资料大厂面试和Python自动化学习资料!一起学习交流 自动化测试的优势 自动化测试的流行和诸多优势并不意味着它是灵丹妙药,定制型项目、周期短、测试易用性等情况并不适合自动化测试。但不可否认的是,如果认真计划和执行自动化测试框架,确实会为软件开发和测试公司带来以下好处: 最短时间-最大收益 构建任何可行的自动化测试框架和自动化脚本都可以最大程度地减少编写和运行测试所花费的时间,从而可以在短时间内获得最大的输出。另外,拥有优秀的自动化测试框架后,人力就可以从诸如同步、错误管理、本地配置,报告生成、解释等这些常见问题中解脱出来。 可重复使用和可读的自动化代码 当你使用现有组件库中提到的代码时,大可以放心,它在以后的时间内仍然是可读和可重复使用的,并且所有相关任务(如报告、同步和故障排除)都将变得更易访问。 资源优化 一些公司没有如设想的一般从自动化实施中受益