
目录一、前言二、Jenkins 介绍2.1 Jenkins 是什么2.2 什么是 Jenkins 的 CI/CD2.3 一条典型的流水线长什么样2.4 Jenkins 突出优势三、Linux 系统部署Docker3.1 卸载旧版本如有3.2 安装必要的依赖3.3 添加 Docker 仓库使用国内镜像源3.4 安装docker3.5 配置镜像加速3.6 设置 Docker 开机自启非必须3.7 基于docker 安装mysql3.7.1 创建本地目录3.7.2 创建mysql配置文件3.7.3 启动mysql容器四、Docker搭建 Jenkins与配置Jenkins4.1 Docker 搭建Jenkins4.2 初始化Jenkins与配置4.2.1 获取密码并登录4.2.2 Jenkins 基本插件安装4.2.3 创建管理员密码4.2.4 安装Maven 插件4.3 Jenkins 基本环境配置4.3.1 Git 配置4.3.2 目标服务器配置五、配置Jenkins 任务5.1 添加配置任务5.2 配置获取Git代码5.3 配置打jar包的JDK环境5.4 指定maven打包信息5.5 包传输与服务启动配置六、写在文末一、前言在日常项目开发中涉及到各种中间件的安装配置和运维尤其是当docker 技术的成熟后在现代化的项目开发模式中可以说docker技术已经成了互联网公司的标配基于docker 不仅可以快速构建出各种复杂的环境还可以快速搭建自动化流水线的工作本篇将详细介绍如何在Linux 环境下部署Docker环境并基于Docker 环境搭建Jenkins流水线。二、Jenkins 介绍2.1 Jenkins 是什么Jenkins 就像一个不知疲倦的自动化管家它能把你从代码提交到上线部署过程中那些重复、繁琐的手动操作全部用自动化流水线串联起来让提交代码到服务上线变得顺滑高效你可以把它理解成一个高度可定制的软件生产工厂。2.2 什么是 Jenkins 的 CI/CDJenkins 实现 CI/CD 的核心就是定义并执行一套流水线Pipeline这套流水线涵盖了两大环节持续集成CI开发人员频繁地将代码合并到主干。每次合并Jenkins 都会自动拉取代码、编译构建、并运行各类自动化测试如单元测试、集成测试。它的目标是 快速反馈 尽早发现集成错误防止问题累积。持续交付/部署CD在 CI 验证通过后Jenkins 会自动将构建产物如一个.jar包或一个 Docker 镜像部署到测试、预发布甚至生产环境。如果做到完全自动化部署到生产就是持续部署如果部署到生产前还需要一次手动点一下确认则称为持续交付。2.3 一条典型的流水线长什么样一条完整的 CI/CD 流水线通常包含以下几个标准阶段代码检出一旦开发者将代码推送到 Git 仓库通过 Webhook 自动触发Jenkins 立即将最新的代码拉取到构建环境中。编译与测试在指定的环境如 Maven、Node.js中执行编译和打包并运行单元测试生成测试报告。构建与推送镜像将打包好的应用构建成 Docker 镜像并推送到镜像仓库如 Harbor 或 Docker Hub方便后续部署时拉取。部署上线Jenkins 通过 SSH 连接到目标服务器拉取新镜像并重启容器或者调用 Kubernetes API自动更新集群中的应用。2.4 Jenkins 突出优势Jenkins 具有下面的突出优势开源与跨平台基于 Java 开发可以在 Windows、Linux、macOS 等主流系统上运行。强大的插件生态拥有超过 2000 种插件几乎能与市面上所有开发、测试、部署工具集成。分布式构建采用主从Master-Agent架构可以将构建任务分发到多个节点上并行执行显著提升构建效率。可以说任何需要将重复、易错的手动操作进行自动化的场景都是Jenkins的用武之地。无论是小型团队的快速迭代还是大型互联网公司复杂的微服务系统Jenkins都能通过其强大的插件生态和灵活的流水线能力成为支撑业务高效运转的可靠基石三、Linux 系统部署Docker在实际工作中可能是一台全新的虚拟机或者是一个干净的云服务器环境需要你自己手动安装和部署docker本次使用 YUM 官方仓库安装这种方式最简单也方便与系统适配。在正式开始部署操作之前需要提前准备好相应的环境如下linux 系统的云服务器或者虚拟机基本配置4核8G推荐确保服务器网络畅通下面看具体的操作过程。3.1 卸载旧版本如有执行下面的命令对当前系统中旧的docker版本进行卸载sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine看到下面的效果说明执行成功3.2 安装必要的依赖在手动安装docker 的时候会检查一些前置依赖项是否存在否则会安装失败执行下面的命令将必要的依赖安装一下sudo yum install -y yum-utils device-mapper-persistent-data lvm23.3 添加 Docker 仓库使用国内镜像源如果不添加的话拉取镜像的时候从官方拉取会非常慢经常会超时而失败建议配置一下sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo3.4 安装docker上面的准备工作做完后执行下面的命令开始安装dockersudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin3.5 配置镜像加速配置之后后续拉取镜像的时候可以提升下载镜像的速度在linux 操作窗口依次执行下面2条命令sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json -EOF { registry-mirrors: [ https://docker.m.daocloud.io, https://hub-mirror.c.163.com, https://mirror.ccs.tencentyun.com ] } EOF重启 Docker 使配置生效sudo systemctl daemon-reload sudo systemctl restart docker3.6 设置 Docker 开机自启非必须设置之后可以避免某些服务器宕机后重启而docker服务忘了重启的问题sudo systemctl enable docker sudo systemctl start docker3.7 基于docker 安装mysqlDocker 安装成功后为了验证是否可以正常使用下面以平时使用较多的mysql服务为例演示下使用docker安装mysql的过程。3.7.1 创建本地目录下面的目录也是mysql容器数据卷的本地映射目录# 数据目录必建 sudo mkdir -p /data/docker/mysql/data # 配置文件目录可选 sudo mkdir -p /data/docker/mysql/conf # 日志目录可选 sudo mkdir -p /data/docker/mysql/logs # 设置权限MySQL 容器内用户通常是 uid 999 sudo chown -R 999:999 /data/docker/mysql3.7.2 创建mysql配置文件在上面的/data/docker/mysql/conf目录下创建一个 my.cnf 的文件将下面的配置信息粘贴进去更多更完善的配置信息可以参与相关的资料根据自己的需要添加[mysqld] character-set-serverutf8mb4 collation-serverutf8mb4_unicode_ci default-time-zone08:00 max_connections5003.7.3 启动mysql容器使用下面的命令启动mysql 8 的容器第一次会去拉取mysql8的镜像docker run -d \ --name mysql_82 \ -p 13306:3306 \ -v /data/docker/mysql/conf/my.cnf:/etc/mysql/my.cnf \ -v /data/docker/mysql/data:/var/lib/mysql \ -v /data/docker/mysql/logs:/var/log/mysql \ -e MYSQL_ROOT_PASSWORD设置你的root密码 \ -e TZAsia/Shanghai \ mysql:8.0使用 docker ps命令查看下是否启动成功四、Docker搭建 Jenkins与配置JenkinsJenkins 在很多项目团队中可以说是非常重要的存在是一个项目标准化交付的重要工具也是实现项目可持续交付的重要连接基于上面安装成功的Docker 环境接下来介绍如何基于Docker完成Jenkins服务的部署。4.1 Docker 搭建Jenkins执行下面的docker命令开启一个jenkins服务网上很多资料里面使用那个通用的jenkins镜像在安装之后在后续安装插件的时候会拉取失败这个需要做好甄别docker run -d \ --name jenkins \ -p 19097:8080 \ -p 50000:50000 \ -v /usr/local/soft/jenkins:/var/jenkins_home \ -v /var/run/docker.sock:/var/run/docker.sock \ --user root \ -e TZAsia/Shanghai \ -e JAVA_OPTS-Xms512m -Xmx1024m -Duser.timezoneAsia/Shanghai \ m.daocloud.io/docker.io/jenkins/jenkins:latest最后看到下面的效果说明安装完成4.2 初始化Jenkins与配置4.2.1 获取密码并登录容器启动后访问http://你的服务器IP:19097会看到一个解锁页面需要输入初始管理员密码获取密码有两种方式1从容器日志里找推荐日志里会有一串密码复制出来就行docker logs jenkins 21 | grep administrator password2直接去文件里看docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword将上面的密码拷贝进去点击继续4.2.2 Jenkins 基本插件安装后续配置jenkins任务的时候需要依赖某些必要的插件需要提前安装一下紧接着上一步点击继续来到下面的页面两个任何一个都可以选择这里我选择第二个进入之后可以勾选必要的插件进行安装也可以在搜索框搜索必要的插件等待下面的安装进度走完即可4.2.3 创建管理员密码管理员账号我为了以后登录之后给团队其他人员创建账号和管理账号使用在这里输入你的管理员账号和密码4.2.4 安装Maven 插件以Java项目为例构建任务的时候需要对springboot 项目进行打包需要提前安装一下maven插件在设置那里从全局工具配置进入4.3 Jenkins 基本环境配置在正式开始配置jenkins任务之前需要做一些认证配置比如git拉取代码的配置服务器秘钥等配置下面分别说明。4.3.1 Git 配置在日常开发中很多项目都是托管在Git上面后续构建的时候需要从Git上拉取代码从右上角的设置按钮点击之后进入里面的凭据管理点击添加凭据选择第一个即可如果有服务器的话比如需要配置跨服务器文件传输一般可以通过下面的ssh方式配置4.3.2 目标服务器配置后续会涉及到jenkins任务所在机器与目标部署服务的机器文件传输一般需要配置ssh这个安全性比较高当然也可以通过账号密码方式从下面的系统配置进去找到下面的位置后填写必要的目标机器信息五、配置Jenkins 任务上面的所有准备工作都是为了后面在Jenkins 上配置流水线任务做准备的接下来以一个springboot项目为例进行说明演示下如何在Jenkins 上配置一个流水线任务。5.1 添加配置任务登录进入Jenkins 主页然后点击添加item在弹出框输入任务名称选择自由风格的即可点击确定后从上到下依次在各个模块配置下面的信息看后面的配置流程。5.2 配置获取Git代码第一步就是先从Git仓库获取源码拉到了源码才能进行后面的流程参考下面截图中的信息在这个Git 这个输入框中填写完整5.3 配置打jar包的JDK环境这一步设置后续基于拉取下来的springboot 项目代码指定JDK的打包环境、版本一般与你的项目中使用的JAVA版本保持一致即可5.4 指定maven打包信息执行maven 打包命令这里选择的maven版本即为前面配置的工具里的maven工具注意在前面选择maven工具版本的时候要与项目中的maven打包插件版本不要相差太大了5.5 包传输与服务启动配置这个是最后一步将jenkins上打好的包传输到远程目标部署的机器上的指定目录下补充说明在真实的项目构建配置中中间可能还涉及到很多复杂的配置步骤比如拉取完成代码后还需要对代码进行安全扫描有的还需要在构建完成后给指定人员指定邮箱发送邮件等六、写在文末本文通过实际操作演示了如何基于一个全新的linux 环境部署docker 到完成jenkins任务搭建、部署、配置和任务配置的完整过程有兴趣的同学还可以继续深入研究本篇到此结束感谢观看。