Jenkins集成SonarQube
本文主要介绍jenkins与sonarQube的集成,以及使用pipeline去调用sonarqube检测我们的代码质量
sonarqube设置1.打开Force user authentication2.创建token,并复制下来3.添加Webhooks(格式 http://[ip]:[port]/sonarqube-webhook/),注意地址最后面要有 /
jenkins设置下载插件在插件中心下载安装 SonarQube Scanner for Jenkins
配置凭据
配置sonarqube servers在 系统配置 里找到 SonarQube servers,Server authentication token选择刚刚添加的凭据
配置sonarqube scanner在 全局工具配置 中配置sonarqube scanner
pipelinepipeline { agent { label 'tomcatVM' } environment { //git仓库地址 ...
Linux下安装SonarQube
SonarQube是管理代码质量的开放平台,可以快速的定位代码中潜在的或者明显的错误
准备工作下载sonar:https://www.sonarqube.org/downloads/,我使用的是7.0版本
安装mysql需要事先装好mysql,需要5.6以上版本,我这边安装的是5.7.30
创建sonar用户CREATE USER 'sonar'@'%' IDENTIFIED BY 'sonar';CREATE DATABASE sonar CHARACTER SET UTF8;GRANT ALL PRIVILEGES ON sonar.* TO 'sonar'@'%';
创建sonar系统用户useradd sonarpasswd sonar
安装sonar#解压unzip sonarqube-7.0.zip#修改配置文件conf/sonar.propertiessonar.jdbc.username=sonarsonar.jdbc.password=sonarsonar.jdb ...
CentOS7配置阿里云yum源
关闭selinux#临时关闭setenforce 0#永久关闭,将SELINUX=disabled ,需要重启后生效vi /etc/selinux/config
配置yum源yum install -y wgetcd /etc/yum.repos.dmv CentOS-Base.repo CentOS-Base.repo.bakwget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repoyum clean allyum makecacheyum update
记一次生产内存泄漏问题
早上收到生产服务器JVM堆内存占用率达到80%的邮件报警,来到公司用Java VisualVM分析。
从图上可以看到有个idle_connection_reaper的线程占用内存达到79%然后我们dump下hprof文件分析看看这个线程应该跟阿里云oss代码相关
用MemoryAnalyzer工具再次分析一下hprof文件这个org.apache.http.impl.conn.PoolingHttpClientConnectionManager实例占用过多的内存从com.aliyun.oss.ClientBuilderConfiguration可以判断跟oss连接有关,找了oss相关的连接代码果然开发在new OSSClient的时候,没有调用ossClient.shutdown,造成内存泄漏
Mailx通过465端口发送邮件
由于阿里云关闭了25端口,所以需要修改mailx端口改为465发送邮件
安装Mailxyum install -y mailx
开启SMTP服务并获取授权码登录邮箱-设置-账户1、开启SMTP服务2、获取授权码
设置mail.rc在/etc/mailx.rc最后一行添加
set from=XXXXXXXX@qq.comset smtp=smtps://smtp.qq.com:465set smtp-auth-user=XXXXXXXXX@qq.com#邮箱SMTP授权码set smtp-auth-password=*********set smtp-auth-loginset ssl-verify=ignoreset nss-config-dir=/tmp/.certs
设置证书mkdir -p /root/.certs/echo -n | openssl s_client -connect smtp.qq.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ~/.certs/ ...
GitLab配置邮箱
开启相应的邮箱服务我这边使用的qq邮箱,获取授权码
配置gitlab.rbvim /etc/gitlab/gitlab.rb
#第一处gitlab_rails['smtp_enable'] = truegitlab_rails['smtp_address'] = "smtp.qq.com"gitlab_rails['smtp_port'] = 465gitlab_rails['smtp_user_name'] = "你的邮箱@qq.com"gitlab_rails['smtp_password'] = "授权码"gitlab_rails['smtp_domain'] = "qq.com"gitlab_rails['smtp_authentication'] = "login"gitlab_rails['smtp_enable_start ...
ERROR Maven JVM terminated unexpectedly with exit code 137
jenkins利用maven打包,job控制台出现ERROR Maven JVM terminated unexpectedly with exit code 137这是由于机器内存不足导致的
阿里云PTS压测大量请求出现502、503
描述在阿里云文档那边找到了一篇类似的文档说这种情况可能是由于SLB单IP限流导致的,我在压测的时候来源IP大概有5个,然后提了工单问了技术,看看是不是SLB限流导致的,但阿里云那边说不是SLB导致的。接着我就一边压测一边看后端应用服务器日志,我的整个项目是SLB分发到ECS服务器的tomcat上。
错误压测的时候发现日志输出错误日志了
javax.servlet.ServletException: org.springframework.data.redis.RedisConnectionFailureException: Cannot get Jedis connection; nested exception is redis.clients.jedis.exceptions.JedisExhaustedPoolException: Could not get a resource since the pool is exhausted at org.apache.jsp.api.cand.intv.ajaxHandInInfo_jsp._jspService(ajaxHa ...
Kubernetes笔记二(pod控制器的创建与管理)
pod控制器由控制器管理器kube-controller-manager组件提供,pod控制器主要用于对pod创建、修改、删除等操作。常见的pod控制器有Replication Controller、ReplicaSet、Deployment、DaemonSet、StatefulSet、Job、CronJob。
ReplicaSet控制器ReplicaSet控制器主要用于保证pod的副本数在任何时候都能精确满足我们的期望值(1)ReplicaSet控制器主要功能 1)保证pod的副本数满足期望值 2)保证pod健康运行 3)弹性伸缩(2)资源清单ReplicaSet控制器资源定义与pod相似,其spec字段嵌套的子字段及作用如下 replicas:期望的pod副本数目 selector:当前控制器匹配pod对象的标签选择器,支持matchLabels和matchExpressions两种匹配机制 template:用于创建pod时使用的pod资源模版 minReadySeconds:新建的pod在启动多长时间后,容器未发生崩溃等异常情况,则视 ...
Kubernetes笔记一(pod资源创建与管理)
pod是kubernetes最重要的基本概念,它是kubernetes系统中最小的调度单位。每一个pod都有一个特殊的pause根容器,kubernetes为每个pod都提供了一个根容器,如果单独对一组容器进行管理,那么一个容器死亡,到底算不算整体死亡,为了解决这个难题,巧妙的设计了pause根容器对业务容器进行管理,所有的业务容器共享pause容器的IP、挂载的volume,简化了容器之间的通信问题。 pod分为普通的pod和静态pod。普通pod一旦被创建,就会被放入etcd中存储,随后被kubernetes master调度到node上进行绑定,接着pod被node上的kubelet进程实例化成一组相关的docker容器并启动。静态pod比较特殊,它并不存储在etcd里,而是被保存在某个具体node上的一个具体文件中。
pod管理Pod在kubernetes中也是一种资源,pod资源的定义是通过“apiVersion”、“kind”、“metadata”、“spec”、“status”五个部分组成,除了“status”字段中的信息是系统自动生成外,其余各字段都需要管理员定 ...