文章目录
-
- 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为例)
评论前必须登录!
注册