Jenkins在Ubuntu中的持续集成实践
导读:在 Ubuntu 上落地 Jenkins 持续集成 一 环境准备与安装 安装 Java(建议 OpenJDK 17,亦可使用 OpenJDK 11) 命令:sudo apt update && sudo apt inst...
在 Ubuntu 上落地 Jenkins 持续集成
一 环境准备与安装
- 安装 Java(建议 OpenJDK 17,亦可使用 OpenJDK 11)
- 命令:
sudo apt update & & sudo apt install -y openjdk-17-jdk - 验证:
java -version
- 命令:
- 导入 Jenkins 仓库密钥与源(使用 signed-by 方式)
- 命令:
curl -fsSL https://pkg.jenkins.io/debian/jenkins.io-2023.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 binary/ \ | sudo tee /etc/apt/sources.list.d/jenkins.list > /dev/null sudo apt update sudo apt install -y jenkins
- 命令:
- 启动与开机自启
- 命令:
sudo systemctl start jenkins & & sudo systemctl enable jenkins - 检查:
sudo systemctl status jenkins
- 命令:
- 防火墙放行(如使用 UFW)
- 命令:
sudo ufw allow 8080 & & sudo ufw status
- 命令:
二 初始化与安全加固
- 解锁并完成初始化
- 访问:
http://< 服务器IP> :8080 - 初始密码:
sudo cat /var/lib/jenkins/secrets/initialAdminPassword - 选择安装推荐插件并创建管理员账户
- 访问:
- 基础安全配置
- 进入 Manage Jenkins → Configure Global Security
- 启用安全与 CSRF 保护
- 授权策略建议:Project-based Matrix Authorization Strategy 或 Role-Based Strategy
- 如需公网访问,建议配置 SSL/TLS(反向代理或 Ingress 方式)
三 工具链与全局配置
- 安装构建与版本控制工具
- 命令:
sudo apt install -y git maven(Node.js 可按需安装)
- 命令:
- 全局工具路径
- 进入 Manage Jenkins → Global Tool Configuration
- 配置 JDK、Git、Maven、Node.js 的安装路径或自动安装
- 邮件通知(可选)
- 进入 Manage Jenkins → Configure System → E-mail Notification
- 配置 SMTP 服务器与发件人,用于构建结果通知
四 创建任务与流水线示例
- Freestyle 任务(适合快速上手)
- 新建任务 → 选择 Freestyle project
- 源码管理:选择 Git,填写仓库 URL 与分支
- 构建触发器:可设置 轮询 SCM(如
H/5 * * * *每 5 分钟) - 构建步骤:例如
mvn clean package - 构建后操作:归档产物(如
target/*.jar)、发送邮件
- Pipeline 任务(推荐,代码即流程)
- 新建任务 → 选择 Pipeline
- 方式一:在界面直接编写 Jenkinsfile
- 方式二:选择 Pipeline script from SCM,从 Git 仓库根目录读取 Jenkinsfile
- 示例 Jenkinsfile(Java + Maven)
pipeline { agent any tools { maven 'Maven 3.8' // 需在 Global Tool Configuration 中定义 jdk 'OpenJDK 17' // 需在 Global Tool Configuration 中定义 } stages { stage('Checkout') { steps { git url: 'https://github.com/your-org/your-app.git', branch: 'main' } } stage('Build') { steps { sh 'mvn -B -DskipTests clean package' } } stage('Test') { steps { sh 'mvn test' } } stage('Archive') { steps { archiveArtifacts artifacts: 'target/*.jar', fingerprint: true } } } post { always { cleanWs() } failure { echo 'Build failed!' } success { echo 'Build succeeded!' } } } - 示例 Jenkinsfile(Python)
pipeline { agent any stages { stage('Checkout') { steps { git url: 'https://github.com/your-org/your-pyapp.git', branch: 'main' } } stage('Install') { steps { sh 'pip install -r requirements.txt' } } stage('Test') { steps { sh 'pytest --junitxml=reports/results.xml' } } stage('Archive') { steps { junit 'reports/results.xml' } } } }
五 触发与部署实践
- GitHub Webhook 自动触发
- GitHub 仓库:Settings → Webhooks → Add webhook
- Payload URL:
http://< jenkins-server> :8080/github-webhook/ - 事件:选择 Just the push event
- Jenkins 项目:勾选 Build when a change is pushed to GitHub
- 参数化构建(多环境发布)
- 项目配置勾选 This project is parameterized
- 添加 String Parameter(如
ENV,默认值dev) - 构建步骤中使用:
echo "当前环境:$ENV"或按$ENV选择部署脚本/配置
- 远程部署与通知
- 远程执行与传输:使用 Publish Over SSH 插件或
ssh/scp将产物发布到目标主机 - 构建后动作:归档产物、发布测试报告、发送邮件通知(如 Email Extension Plugin)
- 远程执行与传输:使用 Publish Over SSH 插件或
- 常见问题与排查
- 端口占用:修改 /etc/default/jenkins 中的
HTTP_PORT后重启sudo systemctl restart jenkins - 仓库访问:SSH 方式需将 Jenkins 用户的 SSH 公钥 添加到 Git 托管平台(如
su - jenkins后ssh-keygen -t rsa) - GPG 签名错误:确保使用最新的 jenkins.io-2023.key 并以
signed-by方式导入 - 构建环境不一致:在 Global Tool Configuration 固定 JDK/Maven/Node 版本,避免“在我机器能跑”问题
- 端口占用:修改 /etc/default/jenkins 中的
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Jenkins在Ubuntu中的持续集成实践
本文地址: https://pptw.com/jishu/789270.html
