采用的非jenkins-slave方式

jenkins配置:

Jenkins添加k8s master节点的服务器信息

在Jenkins容器内部与k8s master节点设置免费登录

# docker过滤查询出运行的Jenkins服务
$ docker ps | grep jenkins# 进入Jenkins容器内部
$ docker exec -it jenkins-server /bin/bash# 在 /root/.ssh 目录下生成了 id_rsa和id_rsa.pub,三次回车
$ ssh-keygen -t rsa# 进入生成秘钥的目录
$cd /root/.ssh/# 查看秘钥文件
$ ls###免密
ssh-copy-id -i /root/.ssh/id_rsa.pub ssh root@192.168.95.101

在Springboot工程准备k8s yml部署文件和修改Jenkinsfile

######Jenkinsfilepipeline {// 指定任务再哪个集群节点中执行agent any// 声明全局变量,方便后面使用environment {// harbor用户名harborUserName = 'DevOps'// harbor密码harborPassword = 'Dev12345'// harbor地址harborAddress = '192.168.95.131:9020'// harbor项目名harborRepo = 'repos'}stages {stage ('拉取git仓库代码') {steps {checkout([$class: 'GitSCM', branches: [[name: '${tag}']], extensions: [], userRemoteConfigs: [[credentialsId: 'b62b7b20-3b03-46e7-8f8b-09ab5efe0f12', url: 'http://192.168.95.130:8929/root/jenkins-publish-demo.git']]])}}stage ('通过maven构建项目') {steps {sh '/var/jenkins_home/maven/bin/mvn clean package -DskipTests'}}stage ('通过Sonarqube做质量检测') {steps {sh '/var/jenkins_home/sonar-scanner/bin/sonar-scanner -Dsonar.projectname=${JOB_NAME} -Dsonar.projectKey=${JOB_NAME} -Dsonar.source=./ -Dsonar.java.binaries=./target/ -Dsonar.login=c8483abbf03c0fd4212ffce2c1e93c5ae8cd65bd'}}stage ('通过Docker制作自定义镜像') {steps {sh '''cp -rf target/*.jar docker/docker build -t ${JOB_NAME}:$tag docker/'''}}stage ('将自定义镜像推送到Harbor') {steps {sh '''docker login -u ${harborUserName} -p ${harborPassword} ${harborAddress}docker tag ${JOB_NAME}:${tag} ${harborAddress}/${harborRepo}/${JOB_NAME}:${tag}docker push ${harborAddress}/${harborRepo}/${JOB_NAME}:${tag}'''}}stage ('将yml文件传到k8s-master上') {steps {sshPublisher(publishers: [sshPublisherDesc(configName: '192.168.95.101-k8s-master', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: '', sourceFiles: 'jenkins-publish-demo.yml')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])}}}post {// 构建成功通知success {dingtalk (robot: 'Dingding-robot',type: 'MARKDOWN',title: "success: ${JOB_NAME}",text: ["- 构建成功: ${JOB_NAME}项目!\n- 版本: ${tag}\n" +"- 持续时间: ${currentBuild.durationString}\n- 任务:#${JOB_NAME}"])}// 构建失败通知failure {dingtalk (robot: 'Dingding-robot',type: 'MARKDOWN',title: "fail: ${JOB_NAME}",text: ["- 构建失败: ${JOB_NAME}项目!\n- 版本: ${tag}\n" +"- 持续时间: ${currentBuild.durationString}\n- 任务:#${JOB_NAME}"])}}
}
#####k8s.ymlapiVersion: apps/v1
kind: Deployment
metadata:name: springboot-demonamespace: default
spec:selector:matchLabels:app: springboot-demotemplate:metadata:labels:app: springboot-demospec:containers:- image: IMAGE_NAMEimagePullPolicy: IfNotPresentname: springboot-demoports:- containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:name: springboot-demonamespace: default
spec:selector:app: springboot-demotype: NodePortports:- protocol: TCPport: 8080targetPort: 8080name: myapp-http

Jenkinsfile增加远程执行k8s master服务器执行流水线脚本步骤

