云计算百科
云计算领域专业知识百科平台

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

文章目录

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

1、前言

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

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

2、操作步骤

2.1 Jenkins任务的创建与配置

1、点击新建任务 在这里插入图片描述


2、输入一个任务名称,然后选择 流水线 在这里插入图片描述


3、处理一系列配置 在这里插入图片描述

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

在这里插入图片描述

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

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

在这里插入图片描述

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

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

配置完成后,点击【添加】


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

在这里插入图片描述

具体的代码见下一个章节

2.2 Pipeline script

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

SSH 有一点需要注意

在这里插入图片描述


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'
)
}
}
}
}

弄完以后点击保存,这个时候可以选择立即构建 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

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

参考链接

  • 使用 Docker+Jenkins+Jenkins + gitee 实现自动化部署前端项目 CI/CD(centos7为例)
赞(0)
未经允许不得转载:网硕互联帮助中心 » 基于 Jenkins 的企业级 CI/CD 流水线实战:Dev 分支监听 → 秒级构建 → 安全推送服务器 → 邮件通知》
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!