> 技术文档 > 基于 Jenkins 的企业级 CI/CD 流水线实战:Dev 分支监听 → 秒级构建 → 安全推送服务器 → 邮件通知》_jenkins 监听某个分支提交

基于 Jenkins 的企业级 CI/CD 流水线实战:Dev 分支监听 → 秒级构建 → 安全推送服务器 → 邮件通知》_jenkins 监听某个分支提交


文章目录

    • 1、前言
    • 2、操作步骤
      • 2.1 Jenkins任务的创建与配置
      • 2.2 Pipeline script
    • 参考链接

1、前言

在实际开发中,有时候我们可能需要监测 git 仓库的某个分支,如若这个分支发生了提交,然后就要 拉取代码、构建、发送到服务器、发送钉钉通知、发送邮件等操作,这个时候就需要用到 Jenkins流水线任务了。

Jenkins任务一共五个类型,最开始的文章使用的是 【构建一个自由风格的软件项目】,这篇文章使用的是 【流水线】

2、操作步骤

2.1 Jenkins任务的创建与配置

1、点击新建任务
基于 Jenkins 的企业级 CI/CD 流水线实战:Dev 分支监听 → 秒级构建 → 安全推送服务器 → 邮件通知》_jenkins 监听某个分支提交


2、输入一个任务名称,然后选择 流水线
基于 Jenkins 的企业级 CI/CD 流水线实战:Dev 分支监听 → 秒级构建 → 安全推送服务器 → 邮件通知》_jenkins 监听某个分支提交


3、处理一系列配置
基于 Jenkins 的企业级 CI/CD 流水线实战:Dev 分支监听 → 秒级构建 → 安全推送服务器 → 邮件通知》_jenkins 监听某个分支提交

触发器:选择这个 gitee webhook 触发构建

基于 Jenkins 的企业级 CI/CD 流水线实战:Dev 分支监听 → 秒级构建 → 安全推送服务器 → 邮件通知》_jenkins 监听某个分支提交

但是在实际开发中,不需要这样,一般都是指定分支,比如,我们现在使用的是 dev 分支

一般来说,开发环境、测试环境、生产环境,前端界面对应的服务器路径肯定不是一个,所以这样一般监听一个分支就够了,每个环境都创建一个单独的流水线任务比较好,如若三个环境用一个,那么就得在流水线代码里面区分当前是那个分支

基于 Jenkins 的企业级 CI/CD 流水线实战:Dev 分支监听 → 秒级构建 → 安全推送服务器 → 邮件通知》_jenkins 监听某个分支提交

下面有一个 【Gitee WebHook 密码】,点击后面的生成
点击生成以后,需要去gitee 上,第一大步骤创建的仓库中去配置以下

基于 Jenkins 的企业级 CI/CD 流水线实战:Dev 分支监听 → 秒级构建 → 安全推送服务器 → 邮件通知》_jenkins 监听某个分支提交
基于 Jenkins 的企业级 CI/CD 流水线实战:Dev 分支监听 → 秒级构建 → 安全推送服务器 → 邮件通知》_jenkins 监听某个分支提交
基于 Jenkins 的企业级 CI/CD 流水线实战:Dev 分支监听 → 秒级构建 → 安全推送服务器 → 邮件通知》_jenkins 监听某个分支提交

配置完成后,点击【添加


流水线这里,是有两种方式的
1、使用 【Pipeline script】,可以直接再下面这个框里面写脚本,这样别人就不会看到了
2、使用【Pipeline script from SCM】,会弹出一个脚本路径 输入框,如若选择这个,那就是要再前端项目的根目录下创建一个 Jenkinsfile,支持重命名,也支持自定义路径,但是一般默认就好

基于 Jenkins 的企业级 CI/CD 流水线实战:Dev 分支监听 → 秒级构建 → 安全推送服务器 → 邮件通知》_jenkins 监听某个分支提交

具体的代码见下一个章节

2.2 Pipeline script

  • 在安装Jenkins的时候,要选择 推荐的插件,具体可以看这个文章 jenkins 安装教程,SSH 配置也在这个文章里面,可以先看看这个,不然 打包后的文件有可能无法发送到服务器上
  • 必须要安装 SSH、配置完成SSH,不然打包以后的文件,无法发送到服务器上
  • 如若想要打包完成后或者其他情况,给某些人发送邮件需要这个插件Email Extension Plugin,在Jenkins第一次推荐安装中,也有这个, 具体的这个插件配置可以看这个文章 《Jenkins邮件通知终极指南:Email Extension Plugin高级配置》

