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

docker jenkins gitlab 流水线构建

场景:代码部署后,需要快速回退到上个版本。

一、jenkins 创建 job。

二、流水线执行脚本。

pipeline {agent anyenvironment {IMAGE_NAME = "web-vue"}stages {stage('Checkout') {steps {// 使用真实的 Git 仓库地址和凭据 IDgit url: 'http://host.docker.internal:8929/jqh/web-vue.git',branch: 'master',  // 或者使用 'main' 如果你的默认分支是 maincredentialsId: 'gitlab-web-vue-token'}}stage('Get Git Commit Info') {steps {script {env.GIT_COMMIT_SHORT = sh(script: 'git rev-parse --short HEAD', returnStdout: true).trim()env.GIT_COMMIT_FULL = sh(script: 'git rev-parse HEAD', returnStdout: true).trim()env.GIT_COMMIT_MSG = sh(script: "git log -1 --pretty=%B ${env.GIT_COMMIT_FULL}", returnStdout: true).trim()env.GIT_AUTHOR_NAME = sh(script: "git log -1 --pretty=%an ${env.GIT_COMMIT_FULL}", returnStdout: true).trim()env.GIT_AUTHOR_EMAIL = sh(script: "git log -1 --pretty=%ae ${env.GIT_COMMIT_FULL}", returnStdout: true).trim()env.GIT_COMMIT_DATE = sh(script: "git log -1 --pretty=%cd ${env.GIT_COMMIT_FULL} --date=format:'%Y-%m-%d %H:%M:%S'", returnStdout: true).trim()env.IMAGE_TAG = "${env.IMAGE_NAME}:${env.GIT_COMMIT_SHORT}"echo "📦 提交短哈希: ${env.GIT_COMMIT_SHORT}"echo "📦 提交完整哈希: ${env.GIT_COMMIT_FULL}"echo "📦 提交注释: ${env.GIT_COMMIT_MSG}"echo "📦 提交人: ${env.GIT_AUTHOR_NAME} (${env.GIT_AUTHOR_EMAIL})"echo "📦 提交时间: ${env.GIT_COMMIT_DATE}"echo "📦 构建镜像标签: ${env.IMAGE_TAG}"}}}stage('Build Docker Image') {steps {script {def buildDate = sh(script: 'date -u +\'%Y-%m-%dT%H:%M:%SZ\'', returnStdout: true).trim()sh """docker build \\--build-arg GIT_COMMIT=${env.GIT_COMMIT_SHORT} \\--build-arg BUILD_DATE=${buildDate} \\-t ${env.IMAGE_TAG} \\-t ${env.IMAGE_NAME}:latest \\."""}}}stage('Deploy to Docker') {steps {script {sh 'docker stop my-nginx || true'sh 'docker rm my-nginx || true'sh "docker run -d --name my-nginx -p 8081:80 ${env.IMAGE_TAG}"}}}}post {success {echo "✅ 部署成功!当前运行镜像: ${env.IMAGE_TAG}"echo "✅ 提交注释: ${env.GIT_COMMIT_MSG}"echo "✅ 提交人: ${env.GIT_AUTHOR_NAME} (${env.GIT_AUTHOR_EMAIL})"echo "✅ 提交时间: ${env.GIT_COMMIT_DATE}"}failure {echo "❌ 部署失败"}}
}

三、实现每次构建都有版本标签。

# 查看当前的镜像版本
docker images web-vue
# 停止当前运行的容器
docker stop my-nginx
# 删除当前运行容器
docker rm my-nginx
# 启动回退版本的镜像容器
docker run -d --name my-nginx -p 8081:80 web-vue:83a3781

四、优化为 Jenkinsfile 文件。

pipeline {agent anyenvironment {IMAGE_NAME = "web-vue"}stages {stage('Checkout') {steps {script {echo "✅ 拉取代码成功"}}}stage('Build Image') {steps {script {sh 'docker build -t ${IMAGE_NAME}:latest .'}}}stage('Deploy') {steps {script {sh 'docker stop my-nginx || true'sh 'docker rm my-nginx || true'sh 'docker run -d --name my-nginx -p 8081:80 web-vue:latest'}}}}post {success {echo "✅ 部署成功!"}failure {echo "❌ 部署失败!"}}
}
http://www.dtcms.com/a/410260.html

相关文章:

  • MySQL 配置调优参数:从基础到生产级优化指南
  • 旅游网站设计模板cdr里做网站超级链接
  • TypeScript + React + Ant Design 前端架构入门:搭建一个 Flask 个人博客前端
  • 小九源码-springboot051-智能推荐旅游平台
  • 网站建设面试问题网站建设 学习 长沙
  • 【云原生】openebs-device+cstor存储方案部署
  • 破译古籍密码,HisDoc-DETR论文解读
  • Kafka 面试题及详细答案100道(66-80)-- 运维与部署
  • 衡阳网站优化公司个人网站可以做音乐吗
  • 怎么iis设置网站太原网站建设外包
  • UVa1008/LA2240 A Vexing Problem
  • 如何利用Yarn定位数据倾斜问题?
  • 开源 C# 快速开发(四)自定义控件--波形图
  • javaweb3【ServletContext知识】
  • Java 复制 PowerPoint 幻灯片:高效实现演示文稿内容复用
  • ⸢ 陆 ⸥ ⤳ 可信纵深防御:整体架构
  • 医疗数据ETL开发流程总结
  • 网站制作多久能完成泰州做网站需要多少钱
  • 【汽车篇】AI深度学习在汽车零部件外观检测——铝铸件中的应用
  • Unity 虚拟仿真实验中设计模式的使用 ——工厂模式(Factory Pattern)
  • 网站备案初审过了企业信息门户网站建设方案
  • 【力扣LeetCode】231_2的幂(法1:循环迭代,法2:位运算)
  • 【便宜整数正分解】2022-11-23
  • hive连不上,报错9000拒绝连接
  • 力扣hot100 | 多维动态规划 | 62. 不同路径、64. 最小路径和、5. 最长回文子串、1143. 最长公共子序列、72. 编辑距离
  • 构建生产级多模态数据集:视觉与视频模型(参照LLaVA-OneVision-Data和VideoChat2)
  • 《策略模式在电商系统中的优雅应用:重构你的折扣计算逻辑》
  • 网站界面设计内容做外贸网站哪里好
  • ValueError: Expecting value: line 1 column 1 (char 0)
  • Agent的九种设计模式