Jenkins是基于Java的应用,需先安装Java运行环境(推荐OpenJDK 11及以上)。在Debian终端执行以下命令:
sudo apt update && sudo apt install -y openjdk-11-jdk
# 验证Java安装
java -version
确保输出显示Java版本信息,否则Jenkins无法启动。
wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
echo "deb http://pkg.jenkins.io/debian-stable binary/" | sudo tee /etc/apt/sources.list.d/jenkins.list
sudo apt update && sudo apt install -y jenkins
sudo systemctl enable --now jenkins
http://<Debian服务器IP>:8080,首次访问需输入初始管理员密码(路径:/var/lib/jenkins/secrets/initialAdminPassword,可通过cat命令查看)。/usr/lib/jvm/java-11-openjdk-amd64);/usr/bin/git);进入Jenkins首页,点击“New Item”,输入任务名称(如auto-deploy-demo),选择“Pipeline”类型,点击“OK”。
有两种方式定义流水线:
Jenkinsfile的场景(推荐做法,便于版本控制)。
Git,填写仓库URL(如https://github.com/your-repo/demo.git)和分支(如main);Jenkinsfile的路径(通常为项目根目录)。以下是一个涵盖“拉取代码→构建→测试→部署”全流程的Jenkinsfile示例(适用于Java项目):
pipeline {
agent any // 使用任意可用节点执行
environment {
// 定义环境变量(如版本号、部署路径)
VERSION = "1.0.${env.BUILD_NUMBER}"
DEPLOY_PATH = "/opt/apps/demo"
}
stages {
stage('Checkout') {
steps {
git branch: 'main', url: 'https://github.com/your-repo/demo.git'
}
}
stage('Build') {
steps {
sh 'mvn clean package -DskipTests' // Maven编译打包
}
}
stage('Test') {
steps {
sh 'mvn test' // 运行单元测试
}
post {
always {
junit '**/target/surefire-reports/*.xml' // 发布测试报告
}
}
}
stage('Deploy') {
when {
branch 'main' // 仅main分支触发部署
}
steps {
script {
// 停止旧服务(若存在)
sh 'ssh user@remote-server "systemctl stop demo-service || true"'
// 复制构建产物到远程服务器
sh 'scp target/demo-${VERSION}.jar user@remote-server:${DEPLOY_PATH}/demo.jar'
// 启动新服务
sh 'ssh user@remote-server "systemctl start demo-service"'
}
}
}
}
post {
success {
// 构建成功后发送邮件通知
mail to: 'team@example.com',
subject: "Jenkins Build Success: ${currentBuild.fullDisplayName}",
body: "The build has completed successfully."
}
failure {
// 构建失败时发送告警
mail to: 'team@example.com',
subject: "Jenkins Build Failed: ${currentBuild.fullDisplayName}",
body: "The build has failed. Please check the logs."
}
}
}
说明:
agent any:使用任意Jenkins节点执行任务;environment:定义全局环境变量,便于统一管理;stages:划分流水线的各个阶段(如代码拉取、构建、测试、部署);post:定义构建完成后的操作(如发送通知)。为实现代码提交后自动触发流水线,需配置触发器:
H/5 * * * *表示每5分钟检查一次代码变更);安装“Role-based Authorization Strategy”插件,实现基于角色的权限控制(如管理员、开发人员、运维人员),避免未授权操作。
使用“Credentials Binding”插件管理敏感信息(如Git SSH密钥、远程服务器密码):
withCredentials绑定凭据(如sshPublisher插件需使用SSH密钥)。安装“Monitoring”插件,监控Jenkins服务器的资源使用情况(CPU、内存、磁盘);结合“Email Extension”插件,实现构建失败时的邮件/钉钉报警。
main分支;/opt/apps/demo)是否存在最新构建的JAR文件,且服务是否正常运行。通过以上步骤,即可在Debian上实现Jenkins的自动化运维,覆盖代码管理、构建测试、部署上线的全流程,提升运维效率和系统稳定性。