完整项目持续集成方案

完整项目持续集成方案 [docker|jenkins|git]

工具

本次持续集成使用到工具有:jenkins、maven、jdk、docker、docker私服【register】、git。

发布流程

在这里插入图片描述

本次部署持续集成,将采用两台linux服务器,其中服务器【1】用于部署持续集成工具用于执行项目发布程序,称之为【发布服务器】,服务器【2】用于运行项目,称之为【运行服务器】。

整体的发布流程大致可以抽象成如下三步:

  • jenkins从git仓库中拉取对应的微服务代码,使用maven工具进行编译打包,并构建成微服务镜像
  • jenkins使用linux指令将微服务镜像推送到docker镜像仓库
  • jenkins使用远程linux指令从docker镜像私服仓库拉取微服务镜像到【运行服务器】并运行微服务容器
1 搭建环境
1.1 搭建持续集成环境

持续集成环境的搭建需要用到如下工具:

1、jenkins

Jenkins 是一款流行的开源持续集成(Continuous Integration)工具,广泛用于项目开发,具有自动化构建、测试和部署等功能。

2、JDK

搭建jenkins工具需要JDK环境

3、Maven

jenkins编译打包代码需要用到maven工具

4、Git

jenkins编译的代码需要从git仓库拉取,需要用到git工具

5、Docker

jenkins将打包好的jar需要构建成docker镜像,需要用到docker工具

6、Docker镜像私服仓库

docker镜像私服仓库用于存储docker镜像

1.2 安装JENKINS

安装jenkins需要注意版本的问题,之前安装其他版本的jenkins,一般会jdk版本冲突或插件版本冲突,为了避免版本或插件冲突,可采用jenkins官网推荐的方式安装。

sudo wget -O /etc/yum.repos.d/jenkins.repo \
    https://pkg.jenkins.io/redhat/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat/jenkins.io-2023.key
sudo yum upgrade
# 使用yum安装jdk11版本
sudo yum install java-11-openjdk
# 检验jdk环境是否安装成功
sudo java -version
# 使用yum安装jenkins
sudo yum install jenkins
# 配置开机自启动
sudo systemctl enable jenkins
# 启动jenkins
sudo systemctl start jenkins
# 查看jenkins状态
sudo systemctl status jenkins

安装步骤:

打开浏览器访问{ip}:8080,ip为部署jenkins的服务器【发布服务器】的地址,将会进入jenkins初始化页面

在这里插入图片描述

使用如下指令查看初始化密码:

cat /var/lib/jenkins/secrets/initialAdminPassword

在这里插入图片描述

将密码复制并填写到输入框中,进入下一步安装插件界面

在这里插入图片描述

可选择【安装推荐的插件】或【选择插件来安装】,如果清楚发布流程需要使用到哪些插件可以选择【选择插件来安装】,如果不清楚要装哪些插件,就选择【安装推荐插件】,一般而言推荐的插件基本能满足发布流程。

在这里插入图片描述

待插件安装完成后,进入账号密码配置页面,输入账号密码后进入确认实例配置页面

在这里插入图片描述

确认了实例URL后选择保存完成。进入如下页面,表示jenkins已正确安装

在这里插入图片描述

1.3 安装JDK

下载jdk安装包,可以到官网去下载也可以到百度网盘下载【链接: https://pan.baidu.com/s/1V1O6qgRSFJhdMZ-fD7_cQQ 提取码: 7jic】

将安装包统一放在服务器的【/opt/tool】下

mkdir -p /opt/tool

将jdk安装包上传到【/opt/tool】下并解压到【/usr/tool/jdk11】下

# 创建jdk存放目录
mkdir -p /usr/tool/jdk
# 解压jdk
tar -zxvf /opt/tool/jdk_x64_linux_hotspot_11.0.8_10.tar.gz -C /usr/tool/jdk/
1.4 安装maven

下载maven安装包,可以到官网【https://maven.apache.org/download.cgi】下载也可以到百度网盘下载【链接: https://pan.baidu.com/s/100k7hn6Xm6Vw_7NCmJ68wg 提取码: hfnq 】

将maven安装包上传到【/opt/tool】目录下

# 将maven解压到 /usr/tool 目录下
unzip -o /opt/tool/apache-maven-3.9.1-bin.zip -d /usr/tool/

配置maven环境变量

vi /etc/profile

在profile末尾添加如下内容:

export MAVEN_HOME=/usr/tool/apache-maven-3.9.1
export PATH=$PATH:$MAVEN_HOME/bin

让配置的环境变量生效

source /etc/profile

验证maven是否安装成功

mvn -v

如果提示一下信息说明maven安装成功

在这里插入图片描述

创建maven仓库目录

 mkdir -p /usr/tool/maven/repo

修改maven镜像地址

 vi /usr/tool/apache-maven-3.9.1/conf/settings.xml

