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

26、Jenkins流水线

26、Jenkins流水线

1、Hello World

https://www.jenkins.io/zh/doc/book/pipeline/jenkinsfile/

agent指令是必需的,它指示 Jenkins 为流水线分配一个执行器和工作区。没有 agent 指令的话,声明式流水线不仅无效,它也不可能完成任何工作!默认情况下,agent 指令确保源代码仓库被检出并在后续阶段的步骤中可被使用。

一个合法的声明式流水线还需要 stages 指令和 steps 指令,因为它们指示 Jenkins 要执行什么,在哪个阶段执行。

2、新建流水线构建任务

pipeline-test

image-20250730142730411

image-20250730142826707

pipeline {agent anystages {stage('拉取代码') {steps {echo '拉取代码..'}}stage('Maven打包') {steps {echo 'Maven打包..'}}stage('制作镜像') {steps {echo '制作镜像..'}}stage('部署') {steps {echo '部署....'}}}
}

3、构建一次

image-20250730142925380

image-20250730143011765

4、拉取代码

1、生成脚本

image-20250730143058733

image-20250730143243312

image-20250730143555089

2、流水线

pipeline {agent anystages {stage('拉取代码') {steps {echo '拉取代码..'checkout scmGit(branches: [[name: '*/master']], extensions: [], userRemoteConfigs: [[credentialsId: 'gitee', url: 'https://gitee.com/xiaoxueblog/xx-springboot.git']])sh 'ls'}}stage('Maven打包') {steps {echo 'Maven打包..'}}stage('制作镜像') {steps {echo '制作镜像..'}}stage('部署') {steps {echo '部署....'}}}
}

image-20250730143748965

5、Maven构建

可以直接定义工具

image-20250730144135345

pipeline {agent anytools { maven "maven3.9.11"}stages {stage('拉取代码') {steps {echo '拉取代码..'checkout scmGit(branches: [[name: '*/master']], extensions: [], userRemoteConfigs: [[credentialsId: 'gitee', url: 'https://gitee.com/xiaoxueblog/xx-springboot.git']])sh 'ls'}}stage('Maven打包') {steps {echo 'Maven打包..'sh 'mvn clean package'}}stage('制作镜像') {steps {echo '制作镜像..'}}stage('部署') {steps {echo '部署....'}}}
}

image-20250730144544894

6、制作镜像

pipeline {agent anytools { maven "maven3.9.11"}stages {stage('拉取代码') {steps {echo '拉取代码..'checkout scmGit(branches: [[name: '*/master']], extensions: [], userRemoteConfigs: [[credentialsId: 'gitee', url: 'https://gitee.com/xiaoxueblog/xx-springboot.git']])sh 'ls'}}stage('Maven打包') {steps {echo 'Maven打包..'sh 'mvn clean package'}}stage('制作镜像') {steps {echo '制作镜像..'sh "docker build -t xx-springboot:v$BUILD_NUMBER ."}}stage('部署') {steps {echo '部署....'}}}
}

image-20250730144808999

7、部署

pipeline {agent anytools { maven "maven3.9.11"}stages {stage('拉取代码') {steps {echo '拉取代码..'checkout scmGit(branches: [[name: '*/master']], extensions: [], userRemoteConfigs: [[credentialsId: 'gitee', url: 'https://gitee.com/xiaoxueblog/xx-springboot.git']])sh 'ls'}}stage('Maven打包') {steps {echo 'Maven打包..'sh 'mvn clean package'}}stage('制作镜像') {steps {echo '制作镜像..'sh "docker build -t xx-springboot:v$BUILD_NUMBER ."}}stage('部署') {steps {echo '部署....'sh "docker run -d -p 8001:8001 --name=xx-springboot xx-springboot:v$BUILD_NUMBER"}}}
}

8、部署优化 - 停止服务

pipeline {agent anytools { maven "maven3.9.11"}stages {stage('拉取代码') {steps {echo '拉取代码..'checkout scmGit(branches: [[name: '*/master']], extensions: [], userRemoteConfigs: [[credentialsId: 'gitee', url: 'https://gitee.com/xiaoxueblog/xx-springboot.git']])sh 'ls'}}stage('Maven打包') {steps {echo 'Maven打包..'sh 'mvn clean package'}}stage('制作镜像') {steps {echo '制作镜像..'sh "docker build -t xx-springboot:v$BUILD_NUMBER ."}}stage('停止服务') {steps {sh "chmod 777 stop_container.sh && bash stop_container.sh xx-springboot $BUILD_NUMBER"}}stage('部署') {steps {echo '部署....'sh "docker run -d -p 8001:8001 --name=xx-springboot xx-springboot:v$BUILD_NUMBER"}}}
}

中间可以加上传镜像仓库

9、最终部署示例图

image-20250730145326141

http://www.xdnf.cn/news/20098.html

相关文章:

  • 解密llama.cpp:从Prompt到Response的完整技术流程剖析
  • 从 GPT 到 LLaMA:解密 LLM 的核心架构——Decoder-Only 模型
  • Loopback for Mac:一键打造虚拟音频矩阵,实现跨应用音频自由流转
  • 用Markdown写自动化用例:Gauge实战全攻略!
  • AV1 OBU Frame解析
  • 系统编程day2-系统调用
  • 游戏世代网页官网入口 - 游戏历史记录和统计工具
  • Guidelines for using Adaptive Platform interfaces
  • 2025年互联网行业专业认证发展路径分析
  • GO学习记录九——数据库触发器的使用+redis缓存策略
  • 第4章 存储系统
  • GitLab Milestones 深度解析:选型、竞品、成本与资源消耗
  • 视频打不开怎么办?教你一键修改默认打开方式
  • zynq 开发系列 新手入门:GPIO 连接 MIO 控制 LED 闪烁(SDK 端代码编写详解)
  • React实现音频文件上传与试听
  • 服务器安装vnc服务端
  • jenkins安装和配置流程
  • 深度学习——CNN实例手写数字
  • 归一化的定义与作用
  • ip地址是硬件自带的还是被分配的
  • 《单链表经典问题全解析:5 大核心题型(移除元素 / 反转 / 找中点 / 合并 / 回文判断)实现与详解》
  • 面试高频问题总结
  • 基于 Socket 和多线程的简单 Echo 服务器实现
  • [UT]记录uvm_config_db的错误:get中的第二个参数设置为this
  • 小企业环境-火山方舟和扣子
  • 【FPGA】DDS信号发生器
  • 【C++】Vector核心实现:类设计到迭代器陷阱
  • < 自用文 主机 USC 记录:> 发现正在被攻击 后的自救
  • 天然苏打水生产的原水抽取与三重除菌的3D模拟开发实战
  • AI大模型对决:谁是最强智能?