当前位置: 首页 > news >正文

Docker搭建Jenkins实现自动部署:快速高效的持续集成之道!

全文目录:

    • 开篇语
    • 前言
    • 为什么选择Docker搭建Jenkins?
    • 搭建步骤
      • 1. 准备工作
      • 2. 拉取Jenkins官方镜像
      • 3. 启动Jenkins容器
      • 4. 获取Jenkins的初始管理员密码
      • 5. 配置Jenkins
      • 6. 配置自动化部署
        • 6.1 创建一个新的Jenkins任务
        • 6.2 配置源码管理
        • 6.3 配置构建触发器
        • 6.4 配置构建步骤
        • 6.5 配置构建后操作
        • 6.6 保存并执行构建
      • 7. 使用Jenkins实现持续集成与部署
    • 总结
    • 文末

开篇语

哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云/阿里云/华为云/51CTO;欢迎大家常来逛逛

  今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。

  我是一名后端开发爱好者,工作日常接触到最多的就是Java语言啦,所以我都尽量抽业余时间把自己所学到所会的,通过文章的形式进行输出,希望以这种方式帮助到更多的初学者或者想入门的小伙伴们,同时也能对自己的技术进行沉淀,加以复盘,查缺补漏。

小伙伴们在批阅的过程中,如果觉得文章不错,欢迎点赞、收藏、关注哦。三连即是对作者我写作道路上最好的鼓励与支持!

前言

  在现代软件开发过程中,自动化部署和持续集成(CI/CD)已经成为了必不可少的组成部分。而Jenkins,作为全球最流行的开源自动化服务器,广泛应用于各种自动化任务,特别是持续集成和自动部署。结合Docker的轻量化与可移植性,我们可以更快速地搭建一个高效、灵活且易于扩展的Jenkins自动部署环境。

  在本文中,我们将一步步带领大家搭建一个基于Docker的Jenkins环境,并通过自动化流程实现自动部署功能,提升开发效率与运维自动化水平。

为什么选择Docker搭建Jenkins?

  Docker为Jenkins提供了一个轻量级、隔离的环境,避免了传统安装方式中可能遇到的兼容性问题。通过Docker容器化的方式,我们能够:

  • 快速部署:几乎不需要复杂的配置,只需拉取镜像并启动容器,几分钟内即可完成搭建。
  • 环境隔离:Jenkins在独立容器中运行,确保与宿主机及其他服务的隔离,降低潜在冲突。
  • 高可扩展性:Docker让Jenkins的扩展变得更加容易,可以随时创建新的容器来扩展构建能力。
  • 便捷迁移:Docker容器可以在不同环境中迁移,极大提高了跨平台的一致性。

搭建步骤

1. 准备工作

  在开始之前,确保你的机器上已经安装好了Docker。可以通过以下命令来检查是否安装成功:

docker --version

如果没有安装Docker,可以参考官方文档进行安装。

2. 拉取Jenkins官方镜像

  Docker Hub上提供了Jenkins的官方镜像,可以直接通过以下命令来拉取:

docker pull jenkins/jenkins:lts

这里我们选择了Jenkins的长期支持(LTS)版本,因为它更加稳定,适合生产环境。

3. 启动Jenkins容器

  拉取镜像之后,我们可以使用Docker运行Jenkins容器。为了让Jenkins能够持久化数据,我们需要将Jenkins的数据目录挂载到宿主机上。以下命令启动一个Jenkins容器:

docker run -d --name jenkins -p 8080:8080 -p 50000:50000 -v jenkins_home:/var/jenkins_home jenkins/jenkins:lts

这条命令的解释如下:

  • -d:后台运行容器。
  • --name jenkins:为容器指定一个名称。
  • -p 8080:8080:将容器的8080端口映射到宿主机的8080端口,供我们访问Jenkins界面。
  • -p 50000:50000:用于Jenkins Master与Slave之间的通信。
  • -v jenkins_home:/var/jenkins_home:挂载宿主机目录jenkins_home到容器的/var/jenkins_home,确保Jenkins的数据持久化。

4. 获取Jenkins的初始管理员密码

  Jenkins启动之后,我们需要获取初始管理员密码来登录Jenkins界面。可以通过以下命令获取:

docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword

复制该密码后,在浏览器中访问http://localhost:8080,输入密码即可进入Jenkins的初始设置界面。

5. 配置Jenkins

  进入Jenkins的网页界面后,按照以下步骤进行配置:

  • 安装推荐的插件。
  • 创建第一个管理员用户。
  • 配置Jenkins的基本环境。

这些步骤完成后,Jenkins就已经准备好进行自动化构建和部署了。

6. 配置自动化部署

  在Jenkins中配置自动化部署通常需要以下步骤:

6.1 创建一个新的Jenkins任务
  • 在Jenkins首页,点击左侧的“新建任务”。
  • 输入任务名称,选择“自由风格项目”,然后点击“确定”。
