本文详细记录了在 Debian 12 系统上,从安装 Java 21、Jenkins、极狐GitLab(中文版),到配置 Webhook 并最终打通 Kubernetes 集群实现自动化部署的完整过程。
环境概览
第一部分:安装 Eclipse Temurin 21 (Java 21)
Eclipse Temurin(前身是 AdoptOpenJDK)是一个广泛使用的开源 JDK 发行版。Debian 12 官方源中默认不包含 Java 21,我们需要通过 Adoptium 的 APT 仓库来安装。
1.1 安装依赖包
sudo apt update
sudo apt install ca-certificates curl gpg -y
1.2 添加 Adoptium GPG 密钥
# 创建临时目录下载密钥
tmp_dir="$(mktemp -d)"
curl -fsSLo "$tmp_dir/adoptium.asc" https://packages.adoptium.net/artifactory/api/gpg/key/public
gpg --dearmor --yes -o "$tmp_dir/adoptium.gpg" "$tmp_dir/adoptium.asc"
sudo install -m 0644 "$tmp_dir/adoptium.gpg" /usr/share/keyrings/adoptium.gpg
rm -rf "$tmp_dir"
1.3 添加 Adoptium APT 软件源
echo 'Types: deb
URIs: https://packages.adoptium.net/artifactory/deb
Suites: bookworm
Components: main
Signed-By: /usr/share/keyrings/adoptium.gpg' | sudo tee /etc/apt/sources.list.d/adoptium.sources > /dev/null
*说明:bookworm 是 Debian 12 的代号,请根据你的 Debian 版本调整。
1.4 安装 Java 21
sudo apt update
sudo apt install temurin-21-jdk -y
预期输出类似:

第二部分:安装 Jenkins
2.1 添加 Jenkins 官方软件源
Jenkins 官方为 Debian/Ubuntu 提供了专门的软件源。我们使用 wget 下载并安装 GPG 密钥。
# 创建密钥存放目录
sudo mkdir -p /etc/apt/keyrings
# 下载 Jenkins GPG 密钥
sudo wget -O /etc/apt/keyrings/jenkins-keyring.asc \
https://pkg.jenkins.io/debian-stable/jenkins.io-2026.key
# 添加 Jenkins APT 源
echo "deb [signed-by=/etc/apt/keyrings/jenkins-keyring.asc]" \
https://pkg.jenkins.io/debian-stable binary/ | sudo tee \
/etc/apt/sources.list.d/jenkins.list > /dev/null
2.2 安装 Jenkins
sudo apt update
sudo apt install jenkins -y
2.3 启动并设置开机自启
sudo systemctl start jenkins
sudo systemctl enable jenkins
sudo systemctl status jenkins # 检查运行状态
2.4 获取初始管理员密码
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
2.5 访问 Jenkins Web 界面
浏览器访问http://192.168.102.238:8080输入初始密码完成初始化向导。建议选择"安装推荐的插件"。
防火墙提醒:如果服务器开启了防火墙,需要放行 8080 端口。
sudo ufw allow 8080/tcp
第三部分:安装GitLab(中文版)
极狐GitLab(GitLab JH)是 GitLab 官方为中国用户提供的本地化版本,从界面到文档都做了完整的中文适配,服务器位于境内,访问速度更快。(主机内存不小于4G,最好是8G)
3.1 安装依赖包
sudo apt update
sudo apt install -y curl openssh-server ca-certificates tzdata perl
3.2 添加极狐GitLab 软件源
curl --location "https://packages.gitlab.cn/repository/raw/scripts/setup.sh" | sudo bash
3.3 安装极狐GitLab
sudo EXTERNAL_URL="http://192.168.102.238" apt install gitlab-jh -y
如果你的 80 端口已被占用,可以修改为其他端口:
sudo EXTERNAL_URL="http://192.168.102.238:8888" apt install gitlab-jh -y
3.4 重新配置并启动 GitLab
# 重新配置 GitLab(这个过程可能需要几分钟)
sudo gitlab-ctl reconfigure
# 查看服务状态
sudo gitlab-ctl status
# 获取初始 root 密码
sudo cat /etc/gitlab/initial_root_password
重要提示:这个密码文件会在 24 小时后自动删除,请务必在安装后尽快登录并修改密码。
3.5 访问极狐GitLab
浏览器访问 http://192.168.102.238,使用用户名 root 和初始密码登录,首次登录后记得修改密码。
第四部分:安装 Docker(配置国内镜像源)
Jenkins 需要使用 Docker 来构建应用镜像。我们使用阿里云镜像源进行安装,速度更快更稳定。
4.1 移除旧版本 Docker(如有)
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do
sudo apt-get remove $pkg -y 2>/dev/null
done
4.2 最简单的方法是利用社区提供的一键安装脚本,这类脚本通常会内置国内镜像源并自动处理配置。
你可以在Jenkins服务器(192.168.102.237)上执行以下命令:
使用阿里云镜像源安装:
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
4.3 将 Jenkins 用户加入 Docker 组
这一步至关重要,否则 Jenkins 无法执行 Docker 命令:
sudo usermod -aG docker jenkins
sudo systemctl restart jenkins
4.4 验证 Docker 安装
sudo docker --version
# 预期输出