修改内容如下:

    # 找到<mirrors> 往里面添加如下内容
    <mirror>
     <id>alimaven</id>
     <mirrorOf>central</mirrorOf>
     <name>aliyun maven</name>
     <url>https://maven.aliyun.com/repository/central</url>
    </mirror>
    # 找到localRepository,去掉注释后,修改为一下内容
    <localRepository>/usr/tool/maven/repo</localRepository>
1.5 安装Git

yum安装git

yum -y install git

查看是否安装成功

git version
1.6 安装docker

查看centos 内核【版本高于 3.10

uname -r

更新yum源

sudo yum update

如果存在已安装版本,先卸载

sudo yum remove docker docker-common docker-selinux docker-engine

安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

可以查看所有仓库中所有docker版本,并选择特定版本安装

yum list docker-ce --showduplicates | sort -r

安装docker

sudo yum install docker-ce

设置开机启动

sudo systemctl enable docker

启动docker

sudo systemctl start docker

验证安装是否成功

docker version
1.7 安装docker私服

介于已经安装了docker,采用docker来安装docker镜像私服。

拉取registry私服仓库镜像

docker pull registry

拉取docker私服仓库前端控制台

docker pull konradkleine/docker-registry-frontend:v2

运行registry【docker镜像私服】并暴露访问端口5000,该端口为推送docker镜像的端口

docker run -d -p 5000:5000 -v /app/opt/registry:/registry-conf --restart always --name registry registry

运行docker-registry-frontend【docker镜像前端】并暴露端口8091,用户可以访问8091端口进入docker镜像私服管理页面,其中ENV_DOCKER_REGISTRY_HOST为docker镜像私服ip地址,ENV_DOCKER_REGISTRY_PORT为docker镜像私服端口号。运行如下指令之前记得修改上述两个参数值

# ENV_DOCKER_REGISTRY_HOST一定要修改为docker镜像私服ip地址
docker run -d \
  -e ENV_DOCKER_REGISTRY_HOST=127.0.0.1 \
  -e ENV_DOCKER_REGISTRY_PORT=5000 \
  -p 8091:80 konradkleine/docker-registry-frontend:v2

查看是否运行成功

docker ps

显示如下内容表示运行成功

在这里插入图片描述

访问 {docker镜像私服ip地址}:8091进入docker镜像私服管理页面,{docker镜像私服ip地址}为部署docker镜像私服前端的IP地址

在这里插入图片描述

因为目前版本的registry只支持https协议,需要将客户端ip加入docker白名单

vi /etc/docker/daemon.json

修改如下内容

# 这里的Ip地址为客户端Ip即发布服务器IP
{ "insecure-registries": [ "127.0.0.1:5000" ] }

127.0.0.1为需要推送镜像到docker镜像私服的客户端IP,一定要记得配,否则docker镜像上传不了docker镜像私服

至此已安装完jenkins持续集成的基本工具,下面将介绍如何配置jenkins及如何发布微服务

2 发布流程
2.1 安装jenkins插件

查看一下jenkins是否已经安装了这些插件:Maven Integration plugin【 Maven 集成管理插件】;Docker plugin【Docker集成插件】;GitLab Plugin【GitLab集成插件】;Publish Over SSH【远程文件发布插件】;SSH【脚本执行插件】。

如果发现有缺少对应的插件,到插件管理去安装。

2.2 配置jenkins工具
  • 进入工具配置

    在这里插入图片描述

  • 配置maven

    使用指令找到settings.xml目录

    # 查看maven家目录在哪
    echo $MAVEN_HOME
    # 显示/usr/tool/apache-maven-3.9.1
    # settings.xml : /usr/tool/apache-maven-3.9.1/conf/settings.xml
    

    在这里插入图片描述

  • 配置JDK

    在这里插入图片描述

  • 配置maven目录

    在这里插入图片描述

  • 配置docker目录

    在这里插入图片描述

2.3 项目集成maven及docker配置

该项目需要能使用maven进行编译打包,且有对应的dockerfile文件可以构建成docker镜像。

  • 集成maven及docker配置

    在pom.xml文件下配置maven打包插件及dockerfile插件。

    其中dockerfile-maven-plugin的repository地址是docker镜像私服地址。项目打包

    <build>
        <finalName>${project.artifactId}</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.5.4</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>dockerfile-maven-plugin</artifactId>
                <version>1.4.13</version>
                <configuration>
                    <repository>120.48.130.125:5000/${project.artifactId}</repository>
                    <tag>dev</tag>
                    <buildArgs>
                        <JAR_FILE>target/${project.build.finalName}</JAR_FILE>
                    </buildArgs>
                </configuration>
            </plugin>
        </plugins>
    </build>
    
  • 创建dockerfile

    在项目目录下与pom.xml同一级目录创建dockerfile,并填写相关的dockerfile内容。不同的项目dockerfile是不一样的。如不清楚dockerfile该如何写,先学习docker相关知识。下面是举例:

    # 基础镜像
    FROM  openjdk:8-jre
    # author
    MAINTAINER pango
    
    # 挂载目录
    VOLUME /home/pango
    # 创建目录
    RUN mkdir -p /home/pango
    # 指定路径
    WORKDIR /home/pango
    # 复制jar文件到路径
    COPY ./target/pango-auth.jar /home/pango/pango-auth.jar
    # 启动认证服务
    ENTRYPOINT ["java","-jar","pango-auth.jar"]
    

    存放目录:

    在这里插入图片描述

