Jenkins笔记
docker部署Jenkins
初始化jenkins
解锁jenkins
查看密码
sh
cat /data/jenkins_home/secrets/initialAdminPassword
安装推荐插件
选择安装推荐插件 中途可能会遇到无法连接jenkins,直接右下角
重试即可
安装一些插件
- chinese 中文插件
- Blueocean 界面
- Docker docker
- Docker Pipeline docker流水线 推荐(选装):Generic Webhook Trigger
创建一个clouds



配置docker
创建部署任务

新建流水线
注意
私有仓库请参考这个,需要自己创建key,生成classic的就行=》New Personal Access Token (Classic)

配置流水线
添加凭据
用户名填token就行,需要勾选 Treat username as secret,ID就是凭据的名称(可以在流水线里通过GIT_CREDENTIALS = credentials('notebook')选择凭据,我的凭据是叫notebook,图片只是例子)
配置钉钉机器人
安装钉钉插件
搜索DingTalk或者搜索钉钉,都能找到 
配置钉钉插件


测试结果
github webhook
注意事项(最后需要按照这个格式填写webhook)
webhook的url是这个样式的(看情况选择http或者https)
text
http://jenkins的账号:jenkins的apitoken或者密码@127.0.0.1:8080/job/notebook/build?token=你的token需要替换的字符串:
- jenkins的账号
- jenkins的apitoken或者密码
- 你的token
配置触发远程构建
进到项目配置页面,如图操作 配置令牌:github发送消息给jenkins需要用到这个令牌
配置API TOKEN:为了让github的webhook能够访问jenkins,我们需要配置一个api token给github
填写webhook
查看配置结果
流水线编写
常用环境变量
text
environment {
// 设置 Git 凭证,用于访问代码仓库(这里填写的是凭证名称)
GIT_CREDENTIALS = credentials('notebook')
// Docker 镜像名称和标签
DOCKER_IMAGE = 'notebook-docs'
// 使用 Jenkins 构建号作为版本号
DOCKER_TAG = "${BUILD_NUMBER}"
// 容器端口
CONTAINER_PORT = '3000'
// 设置时区
TZ = 'Asia/Shanghai'
// 获取触发者信息
TRIGGER_USER = "${currentBuild.getBuildCauses()[0].shortDescription ?: 'GitHub Webhook'}"
// 获取提交信息
GIT_COMMIT_MSG = sh(script: 'git log -1 --pretty=%B ${GIT_COMMIT}', returnStdout: true).trim()
GIT_AUTHOR = sh(script: 'git log -1 --pretty=%an ${GIT_COMMIT}', returnStdout: true).trim()
GIT_COMMIT_SHORT = sh(script: 'git rev-parse --short HEAD', returnStdout: true).trim()
GIT_COMMIT_TIME = sh(script: 'git log -1 --pretty=%cd --date=format:"%Y-%m-%d %H:%M:%S"', returnStdout: true).trim()
// 添加资源限制相关的环境变量,便于统一管理
DOCKER_MEMORY_LIMIT = '256m'
DOCKER_SWAP_MEMORY_LIMIT = '512m'
DOCKER_CPU_LIMIT = '0.5'
// 添加应用健康检查相关配置
HEALTH_CHECK_RETRIES = '3'
HEALTH_CHECK_DELAY = '20'
}常用全局选项
text
options {
// 设置流水线超时时间为50分钟
timeout(time: 50, unit: 'MINUTES')
// 只保留最近5次构建记录
buildDiscarder(logRotator(numToKeepStr: '5'))
// 禁止并行执行
disableConcurrentBuilds()
// 为日志添加时间戳
timestamps()
}钉钉插件流水线
环境变量
text
environment {
// Docker 镜像名称和标签
DOCKER_IMAGE = 'notebook-docs'
// 使用 Jenkins 构建号作为版本号
DOCKER_TAG = "${BUILD_NUMBER}"
// 容器端口
CONTAINER_PORT = '3000'
// 钉钉机器人 webhook 地址
DINGTALK_WEBHOOK = 'key'
// 通知方式控制
NOTIFICATION_TYPE = 'dingtalk' // 可选值: 'dingtalk', 'webhook'
TZ = 'Asia/Shanghai' // 设置时区
// 获取触发者信息
TRIGGER_USER = "${currentBuild.getBuildCauses()[0].shortDescription ?: 'GitHub Webhook'}"
}例子(调用插件)
text
dingtalk(
robot: 'notebook',
type: 'MARKDOWN',
title: '部署通知',
text: [
"### 🚀 部署成功",
"- 版本:${DOCKER_TAG}",
"- 部署完成:${new Date().format('yyyy-MM-dd HH:mm:ss')} ${['星期日','星期一','星期二','星期三','星期四','星期五','星期六'][new Date().day]}",
"- 构建编号:#${BUILD_NUMBER}",
"- 提交者:${GIT_AUTHOR}",
"- 提交时间:${GIT_COMMIT_TIME}",
"- 提交消息:${GIT_COMMIT_MSG}",
"- 构建日志:[查看详情](${BUILD_URL}console)",
"- 部署耗时:${currentBuild.durationString}",
"- 触发方式:${TRIGGER_USER}"
]
)例子(直接请求请求)
${DINGTALK_WEBHOOK}为你的钉钉机器人对应的webhook
text
sh """
curl '${DINGTALK_WEBHOOK}' \\
-H 'Content-Type: application/json' \\
-d '{ "msgtype": "text", "text": { "content": "🚨 部署通知:\\n❌ 部署异常,已回滚到上一版本"
} }'"""可能遇到的问题
遇到以下图片中的问题时,可以使用这些解决方案
- 等待执行结束,重新执行即可
- 重启jenkins镜像
- 再上传一次代码
卡住不动,隔一段时间后报了下面的错(原因:链接不上github了,重新执行即可)
遇到这个问题,重启即可







填写webhook
查看配置结果 




