gitlab代码merge或push事件触发jenkins job

news/2024/7/5 3:30:16

1. jenkins安装generic webhook trigger plugin并重启服务,这个插件允许通过webhook接收器触发jenkins任务

2. 在jenkins的job配置页面,选择构建触发器-generic webhook trigger,(URL:http://JENKINS_URL/generic-webhook-trigger/invoke), 设置一个token

3. 进入gitlab的一个project,选择settings-integrations, 添加webhook,输入jenkins中的URL和token,并选择Trigger events(push events, Merge request Events), 选择Test,测试触发jenkins job,正常提示 HTTP status 200.

tips1: 仓库本身已有提交或merge request,否则出现“hook execution failed: ensure the project has merge request”错误。

https://blog.csdn.net/m0_62451624/article/details/122057046

效果:jenkins接收到webhook请求后,根据配置的构建步骤自动拉去最新的代码、执行编译、运行测试等。

=============================

在sonarqube创建一个项目

定义project key, project name, 创建或使用令牌,根据提示对本地项目进行扫描

jenkins在构建时执行sonar扫描

在构建参数中设置,在pipeline脚本中使用

build_parameter

mvn clean verify org.sonarsource.scanner.maven:sonar-maven-plugin:3.7.0.1746:sonar -Dsonar.projectKey=attack-defense-backend -Dsonar.host.url=http://172.16.2.246:9000 -Dsonar.token=xxxxxxx

遇到的问题:

1. Failed to execute goal org.sonarsource.scanner.maven:sonar-maven-plugin:3.7.0.1746:sonar(default-cli) on project attack-defense-backend: Execution default-cli of goal org.sonarsource.scanner.maven:sonar-maven-plugin:3.7.0.1746:sonar failed: An API incompatibility was encountered while executing org.sonarsource.scanner.maven:sonar-maven-plugin:3.7.0.1746:sonar:java.lang.UnsupportedClassVersionError: org/sonar/batch/bootstrapper/EnvironmentInformation has been compiled by a more recent version of the Java Runtime(class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0

plugin 使用jdk11编译,但是当前机器是jdk1.8,不能执行

plugin:3.6.0.1398, 3.5.0.1254, 3.3.0.603都是jdk11

2. Failed to execute goal org.sonarsource.scanner.maven:sonar-maven-plugin:3.7.0.1746:sonar(default-cli) on project attack-defense-backend: Unable to execute SonarQube: Fail to get bootstrap index from server: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target.

访问https网站时本地java程序(sonar插件)没有服务器端的证书

解决方法;

只需导出新服务器上证书的完整证书链,在信任库中导入服务器的证书,其中cacerts是JRE安装中的那个。对于8以下的java版本,请使用$JAVA_HOME/jre/lib/security/cacerts

keytool -import -v -trustcacerts -alias mySonarServer -file sonarServer.crt -keystore cacerts

  • JVM没有关闭证书验证的选项,Maven wagon有几个选项:stackoverflow.com/questions/21252800/但是Sonar插件不使用wagon,并且没有提供禁用SSL证书验证的方法。

https://cloud.tencent.com/developer/ask/sof/940424/answer/1337896

关于Java:Maven声纳插件:信任自签名证书 | 码农家园

 验证失败_Sonarqube 委托对 Gitlab 的身份验证失败_IT常识

=================================

创建jenkins job,需要创建一个流水线项目(devSecOps),并进行相应的配置:

流水线项目名称:git仓库名+分支名+频次(是否执行脚本中的某些步骤)

General

1. 丢弃旧的构建,保持构建的最大个数 10

2. 参数化构建过程

2.1 布尔值参数

aggregation_project 是否聚合项目

virus_scan 是否执行clamav扫描

sonar_check 是否执行sonar扫描 // 可以使用scanner或sonar-maven-plugin插件

fortify_check 是否执行fortify扫描

checkmarx_SAST 是否执行checkmarx扫描

unit_testing 是否进行单元测试

run_building 是否执行源码编译

docker_image 是否进行容器镜像制作

image_scan 是否进行容器镜像扫描

dependency_check 是否执行依赖组件的漏洞扫描

k8s_deployment 是否部署到k8s环境

auto_test 是否执行自动化测试

2.2 字符串参数Persistent String Parameter

email_recipients  邮件接收者

jenkins_node  k8s-slave-all // jenkins slave 节点

git_repository xxx.git // 仓库路径

build_parameter  mvn clean package // 构建命令

builddocker_parameter   sh docker_build.sh $project_version.$BUILD_NUMBER //执行镜像命令

depoly_k8s  csb-k8s-product-test-deploy // 部署的k8s环境 

deploy_file metric-background-k8s-deploy2.yaml  k8s部署文件,jenkins插件会自动使用此文件到k8s中进行部署。部署文件支持识别环境变量,如$project_version, $BUILD_NUMBER

exec_cmd  部署环境额外的命令

autotaskTemplateId  任务模板id,作为自动化测试的输入

autoTestId  测试单Id,作为自动化测试的输入,测试结束后向测试单回填结果

project_version 1.4 项目的版本号

构建触发器

选择generic webhook trigger,用于接收来自gitlab的触发请求

高级项目选项

流水线

pipeline script from SCM

Git

git@xxxx/pipeline.git

Credentials(配置全局可访问git仓库的用户)

branches to build (指定脚本的分支)

Addtional Behaviours : Clean before checkout: Delete untracked nested repositories.

脚本路径: CommonBuild.groovy (主流水线脚本,还会调用其他子功能)

=========================================

手动构建

如果有参数化构建,Jenkins配置后,选择立即构建,需要配置参数,即触发构建。如果没有参数化构建,则会立即构建。

==========================

jenkins详细使用,参考Devops 05 Jenkins_jenkins export_睡神之首的博客-CSDN博客


http://lihuaxi.xjx100.cn/news/1356286.html

相关文章

单例模式(java)

目录 概述 结构 代码实现 饿汉式(静态变量) 饿汉式(静态代码块) 懒汉式(双重检查方式) 概述 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式…

doris回归测试

doris提交pull request时一般要包含回归测试&#xff0c;回归测试的目录在doris/regression-test&#xff0c; 有文档较好的说明了回归测试过程: 回归测试 - Apache Doris 跑回归测试就是执行doris目录下的 ./run-regression-test.sh --run <回归测试名> 这个<回…

前端需要知道的三个不常用的函数式编程范式

1、柯里化函数 柯里化函数&#xff08;Currying&#xff09;定义&#xff1a;是把接受多个参数的函数变换成接受一个单一参数的函数**&#xff08;最初函数的第一个参数&#xff09;的函数&#xff0c;能夠返回接受余下的参数而且返回结果的新函数**的技术 作用&#xff1a;减…

【问题总结】Docker环境下备份和恢复postgresql数据库

目录 文章目录 以从备份恢复forest_resources库为例一、备份数据库二、需要还原的数据库准备1 删除掉远程的库。2 重新创建一个空的库。可以使用sql3 找到数据库存放的路径&#xff0c;并将备份文件上传到对应的路径下 三、 进入docker容器内部&#xff0c;执行数据库恢复附录…

Jenkins (一)

Jenkins (一) Docker Jenkins 部署 一. 安装 jenkins $ mkdir -p /home/tester/data/docker/jenkins $ vim jenkins:lts-jdk11.sh./jenkins:lts-jdk11.sh 内容 #! /bin/bash mkdir -p /home/tester/data/docker/jenkins/jenkins_homesudo chown -R 1000:1000 /home/tester/da…

注解和反射:(一)注解

P1 什么是注解 注解 Annotation 作用 不是程序本身&#xff0c;但可以对程序作出解释。&#xff08;这点和**注释Comment没区别&#xff09;可以被其他程序&#xff08;如&#xff1a;编译器&#xff09;读取 格式 // 注释名 Override// 还可以添加一些参数值 SuppressWar…

Docker 仓库与注册表: 构建可靠的容器镜像生态系统

&#x1f337;&#x1f341; 博主 libin9iOak带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33…

韧性数据安全体系组成:运行保障与底线防御安全 |CEO专栏

「构建适应性进化的韧性数据安全体系」专栏&#xff0c;为你解读美创科技在数据安全的最新探索实践。 上期内容&#xff08;点击此处跳转&#xff09;&#xff0c;专栏重点分享了韧性数据安全体系的重要组成——资产和资产安全。数据资产是网络中最为确定性的存在&#xff0c;以…