当前位置: 首页 > news >正文

jenkins+sonarqube+自动部署服务

一、jenkins 配置Pipeline 

 二、新建共享库执行脚本

   共享库可以是一个普通的gitlab项目,目录结构如下

 三、添加到共享库

Jenkins Dashboard–>系统管理–>系统配置–>Global Pipeline Libraries

 Name: 共享库名称,自定义即可;
Default version: 共享库版本,输入版本库分支名称、Tag 名称、Commit 值其中之一即可;
Load implicitly:如果选中,脚本将自动访问这个库,而不需要通过@Library请求它即隐式加载;
Allow default version to be overridden:如果选中,脚本可以通过在@Library注释中添加@someversion来选择库的自定义版本。否则,他们被限制使用您在这里选择的版本;
Include @Library changes in job recent changes:如果选中该选项,库中的任何更改都将包含在构建的更改集中,而更改库将导致为包含此库的管道运行新的构建。@Library(value=“name@version”, changelog=true|false),意思可以重写调用版本;
Cache fetched versions on controller for quick retrieval:如果选中此项,使用此库获取的版本将缓存在控制器上;
Retrieval method: 配置公共库获取的方式,并配置 Git 相关信息;
Library Path (optional):允许您设置从 SCM 根目录到库目录根目录的相对路径,可选参数;

四、如何引用共享库

在自定义的 Pipeline或者 Jenkinsfile 中通改过@Libray 形式进行引用,Jenkinsfile如下:

Jenkinsefile

@Library("mylib@main") _
def mytools = new org.devops.tools()
def sonarapi = new org.devops.sonarapi()pipeline {agent { label  "onemap-gch" }stages {stage('Pull Code') {steps {checkout([$class: 'GitSCM', branches: [[name: '*/dev']], extensions: [], userRemoteConfigs: [[credentialsId: 'b78b9ca3-a0ea-422b-b8d6-fa9dc030403a', url: 'http://192.168.2.16/develop/beautiful-village-java.git']]])}}stage ('Sonar Scan') {steps {script {def sonarqubeScanner = tool 'sonarqube-scanner-4.8';withSonarQubeEnv(credentialsId: 'sonar_token') {sh "${sonarqubeScanner}/bin/sonar-scanner " +"-Dsonar.projectName=beautiful-village " +"-Dsonar.projectKey=com.gj.map.village.beautiful-village " +"-Dsonar.projectVersion=1.0 " +"-Dsonar.sourceEncoding=utf8  " +"-Dsonar.sources=src/main/java  " +"-Dsonar.language=java  " +"-Dsonar.java.binaries=target/classes"}// (9) 暂停10s等待sonarqube扫描反馈sh "sleep 10s"// 方式1timeout(1) {def qg = waitForQualityGate()if (qg.status != 'OK') {error "未通过Sonarqube的代码质量阈检查,请及时修改!failure: ${qg.status}"} else {echo "successful"}}}}}stage('Maven Build') {steps {sh '/home/maven/apache-maven-3.8.5/bin/mvn clean package -DskipTests'}}stage('Publish Over SSH') {steps {sshPublisher(publishers: [sshPublisherDesc(configName: '241', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: 'cd /opt/workspace/beautiful-village && ./start.sh', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/beautiful-village', remoteDirectorySDF: false, removePrefix: 'target/', sourceFiles: 'target/*.jar')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])}}}
}

http://www.lryc.cn/news/44687.html

相关文章:

  • 【算法系列之动态规划III】背包问题
  • MONAI-LayerFactory设计与实现
  • Thinkphp 6.0路由的定义
  • Kafka系列之:深入理解Kafka集群调优
  • creator-泄漏检测之资源篇
  • 【DevOps】Jenkins 运行任务时遇到 FATAL:Unable to produce a script file 报错(已解决)
  • Web前端
  • 资源操作:Resources
  • GDB调试的学习
  • 熵值法综合评价分析流程
  • 使用Python Pandas库操作Excel表格的技巧
  • LeetCode练习七:动态规划上:线性动态规划
  • 基于正点原子F407开发版和SPI接口屏移植touchgfx完整教程(一)
  • Linux--进程间通信
  • hadoop伪分布式集群搭建
  • Qt 中的信息输出机制:QDebug、QInfo、QWarning、QCritical 的简单介绍和用法
  • C++读写excel文件的的第三方库
  • 【关于Linux中----多线程(一)】
  • 2023年全国最新安全员精选真题及答案34
  • 数据出境是什么意思?我国数据出境合规要求是什么?
  • Liunx——Git工具使用
  • 微软语音合成工具+基于Electron + Vue + ElementPlus + Vite 构建并能将文字转换为语音 MP3
  • Mongodb学习笔记2
  • 学习Tensorflow之基本操作
  • 《Spring系列》第2章 解析XML获取Bean
  • 小红书20230326暑假实习笔试
  • 【java】不要二、把字符串转成整数
  • 数据的质量管控工作
  • 【SpringBoot笔记29】SpringBoot集成RabbitMQ消息队列
  • 前端架构师-week2-脚手架架构设计和框架搭建