Debian JSP开发中如何使用Jenkins
导读:在 Debian 上使用 Jenkins 构建与部署 JSP 项目的实践指南 一 环境准备与安装 安装 Java(推荐 OpenJDK 11): 执行:sudo apt update && sudo apt instal...
在 Debian 上使用 Jenkins 构建与部署 JSP 项目的实践指南
一 环境准备与安装
- 安装 Java(推荐 OpenJDK 11):
- 执行:
sudo apt update & & sudo apt install -y openjdk-11-jdk - 验证:
java -version
- 执行:
- 安装并启动 Jenkins(官方仓库方式,Debian 12 推荐签名源):
- 导入密钥:
curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo tee /usr/share/keyrings/jenkins-keyring.asc > /dev/null - 添加源:
echo "deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] https://pkg.jenkins.io/debian-stable binary/" | sudo tee /etc/apt/sources.list.d/jenkins.list > /devref - 安装与启动:
sudo apt update & & sudo apt install -y jenkins - 开机自启:
sudo systemctl enable --now jenkins - 查看初始密码:
sudo cat /var/lib/jenkins/secrets/initialAdminPassword - 访问控制台:
http://< 服务器IP> :8080,完成解锁与插件安装
- 导入密钥:
- 安装 Tomcat 9(作为 JSP 容器):
- 执行:
sudo apt install -y tomcat9 tomcat9-admin - 管理界面:默认位于
http://< 服务器IP> :8080/manager/html(需配置用户与权限)
- 执行:
- 安装 Maven 与 Git(JSP 项目常用构建与源码管理工具):
- 执行:
sudo apt install -y maven git
- 执行:
- 防火墙放行(如使用 UFW):
sudo ufw allow 8080
二 创建 Jenkins 任务与流水线
- 安装常用插件(首次或“插件管理”中安装):Pipeline、Git、Maven Integration、Credentials Binding、Docker(如需容器化)
- 新建任务:选择 Pipeline,在“Pipeline”处选择 Pipeline script from SCM,配置 Git 仓库与凭据;在仓库根目录放置 Jenkinsfile
- 示例 Jenkinsfile(Maven 多模块或传统 war 打包,部署到本地 Tomcat,使用 Tomcat Manager 部署):
说明:pipeline { agent any tools { maven 'Maven-3' // 在“全局工具配置”中预先配置 jdk 'OpenJDK-11' } environment { // 建议使用 Jenkins 凭据 ID(Credentials Binding) TOMCAT_URL = 'http://localhost:8080/manager/text' TOMCAT_USER = credentials('tomcat-manager-user') TOMCAT_PASS = credentials('tomcat-manager-pass') APP_NAME = 'myapp' WAR_PATH = "target/${ APP_NAME} .war" DEPLOY_CONTEXT = "/${ APP_NAME} " } stages { stage('Checkout') { steps { git branch: 'main', url: 'https://github.com/your-org/your-jsp-app.git' } } stage('Build') { steps { sh 'mvn -B clean package -DskipTests' archiveArtifacts artifacts: env.WAR_PATH, fingerprint: true } } stage('Deploy to Tomcat') { steps { sh ''' curl --upload-file "${ WAR_PATH} " \ --user "${ TOMCAT_USER} :${ TOMCAT_PASS} " \ "${ TOMCAT_URL} /deploy?path=${ DEPLOY_CONTEXT} & update=true" ''' } } } post { success { echo "Deployed ${ APP_NAME} to ${ TOMCAT_URL} ${ DEPLOY_CONTEXT} " } failure { echo "Build or deploy failed." } } }- 上述示例使用 Tomcat 的“Text”接口进行部署,需在 Tomcat 中配置具有部署权限的管理员用户(见下一节)
- 若使用 WAR 外部目录部署,可改为
sh 'cp ${ WAR_PATH} /var/lib/tomcat9/webapps/${ APP_NAME} .war & & systemctl reload tomcat9'(需赋予 jenkins 用户相应目录权限)
三 Tomcat 与权限配置
- 为 Tomcat Manager 添加可部署用户(编辑 /etc/tomcat9/tomcat-users.xml):
修改后重启 Tomcat:< tomcat-users> < role rolename="manager-script"/> < role rolename="manager-gui"/> < user username="deployer" password="StrongPass!23" roles="manager-script,manager-gui"/> < /tomcat-users>sudo systemctl restart tomcat9 - 权限与安全:
- 若采用“文件复制部署”,确保 /var/lib/tomcat9/webapps 对 jenkins 用户可写:
sudo chown -R tomcat:tomcat /var/lib/tomcat9/webapps & & sudo usermod -aG tomcat jenkins - 遵循最小权限原则,凭据使用 Jenkins Credentials 存储,避免明文
- 生产环境建议通过反向代理与 HTTPS 暴露 Jenkins 与 Tomcat 管理端
- 若采用“文件复制部署”,确保 /var/lib/tomcat9/webapps 对 jenkins 用户可写:
四 触发与通知优化
- 代码推送自动触发:
- 在 Jenkins 任务“构建触发器”勾选 GitHub hook trigger for GITScm polling(或对应平台的 Webhook)
- 在代码托管平台配置 Webhook 指向
http://< JENKINS_URL> /github-webhook/(注意公网可达与 CSRF 配置)
- 构建后处理与质量门禁:
- 归档构件(如
Archive the artifacts)、发布测试报告(如 JUnit)、设置 质量阈值 与 通知(邮件、企业微信、钉钉等)
- 归档构件(如
- 可选:使用 Jenkinsfile 多分支流水线,按分支策略自动创建与运行任务
五 常见问题与排查
- 端口冲突:
- Jenkins 或 Tomcat 默认均为 8080,需调整其一(如将 Tomcat 改为 8081 或反向代理统一端口)
- 修改 /etc/default/jenkins 中的
HTTP_PORT后重启:sudo systemctl restart jenkins
- Java 或路径问题:
- 确认
java -version输出为 OpenJDK 11;若 Jenkins 找不到 java,建立软链或正确设置JAVA_HOME
- 确认
- 权限错误(Permission denied):
- 构建或部署阶段报无权限,多为 jenkins 用户对项目目录或 Tomcat 目录无读写权限,按“Tomcat 与权限配置”修正
- 触发器无效:
- 公网无法访问 Webhook 时,使用 内网穿透 或 轮询;确保 Jenkins 与代码平台网络可达
- 插件安装慢:
- 在“插件管理-高级”更换 Update Site 为国内镜像源以加速
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian JSP开发中如何使用Jenkins
本文地址: https://pptw.com/jishu/775863.html
