jenkinsfile实现镜像构建、发布
实现代码打包编译
容器镜像构建
jenkins编译采用docker构建。
遇到问题:
1.需要限制docker 容器的内存和cpu
docker {
image ‘ccr.ccs.tencentyun.com/libary/maven:3.6.3-jdk-8’
args “-v ${WORKSPACE}:/workspace --memory=‘2048m’ --cpus=‘1’”
}
2.jenkins构建需要限制构建时间。避免job任务构建时间太长
timeout(time: 30, unit: ‘MINUTES’) { //限制30分钟的构建时间。超过30分钟自动断开
pipeline {agent anyparameters {choice(name: 'GIT_BUILD_REF',choices: ['test', 'master'],description: 'Select the Git branch or commit to build')}environment {GIT_REPO_URL = "http://192.168.1.2/djb/djb-cloud.git"HARBOR_REGISTRY = "192.168.2.1:5000"HARBOR_HOST= "example.com"DOCKER_BUILD_CONTEXT = './module-system/djb-module-system-biz'CODING_DOCKER_IMAGE_NAME = 'ops/djb-module-system'DOCKERFILE_PATH = './module-system/djb-module-system-biz/Dockerfile'HARBOR_CREDENTIALS_ID = "fd3362aa-xx" //凭据idCREDENTIALS_ID = "0ee6d913-xxx"DEPLOYMENT_NAME = "djb-module-system-deploy"CONTAINER_NAME = "djb-module-system-deploy"WEBHOOK_URL ="https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxx123"}stages {stage('检出') {steps {checkout([$class: 'GitSCM',branches: [[name: "${params.GIT_BUILD_REF}"]],userRemoteConfigs: [[url: "${env.GIT_REPO_URL}",credentialsId: "${env.CREDENTIALS_ID}"]]])script {// 获取当前的Git提交IDenv.GIT_COMMIT_ID = sh(script: 'git rev-parse --short HEAD', returnStdout: true).trim()// 获取当前时间env.CURRENT_TIME = sh(script: 'date +%Y%m%d%H%M%S', returnStdout: true).trim()// 生成版本号env.DOCKER_IMAGE_VERSION = "${params.GIT_BUILD_REF}-${env.GIT_COMMIT_ID}-${env.CURRENT_TIME}"} }}stage('build') {agent {docker {image 'ccr.ccs.tencentyun.com/libary/maven:3.6.3-jdk-8'args "-v ${WORKSPACE}:/workspace --memory='2048m' --cpus='1'"}}steps {script {timeout(time: 30, unit: 'MINUTES') {sh "cd /workspace && ls -l"sh 'pwd'sh "ls -l && mvn -v"sh 'cd /workspace && pwd && mvn clean package -Dmaven.test.skip=true'}} }}stage('构建镜像并推送到 Harbor Docker 制品库') {steps {script {// 使用 withRegistry 来处理 HTTP 登录docker.withRegistry("https://${env.HARBOR_REGISTRY}", "${env.HARBOR_CREDENTIALS_ID}") {def dockerImage = docker.build("${env.CODING_DOCKER_IMAGE_NAME}:${env.DOCKER_IMAGE_VERSION}", "-f ${env.DOCKERFILE_PATH} ${env.DOCKER_BUILD_CONTEXT}")dockerImage.push()env.IMAGE_NAME = "${env.HARBOR_HOST}/${env.CODING_DOCKER_IMAGE_NAME}:${env.DOCKER_IMAGE_VERSION}" }}}}stage('部署到 Kubernetes') {when {expression { return params.GIT_BUILD_REF == 'test' }}steps {script {// 使用 withKubeConfig 来处理 Kubernetes 配置withKubeConfig(credentialsId: 'tke-cluster-credentials') {sh "kubectl set image deployment/${env.DEPLOYMENT_NAME} ${env.CONTAINER_NAME}=${env.IMAGE_NAME} --record"}}}}}post {success {script {def message = """{"msgtype": "text","text": {"content": "Jenkins 部署成功!\\n部署镜像号: ${env.IMAGE_NAME}\\n部署状态:\\n${env.DEPLOYMENT_NAME}:成功"}}"""sh """curl -X POST ${WEBHOOK_URL} \-H 'Content-Type: application/json' \-d '${message}'"""}}failure {script {def message = """{"msgtype": "text","text": {"content": "Jenkins 部署失败!\\n部署镜像号: ${env.IMAGE_NAME}\\n部署状态:\\n${env.DEPLOYMENT_NAME}:失败"}}"""sh """curl -X POST ${WEBHOOK_URL} \-H 'Content-Type: application/json' \-d '${message}'"""}}}
}
相关文章:
jenkinsfile实现镜像构建、发布
实现代码打包编译 容器镜像构建 jenkins编译采用docker构建。 遇到问题: 1.需要限制docker 容器的内存和cpu docker { image ‘ccr.ccs.tencentyun.com/libary/maven:3.6.3-jdk-8’ args “-v ${WORKSPACE}:/workspace --memory‘2048m’ --cpus‘1’” } 2.jenkins构建需要限制…...

OSPF路由计算
关于OSPF路由的基础概述可以看看这篇博客 动态路由---OSPF协议基础https://blog.csdn.net/ZZZCY2003/article/details/141335261 区域内路由计算 LSA概述 LSA是OSPF进行路由计算的关键依据OSPF的LSU报文可以携带多种不同类型的LSA各种类型的LSA拥有相同的报文头部 重要字段解…...

【设计模式-迭代】
定义 迭代器模式(Iterator Pattern)是一种行为型设计模式,用于提供一种顺序访问集合对象元素的方式,而不暴露该对象的内部表示。通过迭代器,客户端可以在不需要了解集合实现的细节的情况下遍历集合中的元素。 UML图 …...

k8s搭建双主的mysql8集群---无坑
《k8s搭建一主三从的mysql8集群---无坑-CSDN博客》通过搭建一主三从,我们能理解到主节点只有1个,那么承担增删改主要还是主节点,如果你在从节点上去操作增删改操作,数据不会同步到其他节点。本章我们将实现多主(双主&a…...
Iterm2配置主题和Oh-My-Zsh
文章目录 一、配置主题1.1 安装使用git1.2 安装手册1.2.1 激活使用主题 二、配置oh-my-zsh2.1、oh-my-zsh插件2.2、oh-my-zsh主题 [Zsh](http://zsh.org/)2.2.1、Install using Git2.2.2、Install manually2.2.3、Activating theme2.2.4、Install using [zplug](https://github…...

html+css+js实现step进度条效果
实现效果 代码实现 HTML部分 <div class"box"><ul class"step"><li class"circle actives ">1</li><li class"circle">2</li><li class"circle">3</li><li class&quo…...
OpenCV视频I/O(8)视频采集类VideoCapture之从视频源中读取一帧图像函数read()的使用
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 抓取、解码并返回下一个视频帧。 cv::VideoCapture::read() 是 VideoCapture 类的一个成员函数,用于从视频源中读取一帧图像. 该方法…...

深度学习500问——Chapter17:模型压缩及移动端部署(2)
文章目录 17.4.6 低秩分解 17.4.7 总体压缩效果评价指标有哪些 17.4.8 几种轻量化网络结构对比 17.4.9 网络压缩未来研究方向有哪些 17.5 目前有哪些深度学习模型优化加速方法 17.5.1 模型优化加速方法 17.5.2 TensorRT加速原理 17.5.3 TensorRT如何优化重构模型 17.5.4 Tensor…...
【C#】DllImport的使用
DllImport 是 C# 中用于从非托管 DLL(动态链接库)中导入函数的一个特性。这个特性允许你在 .NET 应用程序中调用由其他语言编写的函数,如 C 或 C。使用 DllImport 可以让你重用现有的非托管代码,而不需要重新实现这些功能。 下面…...

基于 Redis 实现滑动窗口的限流
⏳ 限流场景:突发流量,恶意流量,业务本身需要 基于 Redis 实现滑动窗口的限流是一种常见且高效的做法。Redis 是一种内存数据库,具有高性能和支持原子操作的特点,非常适合用来实现限流功能。下面是一个使用 Redis 实现…...

Camera Raw:打开图像
在图像工作流程中,无论是 Raw 格式图像文件还是 JPEG、TIFF 文件,都可以先使用 Camera Raw 打开并调整后,再进入其它 Adobe 软件如 Photoshop 中进行进一步的编辑和处理。 一、打开 Raw 格式图像 1、通过 Adobe Bridge 打开 在 Adobe Bridge …...

RK3588主板PCB设计学习(六)
可以在其它层对过孔进行削盘处理, 可以看到,这里有些过孔用不上,在这一层进行了削盘处理: 对于这种电源层进行铺铜操作的时候,如果不进行削盘处理的话这些焊盘可能导致这个电源层面不完整,存在割裂的风险&a…...

论文阅读(十一):CBAM: Convolutional Block Attention Module
文章目录 IntroductionConvolutional Block Attention ModuleExperimentsConclusion 论文题目:CBAM: Convolutional Block Attention Module(CBAM:卷积注意力机制) 论文链接:点击跳转 代码链接:Git…...
【Kubernetes】常见面试题汇总(四十八)
目录 108.考虑一家拥有非常分散的系统的跨国公司,希望解决整体代码库问题。您认为公司如何解决他们的问题? 109.我们所有人都知道从单服务到微服务的转变从开发方面解决了问题,但在部署方面却增加了问题。公司如何解决部署方面的问题&#x…...

Qt Creator安卓环境配置【筑基篇】
1.前言 由于我的Qt Creator目前就先的14版本IDE老是存在各种莫名奇妙的bug,我都已经成为官方Qt Forum官方论坛的常客了。有一说一新版本的各种设置不小心误触是真的坑死人。不说了给我小主机配置安卓环境了。小主机系统版本window11-23H,Qt-Creator版本是13.01版本…...

利用SpringBoot构建高效社区医院平台
2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常…...

【C++ 前缀和 数论】1590. 使数组和能被 P 整除|2038
本文涉及的基础知识点 C算法:前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 质数、最大公约数、菲蜀定理 LeetCode 1590. 使数组和能被 P 整除 给你一个正整数数组 nums,请你移除 最短 子数组(可以为 空)&am…...
外部引入的 JavaScript 放置位置
部引入的 JavaScript 通常有两种常见的放置位置,每个位置都有其优缺点,具体取决于页面的需求和性能优化目标: 1. 放在页面的 <head> 标签中 这种方式在 HTML 文档的 <head> 部分引入 JavaScript 文件。 <head><scrip…...

【tbNick专享】虚拟机域控、成员服务器、降级等管理
在 VMware 中完成四台域控服务器、一台成员服务器的创建、降级域控为成员服务器,并创建子域的操作。 1. 创建四台域控和一台成员服务器 1.1 在 VMware 中创建虚拟机 启动 VMware Workstation: 打开 VMware Workstation,点击 “创建新的虚拟…...
Raspberry Pi3B+之Rpanion(gst)和ffmpeg验证
Raspberry Pi3B之Rpanion-gst和ffmpeg验证 1. 源由2. 分析3. 环境搭建步骤1:安装镜像步骤2:系统更新步骤3:安装numpy组件步骤4:安装python3-picamera2组件步骤4:安装cv2组件步骤5:安装ffmpeg组件步骤6&…...

【WiFi帧结构】
文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...
基于Uniapp开发HarmonyOS 5.0旅游应用技术实践
一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包
文章目录 现象:mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时,可能是因为以下几个原因:1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...

什么是Ansible Jinja2
理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)
目录 一、👋🏻前言 二、😈sinx波动的基本原理 三、😈波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、🌊波动优化…...

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)
在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马(服务器方面的)的原理,连接,以及各种木马及连接工具的分享 文件木马:https://w…...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...
适应性Java用于现代 API:REST、GraphQL 和事件驱动
在快速发展的软件开发领域,REST、GraphQL 和事件驱动架构等新的 API 标准对于构建可扩展、高效的系统至关重要。Java 在现代 API 方面以其在企业应用中的稳定性而闻名,不断适应这些现代范式的需求。随着不断发展的生态系统,Java 在现代 API 方…...

认识CMake并使用CMake构建自己的第一个项目
1.CMake的作用和优势 跨平台支持:CMake支持多种操作系统和编译器,使用同一份构建配置可以在不同的环境中使用 简化配置:通过CMakeLists.txt文件,用户可以定义项目结构、依赖项、编译选项等,无需手动编写复杂的构建脚本…...

算术操作符与类型转换:从基础到精通
目录 前言:从基础到实践——探索运算符与类型转换的奥秘 算术操作符超级详解 算术操作符:、-、*、/、% 赋值操作符:和复合赋值 单⽬操作符:、--、、- 前言:从基础到实践——探索运算符与类型转换的奥秘 在先前的文…...