jenkins常用构建触发器,SonarQube代码审查

Posted 水木,年華

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jenkins常用构建触发器,SonarQube代码审查相关的知识,希望对你有一定的参考价值。

Jenkins项目构建细节(1)-常用的构建触发器

Jenkins内置4种构建触发器:
①触发远程构建
②其他工程构建后触发(Build after other projects are build)
③定时构建(Build periodically)
④轮询SCM(Poll SCM)

触发远程构建


触发构建url:http://192.168.66.101:8888/job/web_demo_pipeline/build?token=6666

其他工程构建后触发

1)配置需要触发的工程


2)构建前置工程后,当前项目也随之构建。

定时构建


定时字符串从左往右分别为: 分 时 日 月 周
一些定时表达式的例子:

30分钟构建一次:H代表形参 H/30 * * * * 10:02 10:32
2个小时构建一次: H H/2 * * *
每天的8点,12点,22点,一天构建3次: (多个时间点中间用逗号隔开) 0 8,12,22 * * *
每天中午12点定时构建一次 H 12 * * *
每天下午18点定时构建一次 H 18 * * *
在每个小时的前半个小时内的每10分钟 H(0-29)/10 * * * *
每两小时一次,每个工作日上午9点到下午5(也许是上午10:38,下午12:38,下午2:38,下午
4:38) H H(9-16)/2 * * 1-5

轮询SCM

轮询SCM,是指定时扫描本地代码仓库的代码是否有变更,如果代码有变更就触发项目构建。

注意:这次构建触发器,Jenkins会定时扫描本地整个项目的代码,增大系统的开销,不建议使用。

Jenkins项目构建细节(2)-Git hook自动触发构建

刚才我们看到在Jenkins的内置构建触发器中,轮询SCM可以实现Gitlab代码更新,项目自动构建,但是
该方案的性能不佳。那有没有更好的方案呢? 有的。就是利用Gitlab的webhook实现代码push到仓
库,立即触发项目自动构建。

安装Gitlab Hook插件

需要安装两个插件:
Gitlab Hook和GitLab

Jenkins设置自动构建:

再把生成的webhook URL配置到Gitlab中。

Gitlab配置webhook

使用root账户登录到后台,点击Admin Area -> Settings -> Network
勾选"Allow requests to the local network from web hooks and services"

2)在项目添加webhook
点击项目->Settings->Integrations

以下设置必须完成,否则会报错!
Manage Jenkins->Configure System

测试成功

Jenkins项目构建细节(3)-Jenkins的参数化构建

有时在项目构建的过程中,我们需要根据用户的输入动态传入一些参数,从而影响整个构建结果,这时
我们可以使用参数化构建。
Jenkins支持非常丰富的参数类型


改动pipeline流水线代码

接下可以通过输入gitlab项目的分支名称来部署不同分支项目。

Jenkins+SonarQube代码审查 - 安装SonarQube

SonarQube是一个用于管理代码质量的开放平台,可以快速的定位代码中潜在的或者明显的错误。目前
支持java,C#,C/C++,Python,PL/SQL,Cobol,JavaScrip,Groovy等二十几种编程语言的代码质量管理与检
测。

官网:https://www.sonarqube.org/

环境要求

安装SonarQube

1)安装mysql
2)安装SonarQube
在MySQL创建sonar数据库

下载sonar压缩包:

https://www.sonarqube.org/downloads/

解压sonar,并设置权限

unzip sonarqube-6.7.4.zip 解压
mkdir /opt/sonar 创建目录
mv sonarqube-6.7.4/* /opt/sonar 移动文件
useradd sonar 创建sonar用户,必须sonar用于启动,否则报错
chown -R sonar. /opt/sonar 更改sonar目录及文件权限

修改sonar配置文件

vi /opt/sonarqube-6.7.4/conf/sonar.properties


启动sonar

cd /opt/sonarqube-6.7.4
su sonar ./bin/linux-x86-64/sonar.sh start 启动
su sonar ./bin/linux-x86-64/sonar.sh status 查看状态
su sonar ./bin/linux-x86-64/sonar.sh stop 停止
tail -f logs/sonar.logs 查看日志

访问sonar

http://192.168.66.101:9000

创建token

Jenkins+SonarQube代码审查(2) - 实现代码审查


安装SonarQube Scanner插件

Jenkins安装SonarQube Scanner软件
Manage Jenkins->Global Tool Configuration

添加SonarQube凭证

进行SonarQube配置
Manage Jenkins->Configure System->SonarQube servers

在项目添加SonaQube代码审查(非流水线项目)

# must be unique in a given SonarQube instance 
sonar.projectKey=web_demo 
# this is the name and version displayed in the SonarQube UI. Was mandatory prior to SonarQube 6.1. 
sonar.projectName=web_demo 
sonar.projectVersion=1.0 
# Path is relative to the sonar-project.properties file. Replace "\\" by "/" on Windows. # This property is optional if sonar.modules is set. 
sonar.sources=. 
sonar.exclusions=**/test/**,**/target/** 
sonar.java.source=1.8 sonar.java.target=1.8 
#Encoding of the source code. Default is default system encoding
sonar.sourceEncoding=UTF-8

构建之后在,sonarQube UI界面可以审查到

在项目添加SonaQube代码审查(流水线项目)

1)项目根目录下,创建sonar-project.properties文件

# must be unique in a given SonarQube instance 
sonar.projectKey=web_demo 
# this is the name and version displayed in the SonarQube UI. Was mandatory prior to SonarQube 6.1. 
sonar.projectName=web_demo 
sonar.projectVersion=1.0 
# Path is relative to the sonar-project.properties file. Replace "\\" by "/" on Windows. # This property is optional if sonar.modules is set. 
sonar.sources=. 
sonar.exclusions=**/test/**,**/target/** 
sonar.java.source=1.8 
sonar.java.target=1.8 
# Encoding of the source code. Default is default system encoding sonar.sourceEncoding=UTF-8

)修改Jenkinsfile,加入SonarQube代码审查阶段

pipeline  
  agent any 
  stages  
        stage('拉取代码')  
          steps  
           checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: '68f2087f-a034-4d39-a9ff-1f776dd3dfa8', url: 'git@192.168.66.100:itheima_group/web_demo.git']]]) 
           
       
       stage('编译构建')  
        steps  
          sh label: '', script: 'mvn clean package' 
           
      
      stage('SonarQube代码审查')  
        steps 
          script  scannerHome = tool 'sonarqube-scanner' withSonarQubeEnv('sonarqube6.7.4')  sh "$scannerHome/bin/sonar-scanner" 
           
         
     
     stage('项目部署')  
       steps  deploy adapters: [tomcat8(credentialsId: 'afc43e5e-4a4e-4de6-984f- b1d5a254e434', path: '', url: 'http://192.168.66.102:8080')], contextPath: null, war: 'target/*.war' 
       
      
  
  post  always  emailext( subject: '构建通知:$PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS!', body: '$FILE,path="email.html"', to: '@1074122847qq.com' 
     ) 
     
   
  

3)到SonarQube的UI界面查看审查结果

以上是关于jenkins常用构建触发器,SonarQube代码审查的主要内容,如果未能解决你的问题,请参考以下文章

Jenkins——Jenkins项目构建细节(触发构建和)和SonarQube代码审查

从 Jenkins 的 pom 文件中自动派生强制性 SonarQube 属性

sonarqube代码核查+jenkins构建判断

sonarqube代码核查+jenkins构建判断

sonarqube代码核查+jenkins构建判断

如何将每个 Jenkins 构建链接到它自己的 SonarQube 分析版本?