Git+Jenkins+docker实现自动部署git拉取代码部署web服务

2023-05-16

Git+Jenkins+docker的持续集成环境构建

工作步骤思路(下图所示)

1.server1搭建好git仓库和用docker搭建好docker镜像仓库

2.server3用git命令去别的共用仓库拉取tale的源码,再上传到git仓库

3.server3制作好nginx配置好的docker镜像(这里我是用java命令去运行jar包的方式,所以不需要安装tomcat去支持)

4.server2部署Jenkins,用插件从server1的git仓库拉取tale的源码文件,再通过ssh发送到server3

5.server2上的Jenkins使用插件等功能用一个脚本在server3上部署tale博客系统到docker容器里然后运行容器

注意事项:

1.注意你自己的部署环境,jdk路径什么的,按照你的环境修改有的操作里面的参数,

2.还有是就是Jenkins下载插件版本兼容的问题,我这里Jenkins的版本是2.238,还有就是jdk跟maven之间的版本兼容问题,可以去网上搜一下它们兼容性

3.Jenkins下载插件的时候有没有下载成功,这个需要注意一下

环境部署

192.168.11.25:gitlab服务器、docker搭建registry镜像仓库

需要安装的软件:git、docker

192.168.11.26:Jenkins服务器

需要安装的软件:git、jdk、maven、tomcat、jenkins.war

192.168.11.27:git客户端、web服务器

需要安装的软件:git、jdk、docker

一、安装部署GitLab服务器或者用git构建代码仓库服务器还有docker的镜像仓库(这里建议服务器4G内存或者以上):192.168.11.25

注意:我这里用的是下载git去部署本地代码仓库服务器

方法一:GitLab服务器

配置YUM仓库

[gitlab-ce]
name=gitlab-ce
baseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7
repo_gpgcheck=0
gpgcheck=0
enabled=1
gpgkey=https://packages.gitlab.com/gpg.key

yum安装gitlab-ce:yum -y install gitlab-ce

加载配置文件并启动:gitlab-ctl reconfigure

启动服务:gitlab-ctl start

启动服务确定下面的状态正确(如下图所示)

其他的服务操作命令

启动:gitlab-ctl start

关闭:gitlab-ctl stop

重启:gitlab-ctl restart

重载配置:gitlab-ctl reconfigure

查看状态:gitlab-ctl status

然后进入该ip地址进行访问网页

方法二:git构建本地仓库

安装git构建本地仓库

yum -y install git

mkdir mygit.git

cd mygit.git

git --bare init

下载docker并运行registry镜像搭建docker镜像仓库

yum install -y yum-utils

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

yum -y install docker-ce-18.09.6

systemctl start docker && systemctl enable docker

docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --restart=always --name rregistry registry

二、客户端安装git下载tale项目包,再上传到gitlab服务器上:192.168.11.27

yum -y install git

生成私钥传给gitlab服务器

 ssh-keygen -t rsa

ssh-copy-id -i /root/.ssh/id_rsa root@192.168.11.25

下载项目包上传

mkdir git

cd git

git config --global user.name "admin"

git config --global user.email "admin@example.com"

git clone https://github.com/otale/tale.git

git clone root@192.168.11.25:/root/mygit.git

用户和密码为登录时的用户和密码

