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

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()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 抓取、解码并返回下一个视频帧。 cv::VideoCapture::read() 是 VideoCapture 类的一个成员函数&#xff0c;用于从视频源中读取一帧图像. 该方法…...

深度学习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&#xff08;动态链接库&#xff09;中导入函数的一个特性。这个特性允许你在 .NET 应用程序中调用由其他语言编写的函数&#xff0c;如 C 或 C。使用 DllImport 可以让你重用现有的非托管代码&#xff0c;而不需要重新实现这些功能。 下面…...

基于 Redis 实现滑动窗口的限流

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

Camera Raw:打开图像

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

RK3588主板PCB设计学习(六)

可以在其它层对过孔进行削盘处理&#xff0c; 可以看到&#xff0c;这里有些过孔用不上&#xff0c;在这一层进行了削盘处理&#xff1a; 对于这种电源层进行铺铜操作的时候&#xff0c;如果不进行削盘处理的话这些焊盘可能导致这个电源层面不完整&#xff0c;存在割裂的风险&a…...

论文阅读(十一):CBAM: Convolutional Block Attention Module

文章目录 IntroductionConvolutional Block Attention ModuleExperimentsConclusion 论文题目&#xff1a;CBAM: Convolutional Block Attention Module&#xff08;CBAM&#xff1a;卷积注意力机制&#xff09;   论文链接&#xff1a;点击跳转   代码链接&#xff1a;Git…...

【Kubernetes】常见面试题汇总(四十八)

目录 108.考虑一家拥有非常分散的系统的跨国公司&#xff0c;希望解决整体代码库问题。您认为公司如何解决他们的问题&#xff1f; 109.我们所有人都知道从单服务到微服务的转变从开发方面解决了问题&#xff0c;但在部署方面却增加了问题。公司如何解决部署方面的问题&#x…...

Qt Creator安卓环境配置【筑基篇】

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

利用SpringBoot构建高效社区医院平台

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

【C++ 前缀和 数论】1590. 使数组和能被 P 整除|2038

本文涉及的基础知识点 C算法&#xff1a;前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 质数、最大公约数、菲蜀定理 LeetCode 1590. 使数组和能被 P 整除 给你一个正整数数组 nums&#xff0c;请你移除 最短 子数组&#xff08;可以为 空&#xff09;&am…...

外部引入的 JavaScript 放置位置

部引入的 JavaScript 通常有两种常见的放置位置&#xff0c;每个位置都有其优缺点&#xff0c;具体取决于页面的需求和性能优化目标&#xff1a; 1. 放在页面的 <head> 标签中 这种方式在 HTML 文档的 <head> 部分引入 JavaScript 文件。 <head><scrip…...

【tbNick专享】虚拟机域控、成员服务器、降级等管理

在 VMware 中完成四台域控服务器、一台成员服务器的创建、降级域控为成员服务器&#xff0c;并创建子域的操作。 1. 创建四台域控和一台成员服务器 1.1 在 VMware 中创建虚拟机 启动 VMware Workstation&#xff1a; 打开 VMware Workstation&#xff0c;点击 “创建新的虚拟…...

Raspberry Pi3B+之Rpanion(gst)和ffmpeg验证

Raspberry Pi3B之Rpanion-gst和ffmpeg验证 1. 源由2. 分析3. 环境搭建步骤1&#xff1a;安装镜像步骤2&#xff1a;系统更新步骤3&#xff1a;安装numpy组件步骤4&#xff1a;安装python3-picamera2组件步骤4&#xff1a;安装cv2组件步骤5&#xff1a;安装ffmpeg组件步骤6&…...

Vim 调用外部命令学习笔记

Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)

HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密

在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试&#xff0c;通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小&#xff0c;增大可提高计算复杂度duration: 测试持续时间&#xff08;秒&…...

JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案

JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停​​ 1. ​​安全点(Safepoint)阻塞​​ ​​现象​​:JVM暂停但无GC日志,日志显示No GCs detected。​​原因​​:JVM等待所有线程进入安全点(如…...

.Net Framework 4/C# 关键字(非常用,持续更新...)

一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...

以光量子为例,详解量子获取方式

光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学&#xff08;silicon photonics&#xff09;的光波导&#xff08;optical waveguide&#xff09;芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中&#xff0c;光既是波又是粒子。光子本…...

【JVM】Java虚拟机(二)——垃圾回收

目录 一、如何判断对象可以回收 &#xff08;一&#xff09;引用计数法 &#xff08;二&#xff09;可达性分析算法 二、垃圾回收算法 &#xff08;一&#xff09;标记清除 &#xff08;二&#xff09;标记整理 &#xff08;三&#xff09;复制 &#xff08;四&#xff…...

LCTF液晶可调谐滤波器在多光谱相机捕捉无人机目标检测中的作用

中达瑞和自2005年成立以来&#xff0c;一直在光谱成像领域深度钻研和发展&#xff0c;始终致力于研发高性能、高可靠性的光谱成像相机&#xff0c;为科研院校提供更优的产品和服务。在《低空背景下无人机目标的光谱特征研究及目标检测应用》这篇论文中提到中达瑞和 LCTF 作为多…...