如何使用Linux Jenkins进行持续集成
导读:在 Linux 上使用 Jenkins 搭建持续集成 一 环境准备与安装 安装 Java 8/11(Jenkins 运行依赖),例如在 CentOS/RHEL 上执行:sudo yum install -y java-11-openjdk...
在 Linux 上使用 Jenkins 搭建持续集成
一 环境准备与安装
- 安装 Java 8/11(Jenkins 运行依赖),例如在 CentOS/RHEL 上执行:sudo yum install -y java-11-openjdk-devel;在 Ubuntu/Debian 上执行:sudo apt update & & sudo apt install -y openjdk-11-jdk。完成后用 java -version 验证。
- 安装 Jenkins(二选一):
- 包管理安装(推荐)
- Ubuntu/Debian:
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 - CentOS/RHEL:
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
sudo yum install -y jenkins
- Ubuntu/Debian:
- Docker 运行(可选):docker pull jenkins/jenkins:lts,后续通过卷挂载 JENKINS_HOME 与宿主机工具链。
- 包管理安装(推荐)
- 启动与开机自启:sudo systemctl start jenkins & & sudo systemctl enable jenkins;访问 http://服务器IP:8080 进入初始化页面。
- 防火墙放行:
- firewalld:sudo firewall-cmd --permanent --add-port=8080/tcp & & sudo firewall-cmd --reload
- ufw:sudo ufw allow 8080
二 初始化与安全配置
- 解锁与插件安装:首次访问 http://IP:8080,从 /var/lib/jenkins/secrets/initialAdminPassword 读取初始密码并填入;选择 Install suggested plugins 安装常用插件(如 Git、Maven Integration 等)。
- 创建管理员账户,完成向导。
- 全局工具与凭据:进入 系统管理 → 全局工具配置,配置 JDK、Git、Maven(可勾选自动安装);在 系统管理 → 管理凭据 中添加 Git/仓库账号、SSH 私钥 等。
- 系统配置要点:在 系统管理 → 系统设置 可配置 Jenkins URL、邮件通知、工作空间/构建日志目录 等;如使用 Tomcat 部署,可将 WAR 放入 webapps 并启动 Tomcat。
三 创建 CI 任务与触发器
- Freestyle 任务(通用)
- 源码管理:选择 Git,填写仓库 URL 与分支(如 */main)。
- 构建触发器:
- 轮询 SCM:日程表达式如 **H/5 * * * *** 表示每 5 分钟检查一次提交;
- Webhook:在代码托管平台配置 Push/PR 事件回调到 http://JENKINS_URL/github-webhook/(或 GitLab 等效路径),实现提交即触发。
- 构建步骤:选择 Invoke top-level Maven targets,目标为 clean package;或执行 Shell 脚本(如运行测试、打包、归档产物)。
- 构建后操作:可归档 .jar/.war、发布 JUnit 报告、发送 邮件/企业微信/钉钉 通知。
- Pipeline 任务(推荐,可版本化管理流程)
- 新建 “Pipeline”,在 Pipeline 脚本 中使用如下示例(按项目调整仓库与命令):
pipeline { agent any tools { maven ‘Maven-3’ jdk ‘JDK-11’ } // 与全局工具配置中的名称保持一致 stages { stage(‘Checkout’) { steps { git branch: ‘main’, url: ‘https://github.com/example/project.git’ } } stage(‘Build’) { steps { sh ‘mvn -B -DskipTests clean package’ } } stage(‘Test’) { steps { sh ‘mvn test’ } post { always { junit ‘/target/surefire-reports/*.xml’ } } } stage(‘Archive’) { steps { archiveArtifacts artifacts: '/target/*.jar’, fingerprint: true } } } post { success { echo ‘Build succeeded.’ } failure { echo ‘Build failed.’ } } }
上述流程覆盖 拉取代码 → 构建 → 测试 → 报告 → 归档 的完整 CI 链路。
- 新建 “Pipeline”,在 Pipeline 脚本 中使用如下示例(按项目调整仓库与命令):
四 部署与扩展
- 远程部署与发布:安装 Publish Over SSH 插件,在 系统设置 配置 SSH 服务器,在任务 构建后操作 中使用 “Send build artifacts over SSH” 将产物发布到测试/生产主机(可配合脚本执行重启)。
- 分布式构建:在 系统管理 → 节点管理 添加 Agent,将耗时任务分发到多台机器,提高并发与隔离性。
- 容器化与宿主工具链:若需在容器内执行 docker build/push,可将宿主机的 /var/run/docker.sock 与 /usr/bin/docker 挂载到 Jenkins 容器,并在容器内安装 Docker CLI。
五 维护与优化
- 性能与稳定性:在 JENKINS_JAVA_OPTIONS 中合理设置 -Xms/-Xmx(如 -Xms1g -Xmx2g),避免 OOM;为 Maven 配置 settings.xml(镜像源、私有仓库)。
- 磁盘与历史:在任务配置中启用 构建保留策略(如保留最近 10 次),定期清理工作空间与旧日志。
- 安全加固:启用 CSRF 保护、最小权限的 RBAC、限制 代理到 Master 的权限、对外仅暴露必要端口(如 8080/443),并定期升级 Jenkins 与插件。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何使用Linux Jenkins进行持续集成
本文地址: https://pptw.com/jishu/754922.html