#到克隆的空库下
cd mygit/
#把下载的项目包里面的文件拷贝进来
mv ../tale/* ./
#添加当前目录全部文件提交上传
git add .
git commit -m "add project tale"
git push origin master

三、安装配置Jenkins服务器:192.168.11.26

1.安装配置好jdk

tar zxf jdk-8u91-linux-x64.tar.gz

mv jdk1.8.0_91 /usr/local/jdk1.8

vim /etc/profile

export JAVA_HOME=/usr/local/jdk1.8
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}

source /etc/profile

查看java版本查看是否安装成功:java -version

2.安装配置maven

tar zxf apache-maven-3.6.3-bin.tar.gz

mv apache-maven-3.6.3 /usr/local/maven3.6.3

vim /etc/profile

export MAVEN_HOME=/usr/local/maven3.6.3
export PATH=$MAVEN_HOME/bin:$PATH

source /etc/profile

查看是否安装成功:mvn -v

3.安装配置好tomcat

tar zxf apache-tomcat-8.5.55.tar.gz

mv apache-tomcat-8.5.55 /usr/local/tomcat8

/usr/local/tomcat8/bin/startup.sh

访问网页8080端口查看是否安装成功(如下图)

4.部署Jenkins到tomcat

下载jenkins.war文件把它移动到安装tomcat的webapps目录下(我这里的目录路径是/usr/local/tomcat8/webapps/)

mv jenkins.war /usr/local/tomcat8/webapps/

到安装tomcat的webapps目录下用工具安装

cd /usr/local/tomcat8/webapps/

java -jar jenkins.war --httpPort=8080

然后访问网页8080端口的jenkins目录(如下图)

系统管理—》插件管理—》高级

配置站点源(如下图)

http://updates.jenkins.io/update-center.json

http://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

这两个网址都可以,点击提交再立即获取

然后点击可选插件搜索插件进行下载安装

系统管理—》插件管理—》可下载镜像

需要下载的插件

Localization: Chinese (Simplified)

Maven Integration plugin

Publish Over SSH

Git client

Git Parameter

5.下载git工具(因为需要去服务器下拉代码)

yum -y install git

6.最好做下其他两台计算机的免密登录(这里在Jenkins网页配置上也会做)

 ssh-keygen -t rsa

ssh-copy-id -i /root/.ssh/id_rsa root@192.168.11.25

ssh-copy-id -i /root/.ssh/id_rsa root@192.168.11.27

四、部署web服务器(这里用docker实现):192.168.11.27

1.下载安装docker

yum install -y yum-utils

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

yum -y install docker-ce-18.09.6

systemctl start docker && systemctl enable docker

2.安装jdk

tar zxf jdk-8u91-linux-x64.tar.gz

mv jdk1.8.0_91 /usr/local/jdk1.8

vim /etc/profile

export JAVA_HOME=/usr/local/jdk1.8
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}

source /etc/profile

3.安装unzip(因为后面打包需要解压tale.zip把里面的.jar文件丢到工作目录中)

yum -y install unzip

4.构建tale镜像

mkdir docker_tale && cd docker_tale/

vim Dockerfile

FROM centos:7
RUN yum install epel-release -y
RUN yum install nginx supervisor -y && yum clean all
RUN sed -i '47a proxy_pass http://127.0.0.1:9000;' /etc/nginx/nginx.conf
COPY supervisord.conf /etc/supervisord.conf
ENV PATH /usr/local/jdk1.8/bin:$PATH
WORKDIR /tale
CMD ["/usr/bin/supervisord"]

vim supervisord.conf

[supervisord]
nodaemon=true
[program:tale]
command=/usr/local/jdk/bin/java -jar /tale/tale-latest.jar
autostart=true
autorestart=true
[program:nginx]
command=/usr/sbin/nginx -g "daemon off;"
autostart=true
autorestart=true

docker build -t tale:base .

查看镜像是否创建成功如下图

docker tag tale:base 192.168.11.25:5000/tale:base

docker push 192.168.11.25:5000/tale:base

mkdir -p /data/tale

要创建一个/data目录下面一个tale目录,因为后面配置Jenkins的时候会把项目传到/data目录下,然后把/data/tale这个目录映射到docker容器里面的工作目录下

五、配置Jenkins:192.168.11.26网页上配置

系统管理—》系统设置

注意:这里最好把其他两台服务器的ssh都做

系统管理—》Global Tool Configuration

创建一个maven项目进行运行,自动部署到服务器上

这里是写的是git仓库的地址,从哪里去拖取源码

这里跟linux里的crontab一样,计划周期让Jenkins不断去git仓库看代码是否更新

这里记得添加clean package

这里是用ssh写一个脚本在别的服务器上运行

这里可以写脚本去启动docker把本地的/data/tale目录映射到docker容器里的/tale目录下,因为上面写Daockerfile的时候编辑的工作目录就是docker里的/tale目录下,再把外面的jdk映射到docker容器中(脚本内容看下面)

docker rm -f tale-test
unzip /data/tale.zip -d /data/tale/
docker run -itd \
--name tale-test \
-p 80:80 \
-v /usr/local/jdk1.8:/usr/local/jdk \
-v /data/tale:/tale \
192.168.11.25:5000/tale:base

测试:访问网页查看是否自动部署完成

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Git+Jenkins+docker实现自动部署git拉取代码部署web服务 的相关文章

  • 使用java代码连接RedisCluster集群实现

    Redis5 x集群学习须知 学前须知 xff1a 当前redis的最新版本是5 0以上 xff0c 其搭建cluster的方法与早期的redis4 0以前的不太一样 xff0c 不再使用ruby相关的组件 1 redis集群的常见搭建方式
  • [设计] Doris血缘解析流程

    一 背景 1 1 元数据概述 元数据是凌久中台重要功能模块 xff0c 是数据治理的重要一环 xff0c 元数据治理是一切数据治理的基础 xff0c 主要分为元数据管理和表血缘管理 xff1b 元数据管理主要用来做数据地图 数据资产等 xf
  • [安装] 搭建hadoop集群

    参考资料 xff1a Hadoop集群搭建 xff0c 14张过程截图超详细教程 目录 目录 hadoop集群构建 for ljgk 一 基础环境准备 修改主机名称 配置yum源 1 局域网中配置代理环境 2 或者使用私有的yum源的方式
  • presto和doris查询对比

    本文对比了presto和doris在即席查询场景下的性能对比 1 count 查询数据总条数 例子 xff1a select count from ods tb device point data presto查询结果 presto vas
  • JAVA常用工具类

    JAVA常用工具类 根据GITHUB代码统计 从Google你能搜索到大量的关于Struts Spring Hibernate iBatis等比较大的框架的资料 xff0c 但是很少有人去关注一些小的工具包 xff0c 但是当你真正知道了这
  • Kafka遇到的坑-- Error while fetching metadata with correlation id : {LEADER_NOT_AVAILABLE}

    1 创建topic中出现出现错误 kafka出现 Error while fetching metadata with correlation id LEADER NOT AVAILABLE 表示无法识别kafka hostname 正确处
  • 怎样让Intellij IDEA工程中输出日志信息

    Intellij IDEA中使用log4j日志 一 在pom xml中添加依赖 span class token tag span class token tag span class token punctuation lt span d
  • 面试一般流程

    面试流程 xff1a 个人介绍 gt 技术面试 gt 项目介绍 gt 职业规划 一 个人介绍 xff1a xff08 1 xff09 个人履历 xff1a 你的学校 专业 xff08 突出自己的优势 已经做的项目突出你的个人能力 xff09
  • 31岁之十大拙见

    版权归作者所有 xff0c 任何形式转载请联系作者 作者 xff1a 萧汐汐 xff08 来自豆瓣 xff09 来源 xff1a https www douban com note 696211880 31岁之十大拙见 工作是人生大事 xf
  • Flink日志输出查看方式

    在网上查看flink日志查看方式 xff0c 竟然查询不到 xff0c 因此写下这篇文章 xff0c 给有此困惑的小盆友们 xff0c 也给自己做个总结 xff01 前情提要 xff1a 我是通过flink web ui提交的flink任务
  • 重学C语言之开始

    还记得是大一上学期学习的C语言 xff0c 当时就是为了应付一下考试 xff0c 很多东西其实还没有吃透 虽然大学玩了几年的单片机 xff0c 自己也写了不少的C代码 xff0c 但是总是感觉自己还是没有搞透C语言 xff0c 没有抓住C语
  • 【20-8-7】树莓派上部署英特尔深度相机IntelRealsense T265

    最近在搭建无人机的自主飞行平台 xff0c 无GPS的情况下室内定位的方案除了光流 xff0c 最好的就是配合intel的realsense系列的摄像头 尤其是T265本身带IMU xff0c 可以直接给飞控输出位姿信息 xff0c 不管是
  • 【2020-8-8】ROS软件包自动安装依赖,安装ros_pcl

    最近要把T265部署到无人机平台 xff0c 编译一个软件的时候一直报ros pcl的错误 原因是树莓派安装的ros并不是完整版 xff0c 因为也不需要再树莓派上部署gazebo之类的仿真平台 网上关于安装ros pcl的文章基本上都已经
  • 【2020-8-9】APM,PX4,GAZEBO,MAVLINK,MAVROS,ROS之间的关系以及科研设备选型

    0 概述 无人机自主飞行平台可以分为四个部分 xff1a 动力平台 xff0c 飞行控制器 xff0c 机载电脑和模拟平台 动力平台 xff1a 负责执行飞行任务 xff0c 包括螺旋桨 电机 机架等 xff0c 用于科研的一般都是F380
  • 【8-12】树莓派ubuntu升级Cmake

    树莓派上运行的是Ubuntu Mate18 04的系统 xff0c 自带的cmake版本是3 10 0 xff0c 编译软件的时候要求cmake版本大于3 11 0 需要进行升级 注意网上的教程会让你卸载现在系统里cmake xff0c 就
  • 【8-12】树莓派部署t265+px4飞控实现无人机视觉定位

    在之前的文章中 xff0c 我们已经成功在树莓派 xff08 ubuntu mate 18 04 xff09 上部署了T265的追踪摄像头 本文将利用MAVROS协议 xff0c 将T265测量的位姿信息发送给px4固件 xff0c 实现室
  • 【8-14】树莓派3B+ Ubuntu Mate 18.04使用Intel NCS2做人脸识别

    想要在无人机平台部署CV xff0c 但是无人机的机载电脑需要安装ROS xff0c 而ROS需要在Ubuntu的平台才能方便使用 xff0c 所以树莓派3B 43 上安装的是Ubuntu Mate18 04 Intel Ncs2 xff0
  • 【8-14】virtualenv和virtualenv wrapper的快速入门

    跟conda类似的Python虚拟环境管理工具 xff0c jetson nano暂时无法使用conda 1 virtualenv span class token comment 安装 span span class token func
  • 【20-9-22】Python实现多进程多线程

    简介 对于计算机来说 xff0c 有两种实现多任务的方式 xff1a 并行和并发 并发 xff1a 一段时间内交替执行某些任务 如单核CPU轮流执行一些程序 并行 xff1a 一段时间内同时运行多个任务 多核cpu处理多任务 1 进程 程序
  • 【21-3-28】pvcreate device excluded by a filter

    使用Lvm创建虚拟磁盘时报错的解决方法 xff1a span class token function sudo span pvcreate dev sdd Device dev sdd excluded by a filter 原因是因为

随机推荐

  • BMI指数

    身体质量指数 xff08 Body Mass Index xff0c BMI xff09 是根据人的体重和身高计算得出的一个数字 xff0c BMI对大多数人来说 xff0c 是相当可靠的身体肥胖指标 xff0c 其计算公式为 xff1a
  • 生日悖论的Python实现

    题目 xff1a 如果你的班级中有23个学生 xff0c 那么其中有两个人生日相同的概率为多大 xff1f usr bin env python coding 61 utf 8 import random def has duplicate
  • 二分法查找的Python实现

    代码如下 xff1a usr bin env python coding 61 utf 8 def BinarySearch t x t sort 对列表进行排序 xff0c 列表是有序的 xff0c 是二分法的前提 low 61 0 hi
  • Python中bisect模块用法,及实现方式

    bisect用法 import bisect bisect bisect left t x 在T列表中查找x xff0c 若存在 xff0c 返回x左侧位置 bisect bisect right t x bisect insort lef
  • c++实验六总结(自用)

    实验目的 掌握派生类的声明方法和派生类构造函数的定义方法 掌握不同方式下 xff0c 构造函数与析构函数的执行顺序与构造规则 程序如下 xff1a include lt iostream gt include lt string gt us
  • 光网络知识

    一 WDM网络体系结构注意点 1 波长复用 2 波长转换 3 透明性 4 电路交换 5 生存性 xff1a 当网络出现故障时 xff0c 光路能够自动路由到另一条备份路径上 xff0c 为网络提供了高度的弹性 6 光路拓扑 二 波分复用网络
  • docker镜像更新后 如何正确更新对应的容器 避免数据丢失

    容器的更新大致分为以下两种方法 1 容器并未存储任何应用程序的数据 在这种情况下 您可以在任何时候使用它的更新版本替换APP容器 方法是执行如下所示 span class token function docker span pull my
  • netconn_accept返回值为0,OSQCreate出错 lwip uocsii

    我是在main中有创建信号量的函数 led event 61 OSQCreate amp led q 0 MSGSIZE 这个因为配置中信号量上限较小 而在sys arch c中有一个创建消息邮箱的函数 err t sys mbox new
  • 零基础自学STM32-复习篇2——使用结构体封装GPIO寄存器

    我们首先要了解寄存器的一个特点 xff0c 他不是只针对一个外设 xff0c 而是所有的外设都 就拿GPIO的CRL xff0c ODR寄存器来说 对于GPIOA GPI xff2f E都有一组功能相同的寄存器只是地址不一样而已 xff21
  • 写给小白:使用GitHub来托管论文吧

    使用GitHub来托管论文吧 摘要 xff1a 写给小白 对于非计算机专业的小伙伴 xff0c 可能很少接触到GitHub吧 xff0c 但GitHub真心好用 xff0c 虽然我们不会用它来进行 托管代码 xff0c 但是可以用来托管论文
  • 【软件安装】ElasticSearch在Linux系统中的安装

    0 安装JDK xff0c 并配置环境变量 ElasticSearch依赖Java环境 xff0c 先在服务器上安装好JDK xff0c 并配置好JAVA HOME环境变量 1 从官网下载ElasticSearch压缩包到本地 cd usr
  • Python爬取淘宝商品数据,价值千元的爬虫外包项目

    前言 本文的文字及图片来源于网络 仅供学习 交流使用 不具有任何商业用途 如有问题请及时联系我们以作处理 PS xff1a 如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 完整代码可以点击下方链接获取 python免费学习资
  • argparse简介

    一 argparse简介 argparse 模块是 Python 内置的用于命令项选项与参数解析的模块 xff0c argparse 模块可以让人轻松编写用户友好的命令行接口 xff0c 能够帮助程序员为模型定义参数 argparse定义四
  • Ubuntu22.04安装、配置、美化、软件安装、配置开发环境

    Ubuntu22 04安装 配置 美化 软件安装 配置开发环境 一 Ubuntu Windows11 xff08 10 xff09 双系统安装 因为ubuntu的安装网上的教程特别多了 xff0c 所以这里不做赘述 xff0c 推荐使用小破
  • 直观理解uCOSII中的信号量的作用、优先级翻转现象、互斥信号量对优先级翻转现象的作用

    信号量的作用 优先级翻转现象 uCOS中的特殊信号量 互斥信号量 本文作为一个学习uCOS的经验分享 xff0c 希望能给初学小白们一个参考 以例程和运行效果来说明 xff0c 对一些概念性的东西这里不做过多解释 xff0c 网上相关文章多
  • C语言实现ftp客户端

    在VS2010新建win32控制台空项目 xff0c 加入下面代码 xff1a ftplib h xff1a ftplib h header file for callable ftp access routines Copyright C
  • 查看opencv文件所在目录方式

    查看opencv文件所在目录方式
  • CMake学习(二) —— 链接库的生成

    除使用 add executable 生成可执行文件外 xff0c 还可以使用 add library 生成链接库 一 Linux的链接库 首先讲一下 linux 的链接库 xff0c 就是一些函数代码的二进制形式 xff0c 有动态与静态
  • C/C++信号量CreateSemaphore的用法

    创建或打开命名或未命名的信号量对象 要指定对象的访问掩码 xff0c 请使用CreateSemaphoreEx函数 语法 HANDLE WINAPI CreateSemaphore xff08 In opt LPSECURITY ATTRI
  • Git+Jenkins+docker实现自动部署git拉取代码部署web服务

    Git 43 Jenkins 43 docker的持续集成环境构建 工作步骤思路 xff08 下图所示 xff09 1 server1搭建好git仓库和用docker搭建好docker镜像仓库 2 server3用git命令去别的共用仓库拉