1. 准备基础环境
在Debian上部署Jenkins前,需先安装Java(Jenkins依赖Java运行环境)和Git(用于拉取代码)。推荐使用OpenJDK 11(兼容大多数项目):
sudo apt update && sudo apt upgrade -y # 更新系统包
sudo apt install openjdk-11-jdk git -y # 安装Java和Git
java -version # 验证Java安装(需显示版本信息)
git --version # 验证Git安装
若需使用Docker简化Jenkins管理,可额外安装Docker(可选):
sudo apt install docker.io -y
sudo systemctl enable --now docker # 启动Docker并设置开机自启
2. 安装Jenkins
通过官方仓库安装Jenkins(确保软件来源安全):
wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add - # 导入Jenkins GPG密钥
echo "deb http://pkg.jenkins.io/debian-stable binary/" | sudo tee /etc/apt/sources.list.d/jenkins.list # 添加Jenkins仓库
sudo apt update # 更新包列表
sudo apt install jenkins -y # 安装Jenkins
启动Jenkins服务并设置开机自启:
sudo systemctl enable jenkins # 设置开机自启
sudo systemctl start jenkins # 启动Jenkins服务
3. 配置Jenkins
首次访问Jenkins需完成初始化设置:
http://<Debian服务器IP>:8080,输入sudo cat /var/lib/jenkins/secrets/initialAdminPassword获取的初始密码。4. 配置SSH免密登录(用于远程部署)
若需将应用部署到远程服务器,需配置Jenkins与目标服务器的SSH免密登录:
ssh-keygen -t rsa -b 4096 -C "jenkins@deploy" # 默认保存路径~/.ssh/id_rsa
ssh-copy-id user@remote-server-ip # 替换为目标服务器用户名和IP
ssh user@remote-server-ip # 若无需输入密码则表示配置成功
~/.ssh/id_rsa复制)。5. 创建Jenkins任务(Freestyle Project示例)
以Freestyle Project为例(适合简单项目),步骤如下:
https://github.com/your-repo/my-java-app.git),若有私有仓库需添加凭据。H/5 * * * *表示每5分钟检查一次;或“Build when a change is pushed to GitHub”配合Webhook实现推送触发)。clean package,用于编译和打包项目)。target/*.jar,即打包后的JAR文件);target,传输到目标服务器时只保留文件名);/opt/apps/my-java-app,需提前创建)。6. 创建Jenkins任务(Pipeline示例)
若需更灵活的流程控制(如多分支管理、复杂部署逻辑),建议使用Pipeline(基于Jenkinsfile):
Jenkinsfile(需在项目根目录创建)。Jenkinsfile,定义流水线流程(以下为Java项目示例):pipeline {
agent any // 使用任意可用节点
tools {
maven 'maven-3.8.6' // 指定Maven工具(需在Jenkins全局工具中配置)
jdk 'openjdk-11' // 指定JDK工具(需在Jenkins全局工具中配置)
}
stages {
stage('Checkout') {
steps {
git branch: 'main', url: 'https://github.com/your-repo/my-java-app.git' // 拉取代码(分支可根据需求修改)
}
}
stage('Build') {
steps {
sh 'mvn clean package' // 编译和打包项目
}
}
stage('Deploy') {
steps {
sshPublisher(
publishers: [
sshPublisherDesc(
configName: 'remote-server', // SSH配置名称(与凭据对应)
transfers: [
sshTransfer(
sourceFiles: 'target/*.jar', // 源文件路径
removePrefix: 'target', // 移除前缀
remoteDirectory: '/opt/apps/my-java-app' // 目标目录
)
],
usePromotionTimestamp: false,
useWorkspaceInPromotion: false,
verbose: true
)
]
)
}
}
}
post {
success {
echo 'Deployment succeeded!' // 构建成功后输出日志
}
failure {
echo 'Deployment failed!' // 构建失败后输出日志
}
}
}
7. 触发构建与验证
http://<Jenkins服务器IP>:8080/github-webhook/)。/opt/apps/my-java-app)是否存在最新JAR文件,或通过ps -ef | grep java查看应用是否运行。注意事项
docker build和docker push步骤(需提前配置Docker Hub或私有仓库凭据)。/var/lib/jenkins目录)和数据,避免数据丢失。