基于Docker+Jenkins+Git的集成开发环境搭建
时间:2022-07-22
本文章向大家介绍基于Docker+Jenkins+Git的集成开发环境搭建,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
第一章: 是什么
Docker
Docker是基于Go语言编写, 用于解决运行环境和配置问题的软件容器 , 并方便做持续集成和整体发布的开源容器引擎 Docker详细内容学习 Docker简要内容学习
Jenkins
Jenkins是基于Java语言编写, 用于持续、自动构建/测试软件项目的持续集成(CI)工具 简书大佬讲解的关于Jenkins的教程 Jenkins中文官方文档
GIT
Git是基于C编写, 用于敏捷高效地对项目进行持续集成的分布式版本控制系统 Git简要教程
持续集成(CI)是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。 通俗的说,就是指对于开发人员的每一次代码提交,都自动地把Repository中所有代码Check out到一个空目录,并且自动运行所有Test Case。如果成功则接受这次提交,否则告诉所有人,这是一个失败的Revision。
第二章: 做什么
开发人员开发代码完成后, 将代码上传到git上面, git hook调用脚本将项目在Jenkins上进行构建. Jenkis构建完成后通过shell脚本将项目通过Docker打包成镜像文件, 通过将镜像文件部署到网站上, 我们就可以下载并运行镜像后直接在网页上面看到开发的成果了. 如下图:
整个流程的核心: Docker与Jenkins的结合
- 通过Docker管理Jenkins资源
- 通过Jenkins创建Docker镜像
第三章: 怎么做
1. 提前准备
- 一台提供Git服务的服务器(也可直接使用github或oschina服务);
- 一台运行Jenkins服务的服务器;
- 一台或若干Docker宿主机服务器;
2. 搭建环境
# 0. 在安装Jenkins的服务器上提前安装tomcat, maven以及JDK
# 1. 部署安装Jenkins(实际工作中Jenkins,docker,git应该不同服务器中, 但是非工作环境下服务器资源有限,因此安装在一个服务器下)
# a.在tomcat的webapps目录下,放入下载好的Jenkins的war包,下载地址如下(图1)
https://www.jenkins.io/download/
# b.启动tomcat,登陆Jenkins(图2)
http://4host:8080/jenkins/
# c.查看密码,复制密码到图2的管理员密码下, 成功后根据提示创建Jenkins的管理员账号和密码
cat /root/.jenkins/secrets/initialAdminPassword
# 2.搭建Docker宿主机, 安装步骤可见本人docker博客或者官网的安装文档
https://blog.csdn.net/qq_43371556/article/details/102631158
https://docs.docker.com/get-docker/
ps: 也可通过本次尝试的方法,利用yum命令进行直接下载. 步骤如下
a.下载docker
yum install docker
b.指定docker账号,用于专门登录docker
useradd -g docker docker -d /home/docker -s /bin/bash
c.修改账户docker的密码也为docker
echo "docker:docker" | chpasswd
d.创建父目录,该目录用于存放docker脚本,脚本deploy.sh见附件
mkdir /data/dokerfiles/scripts -p
e.赋予该文件夹属主为docker
chown -R docker:docker /data/dockerfiles
chmod +x deploy.sh
f.启动docker后,配置docker镜像加速,加速网址 https://www.daocloud.io/mirror#accelerator-doc
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io
systemctl daemon-reload
systemctl restart docker
g.重启docker后下载Tomcat镜像
docker pull tomcat
# 3.登录到Jenkins图形化页面( http://ip:8080/jenkins/ )
图1
图2
3. 操作Jenkins
## 一. 登录到Jenkins后,进行配置
# 1. 进行全局配置, 配置Maven,git,jdk等相关参数,见(图1-4),作用是指定这些软件或者配置文件的位置
# 2. 进行系统配置, 配置Publish over SSH, 作用是通过ssh的作用将项目部署到宿主机上, 如图5
# 3. 配置完成以后, 为了能够创建maven项目需要下载相关插件, 首先查看已安装的插件,安装如下插件(图6,图7)
Git Parameter Plug-In
GIT server Plugin
GitHub Branch Source Plugin
Maven Integration plugin
Publish Over SSH
Subversion Plug-in
GitLab
SSH
## 二. 安装插件
# 4. 安装方式
a. 在安装插件的页面有Updates,Available,Installed,Advanced, 分别代表可更新的,可下载的,已安装的,以及高级配置
b. 点击可下载的,在里面输入需要下载的插件名称 (需要什么就下载什么)
图1
图2
图3
图4
图5
图6
图7
4. 创建项目
## 一. 选择左侧工具栏, new item,创建maven项目
# 1. 在通用配置中, 配置
a. git参数, 用于将项目通过指定分支构建; string类型参数, 用于后期项目名称的统一定义(图1)
b. 源代码管理, 配置git仓库的url, 发布的分支(图2)
c. 构建后的配置, 配置docker相关参数信息(图3)
## 二. 构建项目
# 1. 在首页项目的name右边,点击倒三角, 选择Build with parameters(图4)
# 2. 构建成功后git/svn上面的项目即可被打包成镜像文件, 我们下载并运行相关镜像文件即可访问项目
图1
图2
图3
图4
图5
图6
- 需要注意的是,在构建项目后,需要根据模块去构建项目, 而不能整体的去构建项目
- 构建成功后,会将项目代码生成docker镜像文件,在docker所在宿主机上下载代码即可运行构建后的项目(而本实战使用了脚本,在构建后会自动的部署项目并运行)
- Python|编写自己的类
- 碎片化 | 第四阶段-45-session为空问题解决-视频
- 以后有机会写框架用得着的
- 合并两个不相关的Git仓库
- 用 Tensorflow 建立 CNN
- 碎片化 | 第四阶段-36-struts-spring结合jdbc实现删除功能-视频
- 跨域访问支持(Spring Boot、Nginx、浏览器)
- 自己动手写个聊天机器人吧
- 碎片化 | 第四阶段-37-sturts2-登录功能实现-视频
- Spring Cloud Edgware新特性之六:Artifact ID变更
- 用 RNN 训练语言模型生成文本
- 碎片化 | 第四阶段-38-Struts2登录session对象封装-视频
- LeetCode实战:子问题分析
- 5分钟构建一个自己的无人驾驶车
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- PWN - Use After Free
- windows环境的python踩坑记
- uniapp上传图片至服务器,获得在线图片链接预览(实战)
- linux中的字符串切片
- 视频配音篇,如何使用百度翻译将文本转换为mp3语音?
- Objective-C的hook方案/ Method Swizzling
- Python爬虫:无账号无限制获取企查查信息
- Spark Streaming——Spark第一代实时计算引擎
- bamtools分割bam文件
- 在genome browser中添加自己的注释文件
- 原理+代码|Python基于主成分分析的客户信贷评级实战
- Python办公自动化 | 从PPT到Word
- linux命令行参数getopts参数二选一
- 黎巴嫩首都爆炸能量有多大?物理学家看视频计算:300吨TNT!
- OracleDG 环境主备业务数据不同步备库报ORA-600错误的处理过程