6.2 配置源码管理

在构建任务中,我们需要配置源码仓库。Jenkins支持Git、Subversion等版本控制系统。以Git为例:

  • 在“源码管理”部分,选择“Git”。
  • 填写Git仓库的URL和认证信息(如有需要)。
6.3 配置构建触发器
  • 在“构建触发器”部分,我们可以设置自动触发构建的条件。例如,可以选择“GitHub webhook”来在每次代码提交时自动触发构建,或者选择“定时构建”来按计划自动构建。
6.4 配置构建步骤

根据项目的需求,选择适合的构建步骤。对于Java项目,我们通常使用Maven或Gradle作为构建工具:

  • 选择“构建”部分,点击“增加构建步骤”,选择“调用Maven目标”。
  • 配置Maven的pom.xml文件和构建目标(如clean install)。
6.5 配置构建后操作

构建完成后,通常需要进行部署操作。这里我们可以选择不同的方式进行自动化部署,例如:

  • FTP/SFTP上传:将构建产物通过FTP或SFTP上传到远程服务器。
  • Docker部署:将构建产物构建成Docker镜像并推送到Docker Registry,或直接在远程服务器上启动Docker容器。
6.6 保存并执行构建

完成上述配置后,保存任务并手动触发一次构建,确保一切正常工作。

7. 使用Jenkins实现持续集成与部署

  一旦Jenkins搭建完成并配置好自动化部署任务,我们就可以实现持续集成(CI)和持续部署(CD)。每当有新的代码提交到仓库时,Jenkins会自动拉取代码,执行构建、测试、部署等任务,实现从代码提交到生产环境的自动化流程。

总结

  通过Docker搭建Jenkins,不仅能让你迅速搭建一个高效的持续集成与自动化部署平台,而且能够通过容器的隔离性和便捷性,极大简化维护和迁移工作。结合Jenkins强大的插件生态和灵活的任务配置,完全能够满足不同项目的自动化需求。

  无论是个人项目还是企业级应用,搭建一个Jenkins自动部署环境,都是实现快速交付、提高开发效率的关键一步。在未来的开发中,持续集成与自动化部署将成为每个开发者必备的技能,Docker与Jenkins的结合,将让这一过程变得更加高效与简便。

… …

文末

好啦,以上就是我这期的全部内容,如果有任何疑问,欢迎下方留言哦,咱们下期见。

… …

学习不分先后,知识不分多少;事无巨细,当以虚心求教;三人行,必有我师焉!!!

wished for you successed !!!


⭐️若喜欢我,就请关注我叭。

⭐️若对您有用,就请点赞叭。
⭐️若有疑问,就请评论留言告诉我叭。


版权声明:本文由作者原创,转载请注明出处,谢谢支持!

http://www.lryc.cn/news/613776.html

相关文章:

  • 五十五、【Linux系统nginx服务】nginx安装、用户认证、https实现
  • 芯伯乐XBL6019 60V/5A DC-DC升压芯片的优质选择
  • 查看泰山派 ov5695研究(1)
  • 【重磅发布】flutter_chen_keyboard -专注于键盘相关功能
  • MFC扩展库BCGControlBar Pro v36.2:MSAA和CodedUI测试升级
  • Kotlin 数据容器 - MutableList(MutableList 概述、MutableList 增删改查、MutableList 遍历元素)
  • 【Qt开发】常用控件(二) -> enabled
  • 日本站群服务器与普通日本服务器对比
  • 服务器硬件电路设计之I2C问答(一):为什么I2C总线要加上拉电阻?
  • 汉明码:从原理到实现的深度解析
  • UniApp Vue3 TypeScript项目中使用xgplayer播放m3u8视频的显示问题
  • Emacs 折腾日记(二十九)—— 打造C++ IDE
  • 机柜内部除了服务器还有哪些组件?
  • 微软发布Project Ire项目:可自主检测恶意软件的人工智能系统
  • 微软公布Windows 2030,要彻底淘汰鼠标、键盘
  • 【概率论】均匀分布的伪随机数
  • WebForms 实例
  • 零成本建站:将 Windows 电脑变身为个人网站服务器
  • 如何规范你的Git commit?
  • WEEX参与欧洲两场重要Web3线下活动,助力社区协作与技术交流
  • 网络安全初学者学习心得
  • 半精度权重 及 Phi-3线性层的权重分布
  • Java基础知识总结
  • 若依前后端分离版学习笔记(七)—— Mybatis,分页,数据源的配置及使用
  • php防注入和XSS过滤参考代码
  • linux-LVM 逻辑卷管理
  • 嵌入式硬件接口总结
  • Linux文档压缩打包与安装
  • 解决苍穹外卖项目中 MyBatis - Plus 版本冲突问题
  • 基于大数据的地铁客流数据分析预测系统 Python+Django+Vue.js