Rocky Linux 9实战Jenkins与Harbor的CI/CD全链路配置指南在DevOps实践中持续集成与持续部署(CI/CD)已成为现代软件开发的标配。本文将手把手带你在Rocky Linux 9上搭建完整的CI/CD流水线从操作系统配置到最终实现Docker镜像自动推送到Harbor私有仓库的全过程。不同于简单的工具安装教程我们会重点关注各组件间的协同工作逻辑以及在实际生产环境中可能遇到的典型问题解决方案。1. 基础环境准备与优化Rocky Linux作为CentOS的替代品继承了RHEL的稳定性但在某些细节配置上有所不同。我们先从系统级优化开始1.1 系统安全策略调整# 临时关闭SELinux生产环境建议配置策略而非直接关闭 sudo setenforce 0 sudo sed -i s/^SELINUXenforcing/SELINUXpermissive/ /etc/selinux/config # 防火墙放行必要端口 sudo firewall-cmd --permanent --add-port8080/tcp # Jenkins sudo firewall-cmd --permanent --add-port80/tcp # Harbor HTTP sudo firewall-cmd --permanent --add-port443/tcp # Harbor HTTPS sudo firewall-cmd --reload1.2 配置高效软件源Rocky Linux 9的默认仓库可能不够全面我们需要添加EPEL和Jenkins官方源# 添加EPEL仓库 sudo dnf install -y epel-release sudo dnf config-manager --set-enabled crb # 配置阿里云镜像加速 sudo sed -e s|^mirrorlist|#mirrorlist|g \ -e s|^#baseurlhttp://dl.rockylinux.org/$contentdir|baseurlhttps://mirrors.aliyun.com/rockylinux|g \ -i.bak \ /etc/yum.repos.d/[Rr]ocky*.repo2. Java环境与Jenkins部署2.1 安装JDK 17Jenkins对Java版本有特定要求我们选择目前LTS版本的JDK 17# 安装OpenJDK 17 sudo dnf install -y java-17-openjdk-devel # 验证安装 java -version2.2 Jenkins安装与初始化使用官方仓库安装最新LTS版本# 添加Jenkins仓库 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-2023.key # 安装Jenkins sudo dnf install -y jenkins # 启动服务 sudo systemctl enable --now jenkins首次访问Jenkins时需要解锁sudo cat /var/lib/jenkins/secrets/initialAdminPassword提示初始化时建议选择安装推荐插件这包含了最常用的Git、Pipeline等基础组件。3. Docker环境深度配置3.1 安装最新Docker CE# 添加Docker官方仓库 sudo dnf config-manager --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo # 安装Docker引擎 sudo dnf install -y docker-ce docker-ce-cli containerd.io # 配置镜像加速 sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json -EOF { registry-mirrors: [https://你的ID.mirror.aliyuncs.com], exec-opts: [native.cgroupdriversystemd], log-driver: json-file, log-opts: { max-size: 100m } } EOF # 启动服务 sudo systemctl enable --now docker3.2 集成Jenkins与Docker为了让Jenkins能够执行Docker命令需要将jenkins用户加入docker组sudo usermod -aG docker jenkins sudo systemctl restart jenkins4. Harbor私有仓库部署4.1 准备Harbor安装环境Harbor需要docker-compose支持# 安装docker-compose sudo curl -L https://github.com/docker/compose/releases/download/v2.20.3/docker-compose-$(uname -s)-$(uname -m) \ -o /usr/local/bin/docker-compose sudo chmod x /usr/local/bin/docker-compose # 下载Harbor离线包 wget https://github.com/goharbor/harbor/releases/download/v2.8.2/harbor-offline-installer-v2.8.2.tgz tar xzvf harbor-offline-installer-v2.8.2.tgz cd harbor4.2 配置与安装编辑harbor.yml配置文件hostname: your.domain.com http: port: 80 https: port: 443 certificate: /your/cert/path private_key: /your/key/path harbor_admin_password: Harbor12345 database: password: root123 data_volume: /data执行安装sudo ./install.sh注意如果使用自签名证书需要在Docker配置中添加insecure-registriesinsecure-registries: [your.domain.com]5. Jenkins流水线实战5.1 创建Pipeline项目新建Item → 选择Pipeline类型在Pipeline部分选择Pipeline script from SCM配置Git仓库地址和凭证5.2 编写Jenkinsfile以下是一个完整的Docker构建推送示例pipeline { agent any environment { HARBOR_CRED credentials(harbor-cred) } stages { stage(Build) { steps { script { docker.build(${env.JOB_NAME}:${env.BUILD_ID}) } } } stage(Push) { steps { script { docker.withRegistry(https://your.domain.com, harbor-cred) { docker.image(${env.JOB_NAME}:${env.BUILD_ID}).push() } } } } } }5.3 配置凭证安全在Jenkins中添加Harbor登录凭证进入Manage Jenkins → Credentials添加Username with password类型的凭证在Pipeline中通过credentials()函数引用6. 高级配置与故障排查6.1 Jenkins插件管理推荐安装的核心插件Docker Pipeline提供Docker集成功能Credentials Binding安全管理敏感信息Blue Ocean现代化流水线UI6.2 常见问题解决方案问题1Docker构建时权限不足sudo chmod 777 /var/run/docker.sock问题2Harbor推送失败 检查Docker配置中的insecure-registries是否包含你的Harbor地址问题3Jenkins节点内存不足 调整JVM参数# 编辑/etc/sysconfig/jenkins JENKINS_JAVA_OPTIONS-Xmx2048m -XX:MaxRAMPercentage70.07. 性能优化实践7.1 Docker构建缓存策略在Dockerfile中合理排序指令FROM rocky:9 as builder # 安装依赖步骤放在前面 RUN dnf install -y build-essential COPY . /app WORKDIR /app RUN make FROM rocky:9 COPY --frombuilder /app/bin /usr/local/bin7.2 Jenkins分布式构建配置多个执行节点进入Manage Jenkins → Nodes添加新节点并配置SSH连接在Pipeline中通过agent标签指定节点7.3 Harbor存储优化配置垃圾回收策略# 进入Harbor安装目录 docker-compose stop ./gc docker-compose start在实际项目中这套配置已经稳定运行了多个微服务项目。一个特别有用的技巧是在Jenkins全局库中定义共享函数比如封装好的Docker构建推送逻辑这样各个项目都能复用相同的标准流程。