Ubuntu JSP项目如何进行持续集成
小樊
37
2026-01-12 09:31:01
Ubuntu 上搭建 JSP 项目的持续集成
一 架构与准备
- 运行环境:安装 OpenJDK 11 或 17(Jenkins 要求 Java 8+),验证命令:java -version。
- 构建工具:安装 Maven(用于拉取依赖并打包 WAR),验证命令:mvn -v。
- 版本控制:安装 Git,验证命令:git --version。
- 应用容器:准备 Apache Tomcat 9(JSP 运行容器),建议将 Tomcat 安装至 /opt/tomcat 并配置好环境变量(如 JAVA_HOME、CATALINA_HOME)。
- 资源建议:至少 2GB 内存、10GB 磁盘,以保证 Jenkins 与构建流程稳定。
二 安装与初始化 Jenkins
- 安装方式一(系统包管理器,Ubuntu/Debian 通用):
- 导入密钥与源并安装:
sudo apt update
wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
sudo sh -c ‘echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list’
sudo apt update && sudo apt install -y jenkins
- 启动并设置开机自启:
sudo systemctl start jenkins && sudo systemctl enable jenkins
- 访问 http://<服务器IP>:8080,初始密码在 /var/lib/jenkins/secrets/initialAdminPassword。
- 安装方式二(Docker,便于隔离与迁移):
docker run -d --name jenkins -p 8080:8080 -p 50000:50000 -v jenkins_home:/var/jenkins_home jenkins/jenkins:lts
初始密码:docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword
- 防火墙:如启用 UFW,放行端口 8080(必要时调整端口)。
三 配置 Jenkins 与插件
- 首次进入选择“安装推荐插件”,并补充安装:Git Plugin、Maven Integration Plugin、Pipeline Plugin(可视化管理流水线)。
- 全局工具配置(Manage Jenkins → Global Tool Configuration):
- JDK:选择已安装的 OpenJDK 11/17(或自动安装)。
- Git:通常位于 /usr/bin/git。
- Maven:选择已安装的 Maven(或自动安装)。
四 创建 CI 任务与流水线
- 方式 A(Freestyle 任务,快速上手):
- 新建任务 → 选择 Freestyle project → 源码管理选择 Git,填写仓库 URL 与分支(如 main),配置凭证(SSH 或用户名/密码)。
- 构建触发器:
- 定时轮询:**Poll SCM H/5 * * * ***(每 5 分钟检查一次变更)。
- 事件触发:勾选 GitHub hook trigger for GITScm polling(需配置仓库 Webhook 指向 Jenkins)。
- 构建步骤:选择 Invoke top-level Maven targets,目标填写 clean package(生成 target/xxx.war)。
- 构建后操作:可勾选 Archive the artifacts(归档 target/*.war)、Publish JUnit test result report(发布测试报告)。
- 方式 B(Pipeline,推荐,便于标准化与扩展):
在项目根目录创建 Jenkinsfile,示例:
pipeline {
agent any
tools {
jdk ‘openjdk-11’
maven ‘maven-3.8.6’
}
stages {
stage(‘Checkout’) { steps { git branch: ‘main’, url: ‘https://github.com/yourname/jsp-project.git’ } }
stage(‘Build’) { steps { sh ‘mvn clean package’ } }
stage(‘Test’) { steps { sh ‘mvn test’ } }
stage(‘Deploy’) {
when { branch ‘main’ }
steps {
sshagent([‘tomcat-ssh-credentials’]) {
sh ‘scp target/*.war user@tomcat-server:/opt/tomcat/webapps/’
sh ‘ssh user@tomcat-server “systemctl restart tomcat”’
}
}
}
}
post {
success { emailext body: ‘Build succeeded: ${BUILD_URL}’, subject: ‘JSP Project Build Success’, to: ‘dev@example.com’ }
failure { emailext body: ‘Build failed: ${BUILD_URL}’, subject: ‘JSP Project Build Failure’, to: ‘dev@example.com’ }
}
}
说明:部署阶段通过 SSH 免密将 WAR 复制到 Tomcat webapps 并重启;凭证需在 Jenkins 中预先配置。
五 部署与运维要点
- 部署策略:
- 简单场景:Jenkins 节点与 Tomcat 同机时,可直接拷贝 WAR 到 /opt/tomcat/webapps 并重启;跨机建议使用 SSH 免密或 Tomcat Manager API 执行部署。
- 生产建议:引入 Nexus/Artifactory 做制品仓库,使用 滚动升级/蓝绿发布降低风险。
- 安全加固:
- 为 Jenkins、Tomcat 与管理端口设置最小权限访问控制;
- 凭证统一托管(Jenkins Credentials),避免明文;
- 限制构建代理与节点权限,开启审计日志。
- 性能与稳定性:
- 调整 Jenkins JVM 参数(如 -Xmx2048m),避免 OOM;
- 资源紧张时增加 Agent 节点或启用 并行构建;
- 定期备份 JENKINS_HOME(可用 ThinBackup 插件)。