第五部分:Jenkins 插件安装与配置
5.1 安装必要插件
登录 Jenkins Web 界面,进入 Manage Jenkins > Manage Plugins > Available,搜索并安装以下插件:
安装完成后,勾选 "Restart Jenkins when installation is complete" 重启 Jenkins。
5.2 生成极狐GitLab Personal Access Token
登录极狐GitLab,点击右上角头像 > Preferences > Access Tokens
输入 Token 名称(如
jenkins-token)勾选权限:
api、read_repository、write_repository点击 Create personal access token
立即复制并保存生成的 Token(关闭页面后无法再次查看。
5.3 在 Jenkins 中配置极狐GitLab 连接
进入 Manage Jenkins > Credentials > System > Global credentials
点击 Add Credentials:
Kind:选择 GitLab API token
API token:粘贴上一步生成的 Token
ID:填写
gitlab-token
进入 Manage Jenkins > Configure System,找到 GitLab 部分:
点击 Add GitLab Server
Connection name:
gitlabGitLab host URL:
http://192.168.102.238Credentials:选择
gitlab-token点击 Test Connection,验证成功
5.4 配置 GitLab Webhook(允许本地网络)
极狐GitLab 默认禁止向本地 IP 发送 Webhook,需要修改设置:
登录极狐GitLab,点击右上角头像 > Admin(需要管理员权限)
左侧菜单进入 Settings > Network
展开 Outbound requests,勾选 "Allow requests to the local network from hooks and services"
在 "Local IP addresses and domain names that hooks and services can access" 中输入
192.168.102.237点击 Save changes
第六部分:创建 Jenkins Pipeline 任务
6.1 创建任务
Jenkins 首页点击 New Item
输入任务名称(如
my-app-deploy)选择 Pipeline,点击 OK
6.2 配置 GitLab Webhook 触发器
在任务配置页面,找到 Build Triggers
勾选 "Build when a change is pushed to GitLab"
复制下方的 GitLab CI Service URL(类似
http://192.168.102.237:8080/project/my-app-deploy)点击 高级 (Advanced) 按钮展开更多选项
点击 Generate 生成 Secret token,复制并保存
6.3 在极狐GitLab 中配置 Webhook
进入你的项目仓库,点击 Settings > Webhooks
URL:粘贴 Jenkins 的 Service URL
Secret Token:粘贴 Jenkins 生成的 Secret token
勾选 Push events(也可按需勾选其他触发事件)
取消勾选 Enable SSL verification(内网环境)
点击 Add webhook
点击 Test > Push events,验证连通性,期望返回
HTTP 200
第七部分:配置 Kubernetes 集群访问凭证
7.1 获取 kubeconfig 文件
在 K8s 控制节点(192.168.102.233)上执行:
cat ~/.kube/config
复制输出的全部内容。
7.2 在 Jenkins 中添加 K8s 凭证
进入 Manage Jenkins > Credentials > Global credentials
点击 Add Credentials:
Kind:选择 Secret file
File:上传 kubeconfig 文件,或在下方的 Secret 文本框中直接粘贴内容
ID:填写
k8s-credential点击 Create
第八部分:编写 Pipeline 脚本 (Jenkinsfile)
在项目根目录下创建 Jenkinsfile,以下是完整示例:
pipeline {
agent any
environment {
// ========== 请根据实际情况修改变量 ==========
// 镜像仓库地址(如 Docker Hub 或 Harbor)
IMAGE_REPO = 'your-registry.com/your-app'
// K8s 命名空间
K8S_NAMESPACE = 'default'
// GitLab 项目地址
GIT_URL = 'http://192.168.102.238/your-group/your-project.git'
// ===========================================
// 动态生成镜像标签:构建号 + Git Commit 短哈希
IMAGE_TAG = "${env.BUILD_NUMBER}-${sh(returnStdout: true, script: 'git rev-parse --short HEAD').trim()}"
}
stages {
stage('拉取代码') {
steps {
checkout scmGit(
branches: [[name: 'main']],
userRemoteConfigs: [[
url: GIT_URL,
credentialsId: 'git-credential' // 如需私有仓库,先配置 Git 凭证
]]
)
}
}
stage('代码审计与构建') {
steps {
// 根据项目类型选择构建命令
// Java/Maven 项目:
sh 'mvn clean package -DskipTests'
// Node.js 项目:
// sh 'npm install && npm run build'
// Python 项目:
// sh 'pip install -r requirements.txt'
}
}
stage('构建并推送镜像') {
steps {
sh """
docker build -t ${IMAGE_REPO}:${IMAGE_TAG} .
docker push ${IMAGE_REPO}:${IMAGE_TAG}
"""
}
}
stage('部署到 Kubernetes') {
steps {
withKubeConfig([credentialsId: 'k8s-credential']) {
sh """
kubectl set image deployment/your-app \
your-app=${IMAGE_REPO}:${IMAGE_TAG} \
-n ${K8S_NAMESPACE}
kubectl rollout status deployment/your-app \
-n ${K8S_NAMESPACE} --timeout=5m
"""
}
}
}
}
post {
success {
echo "✅ 部署成功!镜像: ${IMAGE_REPO}:${IMAGE_TAG}"
}
failure {
echo "❌ 部署失败,请检查日志"
}
}
}
关于 Git 凭证的补充说明
如果你的 GitLab 项目是私有的,需要在 Jenkins 中添加 Git 凭证:
进入 Manage Jenkins > Credentials > Global credentials
点击 Add Credentials:
Kind:选择 Username with password
Username:你的 GitLab 用户名
Password:你的 GitLab 密码或 Personal Access Token
ID:填写
git-credential
在
Jenkinsfile中引用该凭证 ID
第九部分:最终验证与测试
9.1 提交代码触发构建
git add .
git commit -m "feat: 初始化 CI/CD 流水线"
git push origin main
9.2 监控 Jenkins 构建
登录 Jenkins,进入任务页面
点击 Last Build 查看实时日志
观察每个 Stage 的执行状态
9.3 验证 K8s 部署
在 K8s 控制节点上执行:
kubectl get pods -n default
kubectl get deployment -n default