SSH 有一点需要注意

基于 Jenkins 的企业级 CI/CD 流水线实战:Dev 分支监听 → 秒级构建 → 安全推送服务器 → 邮件通知》_jenkins 监听某个分支提交


SSH:SSH(Secure Shell)是一种 加密的网络协议,主要用于 安全地远程访问管理服务器,以及 安全地传输文件

pipeline { agent any options { timestamps() // 为整个 Pipeline 的所有步骤添加时间戳 } tools { nodejs \'v22.14.0\' // 与全局配置中的 Name 一致 } stages { stage(\'拉取代码\') { steps { // ‘checkout scm’ is only available when using “多分支流水线” or “Pipeline script from SCM” ,checkout scm这个命令适用于 多分枝流水线任务 或者 Pipeline script from SCM ,多分枝流水线任务可以另一个文章,在最后有参考链接 // checkout scm // 拉取代码  git branch: \'dev\', url: \'https://gitee.com/换成你自己的\' sh \'ls -al\' // 检查代码是否拉取成功 } } stage(\'初始化\') { steps { echo \"初始化:git本次提交的hash ${env.GIT_COMMIT}\" echo \"初始化:本次构建ID ${env.BUILD_ID}\" echo \"初始化:本次构建名称 ${env.JOB_NAME}\" echo \"初始化:本次构建URL ${env.BUILD_URL}\" script {  def nodeVersion = sh(script: \'node --version\', returnStdout: true).trim()  echo \"初始化:node版本号: ${nodeVersion}\"  def nodeRegistryUrl = sh(script: \'npm config get registry\', returnStdout: true).trim()  echo \"初始化:node下载源: ${nodeRegistryUrl}\"  echo \"初始化:当前git分支: ${env.BRANCH_NAME}\" } } } stage(\'安装依赖\') { steps { echo \"安装依赖:开始安装依赖\" sh \'npm i\' sh \'npm run build\' } } stage(\'构建\') { steps { echo \"构建:开始构建\" sh \'npm run build\' } } stage(\'发送到服务器\') { steps { script {  // 使用 Publish Over SSH 插件传输文件  sshPublisher( publishers: [ sshPublisherDesc( configName: \"呆呆狗\", transfers: [  sshTransfer(  sourceFiles: \'dist/**\', // 前端打包后的目录  removePrefix: \'dist\', // 移除 dist 前缀  remoteDirectory: \"project/jenkinsPipelineTest/\",  execCommand: \"\"\"  \"\"\"  ) ] ) ]  ) } } } } post { always { script { // 计算构建耗时(秒) def durationSec = (currentBuild.duration / 1000).toInteger() // 格式化时间 def timeFormat = new java.text.SimpleDateFormat(\"yyyy-MM-dd HH:mm:ss\") def startTime = timeFormat.format(new Date(currentBuild.startTimeInMillis))  emailext(  subject: \"构建通知: ${env.JOB_NAME} - ${currentBuild.result}\",  body: \"\"\" <h2>构建详情</h2> <p><b>项目:</b> ${env.JOB_NAME}</p> <p><b>状态:</b> ${currentBuild.result ?: \'SUCCESS\'}</p> <p><b>分支:</b> ${env.GIT_BRANCH}</p> <p><b>开始时间:</b> ${startTime}</p> <p><b>构建耗时:</b> ${durationSec}</p> <p><b>日志链接:</b> <a href=\"${env.BUILD_URL}console\">点击查看</a></p>  \"\"\",  to: \'换成需要接收邮件的邮箱,多个邮箱的话,逗号分隔\',  attachLog: true,  mimeType: \'text/html\' ) } } }}

弄完以后点击保存,这个时候可以选择立即构建
基于 Jenkins 的企业级 CI/CD 流水线实战:Dev 分支监听 → 秒级构建 → 安全推送服务器 → 邮件通知》_jenkins 监听某个分支提交
基于 Jenkins 的企业级 CI/CD 流水线实战:Dev 分支监听 → 秒级构建 → 安全推送服务器 → 邮件通知》_jenkins 监听某个分支提交
基于 Jenkins 的企业级 CI/CD 流水线实战:Dev 分支监听 → 秒级构建 → 安全推送服务器 → 邮件通知》_jenkins 监听某个分支提交

这样就是i成功了。可以自己 push 代码了,然后Jenkins就会检测到,自动构建打包

参考链接

  • 使用 Docker+Jenkins+Jenkins + gitee 实现自动化部署前端项目 CI/CD(centos7为例)