2.4 将项目提交给代码仓库
  • 创建项目代码仓库

    在这里插入图片描述

    在这里插入图片描述

  • 提交代码到代码仓库

    1、进入项目目录

    在这里插入图片描述

    2、 初始化git

    git init
    

    在这里插入图片描述

    3、添加项目代码到本地仓库

    git add ./
    

    4、提交到远程仓库

    git commit -m "init"
    

    在这里插入图片描述

    # origin后为项目代码仓库地址
    git remote add origin https://gitee.com/***/pango-auth-deploy.git
    git push -u origin "master"
    

    在这里插入图片描述

2.5 Jenkins项目打包及构建docker镜像

发布流程:1.拉取git项目代码 -> 2.maven打包成jar包 -> 3.dockerfile构建成镜像 -> 4.提交镜像到docker镜像私服 -> 5.远程ssh从docker镜像私服拉取镜像到发布服务器-> 6.运行发布服务器中的项目镜像

  • 创建自由风格项目

    在这里插入图片描述

    在这里插入图片描述

  • 配置镜像标签变量

    镜像标签变量 将会在发布项目容器的时候会用到

    在这里插入图片描述

  • 配置git仓库

    添加git仓库凭证

    在这里插入图片描述

    输入git仓库账号密码

    在这里插入图片描述

    输入项目git仓库地址->选择账号->选择分支

    在这里插入图片描述

  • 构建maven步骤

    选择maven->输入maven指令【清除并安装jar到私有仓库、通过dockerfile构建镜像】

    clean install dockerfile:build -Dmaven.test.skip=true
    

    在这里插入图片描述

    在这里插入图片描述

  • 执行构建,查看结果

    构建项目

    在这里插入图片描述

    查看执行过程

    在这里插入图片描述

    如果出现权限异常

在这里插入图片描述

到发布服务器找到maven本地仓库,授权。其中/usr/tool/maven/repo为maven仓库,授权完成后重新构建

chmod 777 /usr/tool/maven/repo

并docker相关目录授权

chmod -R 777 /var/run/docker.sock

编译构建成功后

在这里插入图片描述

进入jenkins工作空间查看项目是否已下载

cd /var/lib/jenkins/workspace
ls

在这里插入图片描述

查看项目docker镜像是否构建成功

docker images
2.6 推送项目docker镜像到docker镜像私服

到发布项目下继续添加构建步骤

在这里插入图片描述

找到Build Steps ,在maven配置后面添加【执行 Shell】

并添加如下shell脚本,其中$image_tag 表示引用变量

echo '================docker镜像推送================'
docker push $image_tag
docker rmi $image_tag
echo '================docker tag 清理 ================'

在这里插入图片描述

2.7 远程执行发布项目镜像容器

配置远程服务器链接

在 Manage Jenkins -> System下 找到【SSH remote hosts】填写远程服务器IP、端口号及账号密码

在这里插入图片描述

在这里插入图片描述

在Build Steps下,【执行shell】步骤后添加远程执行shell步骤

并填入如下shell指令,其中$image_tag为配置好的变量,name=pango-auth-dev 容器名称,–name pango-auth-dev 容器名称

docker镜像私服IP:5000/pango-auth:dev docker镜像私服项目镜像

echo '================拉取最新镜像================'
docker pull $image_tag

echo '================删除清理容器镜像================'
if [ -n  "$(docker ps -a -f  name=pango-auth-dev  --format '{{.ID}}' )" ]
 then
 #删除之前的容器
 docker rm -f $(docker ps -a -f  name=pango-auth-dev  --format '{{.ID}}' )
fi
 # 清理镜像
docker image prune -f

echo '===============启动容器================'
docker run -d   --net=host -e PARAMS="--spring.profiles.active=dev" --name pango-auth-dev docker镜像私服IP:5000/pango-auth:dev

在这里插入图片描述

3 构建项目

在构建项目之前,需要确认【运行服务器】已安装docker。如没安装请按照1.6章节进行docker安装。

在这里插入图片描述

到部署服务器上查看项目是否启动成功,

# 查看是否存在项目镜像
docker images

# 查询项目镜像是否运行成功
docker ps
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值