Jenkins与sonar使用分享

目录

一、Jenkins新建发布任务

二、Jenkins基本流程

三、Jenkins构建部署脚本

四、Jenkins实用功能技巧

五、Jenkins与Sonar集成使用

六、Sonar简单介绍

七、Sonar名词介绍

八、TODO


一、Jenkins新建发布任务

1.添加服务器信息:Jenkins->系统管理->系统设置->SSH Servers添加

#关注 Remote Directory 配置:

The base directory for this configuration.

This directory must exist, it will not be created.
The publisher will only be able to place files below this directory.

Note that nothing prevents an exec from creating, deleting or moving files anywhere that the user has permission to.

2.新建或复制发布任务:Jenkins->新建

/bin/bash /data/jbc/shell/post_unified_build.sh springboot jbc_portal_admin jbc_portal_admin-commit.zip

或

/bin/bash /data/jbc/shell/post_unified_build.sh dubbo jbc_service_finance jbc_service_finance-commit.war

3.发起构建:Build with Parameters

二、Jenkins基本流程

三、Jenkins构建部署脚本

#/usr/bin/bash

export JAVA_HOME=/data/jdk1.8
MODULE_TYPE=$1
MODULE_NAME=$2
PACKAGE_NAME=$3
EXEC_ENV=$4
APP_HOME=/data/jbc/app
TOMCAT_HOME=/data/tomcat
BAK_DIR=/data/jbc/bak
BAK_FILE_NAME=$MODULE_NAME"_`date +%Y%m%d%H%M%S`.war"
TMP_APP_HOME=/tmp

if [ $# -lt 3 ];then
  echo "脚本参数必须包含模块类型、模块名称、包名称等信息"
  exit 0
fi

if [ ! -x "$BAK_DIR" ];then
    mkdir -p $BAK_DIR
    echo "创建备份文件夹成功"
fi

if [ "$MODULE_TYPE" == "dubbo" ];then  
  echo "开始自动化部署dubbo项目"
  mv $APP_HOME/*.war $BAK_DIR/$BAK_FILE_NAME
  if [ $? -eq 0 ];then
    echo "备份文件成功"
  else
    echo "备份文件失败,或没有需要备份的文件"
  fi
  cd $TOMCAT_HOME/bin && $TOMCAT_HOME/bin/shutdown.sh
  if [ $? -eq 0 ];then  
    mv $TMP_APP_HOME/$PACKAGE_NAME $APP_HOME/
    
    ./startup.sh  
    if [ $? -eq 0 ];then
          echo "启动服务成功"
    fi
  else
    echo "关闭服务失败,请检查"
  fi
else
  echo "开始自动化部署springboot:项目"
  cd $APP_HOME/$MODULE_NAME/ && ./stop.sh
  
  if [ $? -eq 0 ];then
    echo "关闭服务成功"
  else
    echo "关闭服务失败,请检查"
  fi
  
  mv $APP_HOME/*.zip $BAK_DIR/$BAK_FILE_NAME
  rm -fr $APP_HOME/$MODULE_NAME
  if [ $? -eq 0 ];then
    echo "备份文件成功"
  else
    echo "备份文件失败,或没有需要备份的文件"
  fi
  
  mv $TMP_APP_HOME/$PACKAGE_NAME $APP_HOME/
  unzip $APP_HOME/$PACKAGE_NAME -d $APP_HOME/
  
  
  if [ $? -eq 0 ];then
    cd $APP_HOME/$MODULE_NAME && chmod +x *.sh
    if [ "$EXEC_ENV" == "PRD" ];then
      ./start.sh
    else
      ./start-commit.sh
    fi
    
    if [ $? -eq 0 ];then
          echo "启动服务成功"
    fi
  fi
fi

四、Jenkins实用功能技巧

  • 4.1 查看工作空间:可通过查看查看最新构建的代码

  • 4.2 清理工作空间:清理构建缓存

  • 4.3 修改记录:可以查看每次构建的变更集

五、Jenkins与Sonar集成使用

1.登录sonar系统(默认用户名密码admin/admin)生成Jenkins登录sonar系统token凭证

 

2.Jenkins->系统设置->SonarQube servers配置sonar信息

3.Jenkins->全局工具配置->SonarQube Scanner,配置SonarQube Scanner信息

4.修改SonarQube Scanner配置文件sonar-scanner.properties


5.修改sonar系统配置文件/data/sonarqube-6.7.5/conf/sonar.properties,主要修改数据库相关配置

6.配置jenkins的job信息,构建环境处选择SonarQube环境

7.Jenkins PreSteps选择Execute SonarQube Scanner,并填写如下三项信息

8.Jenkins 构建后操作修改

9.由于sonar构建是基于target/classes编译后的文件的,所以第七步一定得是在之前完成。

六、Sonar简单介绍

SonarQube 是一个用于管理源代码质量开放平台,它可以从多个维度检测代码质量,可以快速的定位代码中潜在的或者明显的 Bug、错误。它支持包括 Java、Python、Php、C/C++、C#、HTML、JavaScript、PL/SQL、Objective C 等二十多种编程语言的代码质量管理与检测。可作为我们日常开发中检测代码质量的重要工具。

七、Sonar名词介绍

  • 6.1 Bugs Bug是出现了明显错误或是高度近似期望之外行为的代码。

  • 6.2 漏洞 漏洞是指代码中可能出现被黑客利用的潜在风险点

  • 6.3 坏味道 代码异味会困扰代码的维护者并降低他们的开发效率。主要的衡量标准是修复它们所需的时间。

  • 6.4 质量阈 项目的质量阈是在发布到生产环境之前所需要达到的一系列的条件标准。质量阈可以确保下一个版本的代码质量总能高于上一个版本。

  • 6.5 问题级别
BLOCKER(阻断):Bug with a high probability to impact the behavior of the application in production: memory leak, unclosed JDBC connection, .... The code MUST be immediately fixed.
CRITICAL(严重):Either a bug with a low probability to impact the behavior of the application in production or an issue which represents a security flaw: empty catch block, SQL injection, ... The code MUST be immediately reviewed.
MAJOR(主要):Quality flaw which can highly impact the developer productivity: uncovered piece of code, duplicated blocks, unused parameters, ...
MINOR(次要):Quality flaw which can slightly impact the developer productivity: lines should not be too long, "switch" statements should have at least 3 cases, ...
INFO(提示):Neither a bug nor a quality flaw, just a finding.
  • 6.6 圈复杂度即条件复杂度 其符号为VG或是M,圈复杂度用来衡量一个模块判定结构的复杂程度,数量上表现为线性无关的路径条数,即合理的预防错误所需测试的最少路径条数,圈复杂度大说明程序代码的判断逻辑复杂,可能质量低且难于测试和 维护。程序的可能错误和高的圈复杂度有着很大关系。

八、TODO

  • 7.1 版本发布前需在sonar平台检查自己代码质量

  • 7.2 sonar质量规则如何定义

  • 7.3 /data/git-2.17/bin/git ls-remote -h git@xx.xx.xx.x:jbc_service/jbc_service_los.git

 

 

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值