// 所有的脚本命令都放在pipeline中
pipeline {// 指定任务再哪个集群节点中执行agent any// 声明全局变量,方便后面使用environment {// harbor用户名harborUserName = 'DevOps'// harbor密码harborPassword = 'Dev12345'// harbor地址harborAddress = '192.168.95.131:9020'// harbor项目名harborRepo = 'repos'}stages {stage ('拉取git仓库代码') {steps {checkout([$class: 'GitSCM', branches: [[name: '${tag}']], extensions: [], userRemoteConfigs: [[credentialsId: 'b62b7b20-3b03-46e7-8f8b-09ab5efe0f12', url: 'http://192.168.95.130:8929/root/jenkins-publish-demo.git']]])}}stage ('通过maven构建项目') {steps {sh '/var/jenkins_home/maven/bin/mvn clean package -DskipTests'}}stage ('通过Sonarqube做质量检测') {steps {sh '/var/jenkins_home/sonar-scanner/bin/sonar-scanner -Dsonar.projectname=${JOB_NAME} -Dsonar.projectKey=${JOB_NAME} -Dsonar.source=./ -Dsonar.java.binaries=./target/ -Dsonar.login=c8483abbf03c0fd4212ffce2c1e93c5ae8cd65bd'}}stage ('通过Docker制作自定义镜像') {steps {sh '''cp -rf target/*.jar docker/docker build -t ${JOB_NAME}:$tag docker/'''}}stage ('将自定义镜像推送到Harbor') {steps {sh '''docker login -u ${harborUserName} -p ${harborPassword} ${harborAddress}docker tag ${JOB_NAME}:${tag} ${harborAddress}/${harborRepo}/${JOB_NAME}:${tag}docker push ${harborAddress}/${harborRepo}/${JOB_NAME}:${tag}'''}}stage ('将yml文件传到k8s-master上') {steps {sshPublisher(publishers: [sshPublisherDesc(configName: '192.168.95.101-k8s-master', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: '', sourceFiles: 'jenkins-publish-demo.yml')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])}}stage ('远程执行k8s-master的kubectl命令') {steps {sh 'ssh root@192.168.95.101 kubectl apply -f /usr/local/deploy/k8s/jenkins-publish-demo.yml'}}}post {// 构建成功通知success {dingtalk (robot: 'Dingding-robot',type: 'MARKDOWN',title: "success: ${JOB_NAME}",text: ["- 构建成功: ${JOB_NAME}项目!\n- 版本: ${tag}\n" +"- 持续时间: ${currentBuild.durationString}\n- 任务:#${JOB_NAME}"])}// 构建失败通知failure {dingtalk (robot: 'Dingding-robot',type: 'MARKDOWN',title: "fail: ${JOB_NAME}",text: ["- 构建失败: ${JOB_NAME}项目!\n- 版本: ${tag}\n" +"- 持续时间: ${currentBuild.durationString}\n- 任务:#${JOB_NAME}"])}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/912030.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/912030.shtml
英文地址,请注明出处:http://en.pswp.cn/news/912030.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GraphQL API-1

简介 判断GraphQL方式 判断一个网站是否使用了GraphQL API,可以通过以下几种方法: 1. 检查网络请求 查看请求端点 GraphQL 通常使用单一端点,常见路径如: /graphql/api/graphql/gql/query 观察请求特征 POST 请求为主&…

推荐C++题目练习网站

LeetCode LeetCode是一个全球知名的编程练习平台,提供大量C题目,涵盖数据结构、算法、系统设计等。题目难度从简单到困难,适合不同水平的学习者。平台支持在线编写代码并即时运行测试,提供详细的题目讨论区和官方解答。 Codeforc…

Spring Cloud 微服务(服务注册与发现原理深度解析)

📌 摘要 在微服务架构中,服务注册与发现是整个系统运行的基础核心模块。它决定了服务如何被定位、调用和管理。 本文将深入讲解 Spring Cloud 中 Eureka 的服务注册与发现机制,从底层原理到源码分析,再到实际开发中的最佳实践&a…

【Linux 设备模型框架 kobject 和 kset】

Linux 设备模型框架 kobject 和 kset 一、Linux 设备模型概述二、kobject 与 kset 的核心概念1. kobject2. kset3. 关键数据结构 三、kobject 与 kset 的实现源码四、源码解析与使用说明1. kset 的创建与初始化2. kobject 的创建与属性3. sysfs 属性操作4. 用户空间访问示例 五…

一起学前端之HTML------(1)HTML 介绍

HTML 介绍 HTML 即超文本标记语言(HyperText Markup Language),它是构成网页的基础技术之一。HTML 借助各种标签(Tag)对网页的结构与内容加以描述。下面为你介绍其核心要点: 关键特性 标签结构&#xff…

整体迁移法迁移 Docker 镜像

docker添加了新的镜像数据盘,数据盘迁移步骤 使用整体迁移法迁移 Docker 镜像后,可以在确认迁移成功且新数据盘正常使用后,删除旧数据目录来释放空间1。 # 停止 Docker 服务 sudo systemctl stop docker # 停止 socket 监听器 sudo systemct…

智能IDE+高效数据采集,让数据获取接近0门槛

亮数据也有了自己的官方账号,大家可以关注:https://brightdata.blog.csdn.net/ 现在正有福利,有兴趣的伙伴可以访问链接: https://www.bright.cn/products/web-scraper/?utm_sourcebrand&utm_campaignbrnd-mkt_cn_csdn_jhx…

GNSS位移监测站在大坝安全中的用处

一、实时监测大坝变形 整体位移监测 GNSS(全球导航卫星系统)位移监测站能够实时、连续地获取大坝在三维空间中的位置信息,包括水平位移和垂直位移。大坝在长期运行过程中,受到水压力、温度变化、地基沉降等多种因素的影响&#x…

数字图像处理(一):从LED冬奥会、奥运会及春晚等等大屏,到手机小屏,快来挖一挖里面都有什么

数字图像处理(一) 一、什么是图像:图像就是多维数组图像的存储每一个格子有自己的颜色、深浅如何访问图像:1.对于RGB图像,共有R/G/B三个通道,通过代码来看。图像有单通道和多通道之分,访问时只需…

关于汉语和英语哪个更先进、历史更久的争论

引言:热议背后的思考​ ​ 在全球化浪潮的推动下,英语作为国际通用语言,在世界范围内广泛传播,其在国际商务、科技交流、学术研究等领域占据着重要地位。而汉语,作为世界上使用人口最多的语言之一,承载着…

在不联网的情况下,从可以联网的计算机上拷贝过来的程序报错:nu1301 无法加载源,https://api.nuget.org/v3/index.json

解决方法: 在联网的计算机上,找到nuget文件,拷贝到,不能联网的计算机的相应位置 设置加载这个nuget包,把nuget.org取消。 注意如果出现好多包都不能加载,可能是框架版本的问题,修改框架版本&am…

TCP 状态流程及原理详解:从连接建立到性能优化

一、TCP 协议概述与核心价值 TCP(Transmission Control Protocol,传输控制协议)是互联网协议栈中的核心协议之一,为网络通信提供可靠的、面向连接的数据传输服务。在当今复杂多变的网络环境中,深入理解 TCP 协议的状态…

【STM32 学习笔记】PWR电源控制

在电子设备中,待机(Standby)和睡眠(Sleep)是两种不同的省电模式。 1. 待机模式(Standby Mode):在待机模式下,设备仍然保持一定程度的活动,但大部分功能处于暂…

TCP 重传机制详解:原理、变体与故障排查应用

一、TCP 重传机制基础原理 1.1 可靠传输的核心保障 TCP(Transmission Control Protocol,传输控制协议)作为互联网中最常用的传输层协议,其核心特性之一是提供可靠的数据传输服务。在不可靠的网络环境中,数据包可能会…

Linux-HTTP服务和APACHE-学习笔记

序 欠10年前自己的一份笔记,献给今后的自己。 Internet Internet与中国 Internet最早来源于美国国防部高级研究计划局ARPA建立的ARPANet,1969年投入运行。1983年,ARPAnet分裂为两部分:ARPAnet和纯军事用的MILNET。当年1月&…

GitHub 趋势日报 (2025年06月26日)

📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 716 free-for-dev 677 Self-Hosting-Guide 618 Best-websites-a-programmer-shoul…

利用TACCO将单细胞注释transfer至空间组

目录 环境导入 关键函数定义 运行前设定 数据准备 正式运行与保存 可视化与概率调整 偶然发现的一个好用的transfer方法,计算效率相当高,解了我的燃眉之急hh 原方法来自由以色列耶路撒冷希伯来大学的Mor Nitzan、美国麻省理工学院-哈佛大学博德研…

在反向代理环境下精准获取客户端真实 IP 的最佳实践

目录 1 背景 2 常见误区 3 X-Forwarded-For 解析规则 4 real_ip() 函数 —— 一行代码落地 5 与框架方法的协同 6 Nginx 端最小配置 7 生产落地 checklist 8 常见 Q&A 9 总结 在反向代理环境下精准获取客户端真实 IP 的最佳实践 — 基于自定义 real_ip() 函数的完…

华为云Flexus+DeepSeek征文|基于Dify构建抓取金融新闻并发送邮箱工作流

华为云FlexusDeepSeek征文|基于Dify构建抓取金融新闻并发送邮箱工作流 一、构建抓取金融新闻并发送邮箱工作流前言二、构建抓取金融新闻并发送邮箱工作流环境2.1 基于FlexusX实例的Dify平台2.2 基于MaaS的模型API商用服务 三、构建抓取金融新闻并发送邮箱工作流实战…

疲劳检测与行为分析:工厂智能化实践

视觉分析算法赋能工厂疲劳与安全管理 一、背景与需求 在制造业中,疲劳作业是导致安全事故和效率下降的核心因素之一。传统人工巡检存在覆盖面不足、响应滞后等问题,而基于视觉分析的智能监控系统通过多算法协同,可实现全天候、高精度的疲劳…