jenkinsfile

news/2024/11/16 12:17:55/文章来源:https://www.cnblogs.com/zhuhaofeng/p/18549246

k8s集群中用的jenkinsfile部署

java后台项目

# x项目 test-java-eladmin-ci// harbor镜像仓库地址和密码信息
def registry = "harbor.solomon.com"
// jenkins中定义的连接harbor的用户名密码凭据
def registry_se = "d2318c77-8a32-4618-bced-d6cabb0454b4"// gitlab地址和密码信息
def gitlab_url = "http://192.168.17.18/java/eladmin.git"
// jenkins中定义git连接gitlab的密码凭据
def gitlab_se = "6e58036d-21ad-42b4-a8d2-50fb700f92c7"// jenkins中k8s-api 连线k8s集群的凭据信息
// jenkins中Config File provice插件定义的kubeconfig的内容
def k8s_auth = "782d66a2-d207-4398-b823-786b999db338"// k8s连接harbor的证书(kubectl命令离开k8s集群时需要,例如目前的jenkins环境)
def secret_name = "registry-pull-secret"// harbor仓库的项目前缀信息
def prefix = "library"// 部署应用的服务名称
def app_name = "access-ultra-vires"
// 部署服务所在的命名空间、副本数、容器暴露的端口、svc的端口
def ns = "default"
def rc = 3
def cport = 8008 
def cluport = 8008 
// 构建编译的环境参数
def env = "default"node(){stage("1.pull git code"){checkout([$class: 'GitSCM', branches: [[name: '*/dev']], userRemoteConfigs: [[credentialsId: "${gitlab_se}", url: "${gitlab_url}"]]]) script {build_tag = sh(returnStdout: true, script: 'git rev-parse --short HEAD').trim()TM = sh(script: 'date +%Y%m%d%H%M')}image_name_build = "${registry}/${prefix}/${app_name}:${BUILD_NUMBER}"image_name_latest = "${registry}/${prefix}/${app_name}:latest"}stage("2.build code"){sh "mvn clean package -P${env} -DskipTests"}stage("3.build docker and push to harbor") {withCredentials([usernamePassword(credentialsId: "${registry_se}", passwordVariable: 'dockerHubPassword', usernameVariable: 'dockerHubUser')]) {sh "docker login -u ${dockerHubUser} -p ${dockerHubPassword} ${registry}"sh "docker build -t ${image_name_build}  -f Dockerfile .  --no-cache"sh "docker tag ${image_name_build} ${image_name_latest}"sh "docker push ${image_name_build}"sh "docker push ${image_name_latest}"}}stage("4.deploy to k8s") {// sh "/usr/bin/ossutil cp -uf oss://prod-***/api/blue/templete-v1.yaml templete-v1.yaml"sh "cp templete-v1.yaml ${app_name}-dep.yaml"sh "sed -i 's#SVC_NAME#${app_name}#g'  ${app_name}-dep.yaml"sh "sed -i 's#NS_NAME#${ns}#g'  ${app_name}-dep.yaml"sh "sed -i 's#RC_NUM#${rc}#g'  ${app_name}-dep.yaml"sh "sed -i 's#IMAGE_URL#${image_name_latest}#g'  ${app_name}-dep.yaml"sh "sed -i 's#CON_PORT#${cport}#g'  ${app_name}-dep.yaml"sh "sed -i 's#CLU_PORT#${cluport}#g'  ${app_name}-dep.yaml"sh "kubectl apply -f  ${app_name}-dep.yaml"echo "deploy success"}
}
View Code

 

vue前端项目

# 项目 vue-test-ci
// harbor镜像仓库地址和密码信息
def registry = "harbor.solomon.com"
// jenkins中定义的连接harbor的用户名密码凭据
def registry_se = "d2318c77-8a32-4618-bced-d6cabb0454b4"// gitlab地址和密码信息
def gitlab_url = "http://192.168.17.18/vue/eladmin-web.git"
// jenkins中定义git连接gitlab的密码凭据
def gitlab_se = "6e58036d-21ad-42b4-a8d2-50fb700f92c7"// jenkins中k8s-api 连线k8s集群的凭据信息
// jenkins中Config File provice插件定义的kubeconfig的内容
def k8s_auth = "782d66a2-d207-4398-b823-786b999db338"// k8s连接harbor的证书(kubectl命令离开k8s集群时需要,例如目前的jenkins环境)
def secret_name = "registry-pull-secret"// harbor仓库的项目前缀信息
def prefix = "library"// 部署应用的服务名称
def app_name = "eladmin-web"
// 部署服务所在的命名空间、副本数、容器暴露的端口、svc的端口
def ns = "default"
def rc = 3
def cport = 80
def cluport = 80 
// 构建编译的环境参数
def env = "default"node(){stage("1.pull git code"){checkout([$class: 'GitSCM', branches: [[name: '*/main']], userRemoteConfigs: [[credentialsId: "${gitlab_se}", url: "${gitlab_url}"]]]) script {build_tag = sh(returnStdout: true, script: 'git rev-parse --short HEAD').trim()TM = sh(script: 'date +%Y%m%d%H%M')}image_name_build = "${registry}/${prefix}/${app_name}:${BUILD_NUMBER}"image_name_latest = "${registry}/${prefix}/${app_name}:latest"}stage("2.run build"){nodejs("npm"){sh("node -v && npm -v")sh("npm install")sh("npm run build:prod")sh("tar zcvf dist.tar.gz dist")}}stage("3.build docker and push to harbor") {withCredentials([usernamePassword(credentialsId: "${registry_se}", passwordVariable: 'dockerHubPassword', usernameVariable: 'dockerHubUser')]) {sh "docker login -u ${dockerHubUser} -p ${dockerHubPassword} ${registry}"sh "docker build -t ${image_name_build}  -f Dockerfile .  --no-cache"sh "docker tag ${image_name_build} ${image_name_latest}"sh "docker push ${image_name_build}"sh "docker push ${image_name_latest}"// 删除压缩包,等待下次构建sh "rm -f dist.tar.gz"}}stage("4.deploy to k8s") {sh "cp templete-v1.yaml ${app_name}-dep.yaml"sh "sed -i 's#SVC_NAME#${app_name}#g'  ${app_name}-dep.yaml"sh "sed -i 's#NS_NAME#${ns}#g'  ${app_name}-dep.yaml"sh "sed -i 's#RC_NUM#${rc}#g'  ${app_name}-dep.yaml"sh "sed -i 's#IMAGE_URL#${image_name_latest}#g'  ${app_name}-dep.yaml"sh "sed -i 's#CON_PORT#${cport}#g'  ${app_name}-dep.yaml"sh "sed -i 's#CLU_PORT#${cluport}#g'  ${app_name}-dep.yaml"sh "kubectl apply -f  ${app_name}-dep.yaml"echo "deploy success"}}
View Code

 

  

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

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

相关文章

[网鼎杯 2018]Fakebook 1

[网鼎杯 2018]Fakebook 1 打开实例发现为博客列表,有登录跳转和类似注册或者添加博客的join跳转查看源码无果 打开登陆页,尝试万能密码没有用,尝试从join入手,用admin去随便join一个显示博客不存在 期间尝试多种sql注入方法均没有效果,转去其他方向 尝试dirsearch目录爆破…

【Adobe Premiere pro 2025下载与安装教程】

1、安装包「Adobe Premiere Pro 2025」: 链接:https://pan.quark.cn/s/e93beb96accb 提取码:CGY2 2、安装教程 1) 下载软件安装包,打开安装目录,双击Setup.exe安装,弹出安装对话框2) 选择安装目录,尽量不要选C盘,点击继续3) 等待安装过程完成,点…

人工智能同样也会读死书----“过拟合”

上一篇:《“嵌入”在大语言模型中是解决把句子转换成向量表示的技术》 序言:我们常常会说某某人只会“读死书”,题目稍微变一点就不会做了。这其实是我们人类学习中很常见的现象。可是你知道吗?人工智能其实更容易“读死书”。不过在人工智能领域,我们有个听起来高大上的说…

D45XT80-ASEMI电机专用整流桥D45XT80

D45XT80-ASEMI电机专用整流桥D45XT80编辑:ll D45XT80-ASEMI电机专用整流桥D45XT80 型号:D45XT80 品牌:ASEMI 封装:DXT-5 特性:插件桥堆 正向电流:45A 反向耐压:800V 恢复时间:>2000ns 引脚数量:5 芯片个数:4 芯片尺寸:50MIL 浪涌电流:450A 漏电流:>10uA 工作温…

【Adobe Acrobat pro 2024软件下载与安装教程-PDF编辑神奇】

1、安装包 「Adobe Acrobat 2024」: 链接:https://pan.quark.cn/s/86f8683afe5c 提取码:4uur 2、安装教程(建议关闭杀毒软件和系统防护) 1) 下载软件安装包,打开安装目录,双击Setup.exe安装,弹出安装对话框2) 点击安装按钮3) 正在安装4) 安装…

书生共学大模型训练营第4期 L1G200任务提交

MindSearch搜索引擎示例书生浦语对话模型调用示例书生万象开源视觉语言模型调用实例进阶任务:MindSearch话题挑战 https://www.zhihu.com/people/zhang-shu-yang-92-96

使用nvm管理多版本node的详细教程

在开发工作中,经常在不同的项目中使用不同版本的node去开发,换一个项目在重新安装node太麻烦,所以使用nvm来管理多版本的node开发环境,就非常方便了,所以本文给大家介绍了如何使用nvm管理多版本node,需要的朋友可以参考下前言 在开发工作中,经常在不同的项目中使用不同版本的n…

Metasploit Pro 4.22.5-2024111401 (Linux, Windows) - 专业渗透测试框架

Metasploit Pro 4.22.5-2024111401 (Linux, Windows) - 专业渗透测试框架Metasploit Pro 4.22.5-2024111401 (Linux, Windows) - 专业渗透测试框架 Rapid7 Penetration testing, released Nov 14, 2024 请访问原文链接:https://sysin.org/blog/metasploit-pro-4/ 查看最新版。…

.ts文件和d.ts文件对比

TS中有俩种文件类型,一种是.ts文件,一种是.d.ts文件 .ts文件 既可以包含类型信息也可以写逻辑代码 可以被编译为js文件 .d.ts文件 只能包含类型信息不可以写逻辑代码 不会被编译为js文件,仅做类型校验检查 自定义类型声明文件 d.ts文件在项目中是可以进行自定义创建的,通常…

Ubuntu Server 20.04 安装MySQL

1. 通过apt安装MySQL1 #命令1 2 sudo apt-get update 3 #命令2 4 sudo apt-get install mysql-server2. 配置mysql初始化信息1 sudo mysql_secure_installation配置说明:ubuntu@VM-0-10-ubuntu:~$ sudo mysql_secure_installationSecuring the MySQL server deployment.Connec…

【Adobe Photoshop 2025下载与安装】

‌Photoshop 2025的安装环境要求主要包括操作系统、处理器、内存、显卡、显示器分辨率和硬盘空间等方面的具体要求。‌ 操作系统要求‌Windows‌:支持Windows 10(版本21H2)或更高版本,不支持Windows的长期服务版(LTSC)。处理器要求‌Windows‌:支持64位的多核Intel或AMD…

IPEX几代接口的区别

IPEX共分五代,简单判别IPEX接口是几代的方法是测量直径。 IPEX 1代 高度小于3.0mm,端子口径φ2.0 IPEX 2代 高度小于2.1mm,端子口径φ2.0 IPEX 3代 高度小于1.6mm,端子口径φ1.4 IPEX 4代 高度小于1.7mm,端子口径φ1.5 IPEX 5代 高度小于1.3mm,…