Gitlab + Docker + Jenkins + Harbor实现自动化部署

这篇具有很好参考价值的文章主要介绍了Gitlab + Docker + Jenkins + Harbor实现自动化部署。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

文章目录

目录

文章目录

前言

一、第一台服务器--Jenkins

1、安装前

2、安装Jenkins

3、修改正在跑容器的端口

4、Jenkins内部插件和配置 

二、第二台服务器--Harbor

1、安装docker-compose

2.安装及配置

3、卸载Harbor 

4、Harbor启动后操作

三、第三台服务器--生产环境 

1、配置私服地址

四、Jenkins配置

1、新建流水线

1.5 流水线脚本

1.5.1、流水线脚本结构作用解析:

2、拉取git代码

2.5、dockerfile的编写

3、maven打包

4、推送镜像给Harbor 

5、 生产环境运行

五、流水线总结与填坑


前言

        该文为记录自己在生产环境中,使用Gitlab+Docker+Jenkins+Harbor等技术实现自动化部署的流程与踩过的坑,供大家学习和自己积累。

        整体流程:

 docker harbor jenkins,docker,jenkins,自动化 

一、第一台服务器--Jenkins

1、安装前

        将JDK、Maven、docker以及maven的国内镜像,安装更换好

2、安装Jenkins

        首先,搭建第一台服务器,用于安装部署Jenkins,

docker run --name jenkins --restart=always -u root -p 8080:8080 -p 50000:50000 -v /var/jenkins_home/:/var/jenkins_home/ -v /usr/local/jdk:/usr/local/jdk -v /usr/local/maven:/usr/local/maven -d jenkins/jenkins:lts

 docker语句就不过多解释了,不知道开局解锁Jenkins密码的可以通过docker logs 查看密码。这里提醒:标红的8080为映射出来的端口号,改为你自己的端口,如果以后要改这边也提供了方法

3、修改正在跑容器的端口

        对于正在跑容器的端口,又不想重新创建,不想重新配置,可以通过打包镜像的方式,重新run给他自己新的端口

# 先停止容器

docker stop 容器A

# 将容器commit成为一个镜像

docker commit 容器A 新镜像B

# 运行容器

docker run  -p 8080:8080 新镜像B

#或者执行上面的命令,把镜像命改下就行~

        如果存在gitlab是其他网络的情况,明明能ping得通gitlab,但是就是拉取不了代码

#我们需要去docker容器里面去开通白名单,进入Jenkins容器内部

docker exec -it 容器 /bin/bash

#修改hosts文件,添加你对应的Ip

vim /etc/hosts

#往下面加一行对应的ip和域名即可

4、Jenkins内部插件和配置 

        全局工具配置 —— 配置jdk和maven,这边建议本地安装,通过docker run jenkins的命令将对应配置文件挂载进Jenkins容器内。

        系统配置 —— 在最底下Publish over SSH(若没有去插件处下载对应插件)中配置需要远程连接的服务器,包括harbor服务器、生产环境服务器

        插件管理 —— 这主要是看你需要什么插件就下载什么插件,比如刚刚的Publish over SSH,若未汉化下载Localization: Chinese (Simplified)插件。重启后才可生效!

二、第二台服务器--Harbor

harbor官网

1、安装docker-compose

#安装(包括命令下载位置,改的话下面赋权也要改)

curl -L https://get.daocloud.io/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

#赋权

chmod +x  /usr/local/bin/docker-compose

#查看是否安装成功

docker-compose --version

2.安装及配置

#下载

wget --no-check-certificate https://github.com/goharbor/harbor/releases/dow nload/v1.10.14/harbor-offline-installer-v1.10.14.tgz

#解压

tar xzvf harbor-offline-installer-v1.10.14.tgz

修改配置文件:包括host、网络的限制、端口和登录密码的修改

docker harbor jenkins,docker,jenkins,自动化

 #安装,使⽤docker-compose可以快速安装

./install

3、卸载Harbor 

#卸载(去对应文件夹)

docker-compose down

4、Harbor启动后操作

        修改docker配置文件:/etc/docker/daemon.json

cat > /etc/docker/daemon.json <<-'EOF'

{

"insecure-registries": ["192.168.129.133:80"]

}

EOF

systemctl daemon-reload

systemctl restart docker

harbor使用不过多赘述

三、第三台服务器--生产环境 

        安装docker。由于是push镜像到该服务器镜像运行,所以必须要有docker环境

1、配置私服地址

        与harbor一样,修改docker配置文件:/etc/docker/daemon.json

cat > /etc/docker/daemon.json <<-'EOF'

{

"insecure-registries": ["192.168.129.133:80"]

}

EOF

systemctl daemon-reload

systemctl restart docker

四、Jenkins配置

        整体流程过于繁琐,贴图过多,这里讲下整体思路:

        新建流水线 —— 拉取git代码 —— maven打包 —— 推送镜像给Harbor —— 生产环境运行

1、新建流水线

docker harbor jenkins,docker,jenkins,自动化

丢弃旧的构建:这边建议勾选,之前我们就出现过镜像容器过多,无法启动的情况。

docker harbor jenkins,docker,jenkins,自动化

 参数化构建过程:(功能主要是版本控制,对应在gitlab - 项目 - 仓库标签 处添加标签)目的是方便版本回退,进行标签化管理项目。而不用像以前需要改包名,重新发版

git标签管理(此处是gtiee,gitlab同理)

docker harbor jenkins,docker,jenkins,自动化

 Jenkins标签化设置页面:名称可以动态配置,下面配置处保持一致,默认值是从哪个分支取标签

docker harbor jenkins,docker,jenkins,自动化

1.5 流水线脚本

        由于我们是流水线工程,接下来大部分操作和指令都用到的是流水线脚本,这个模块简单介绍下流水线脚本的使用和基本框架。

        在Jenkins最下面有流水线脚本编写的地方,定义的当前选项是在Jenkins里面写流水线,另一个from SCM选项是指使用远程仓库处的Jenkinsfile,这个我们后文再讲。

        脚本处右边还有个选项,这个就是Jenkins提供的模板,我们可以选择hello-world初始化模板,将会生成一些基础的框架,里面内容我们接下来一点点完成。

1.5.1、流水线脚本结构作用解析

        最外层的pipeline,意思是说明这段代码用作流水线;

        agent any,下面的脚本作用于全阶段

        stages,里面内容的每一个阶段都总文件夹

        stage,就是对应的每个阶段(包括:拉取代码、打包、推送harbor、生产环境运行)

        steps,对应脚本部分,里面的内容都是可以自动生成的,在下面流水线语法中。

docker harbor jenkins,docker,jenkins,自动化

2、拉取git代码

        继1.5的内容,我们第一步就是从gitlab上去拉取代码。我们点开“流水线语法”生成我们的第一段脚本。

        打开后,步骤选下图中的“checkout”,下面就是和free-style一样编写,接着生成流水线即可获得拉取git代码的脚本,将其贴在steps里即可(生成流水线脚本放入对应步骤中)。

docker harbor jenkins,docker,jenkins,自动化

$tag 就是刚刚配置的标签

ps: 这里可以构建下,试试看有没有啥问题。

2.5、dockerfile的编写

        dockerfile可以将其理解为构建镜像的文件,就是将刚刚拉取的代码构建成一个镜像,详细的步骤讲解就不放了,大概流程就是:

定制所需的镜像 —— 指定工作目录 —— 将jar文件/war包/dist文件夹复制到容器内 —— 运行jar包

FROM java:8
WORKDIR /usr/local
COPY spring-boot-project-front-end-back-end-0.0.1-SNAPSHOT.jar .
CMD java -jar spring-boot-project-front-end-back-end-0.0.1-SNAPSHOT.jar

3、maven打包

        拉取完代码就要将其maven打包,在此之前要在全局工具配置处配置maven路径

sh 'sh /usr/local/maven/bin/mvn package'

        ①生成流水线脚本放入对应步骤中 

4、推送镜像给Harbor 

        该步骤主要就是将运行文件放到harbor内,让harbor去打包成镜像存储

        提前在系统配置处配置harbor的SSH路径。

        流水线语法在对应的sshPublisher: Send build artifacts over SSH中编写:

        ①选择对应的SSH Server的名字(在系统配置处配置的名字)

        ②接下来就是将jar文件传至harbor中

        ③执行对应的脚本:docker build构建镜像镜像名应为:IP:端口/harbor文件夹/项目名:版本号 后面是指的将该镜像构建至何处,根据个人需求放至对应位置即可

docker login 是登录harbor服务器的命令,后面跟harbor的ip:端口

docker push 推送镜像至harbor服务器中

        ④生成流水线脚本放入对应步骤中

执行完即可去harbor服务器查看对应位置是否有刚刚推送的镜像了,若执行过程中出错,Jenkins的报错信息是看不出什么内容的,将那三条指令一条一条的去harbor服务器中运行,看哪一步出错。

docker harbor jenkins,docker,jenkins,自动化

5、 生产环境运行

        接下来就很简单了,只需要在生产环境将原容器rm了,再去docker run就行了。

        同样,提前在系统配置处配置生产环境的SSH路径

        流水线语法在对应的sshPublisher: Send build artifacts over SSH中编写(与上同):

        ①选择对应的SSH Server的名字(与上同)

        ②在Exec command 写脚本的地方把rm命令和run命令执行即可。

docker rm -f myproject

docker run -p 8080:8080 -d --name myproject 192.168.129.133:80/public/myproject:$tag

        ③生成流水线脚本放入对应步骤中

五、流水线总结与填坑

        最后我们在pipeline script中会得到最终的流水线脚本,但是存在一个问题:若容器迁移因为各种原因丢失了容器,镜像内是不存在我们之前的配置的,接下来有两种方法:1、将现在配置好的Jenkins重新打成一个镜像,再docker save成一个tar包,本地存储;2、将流水线脚本放置于git中去托管,这就是之前提到的pipeline script from SCM

docker harbor jenkins,docker,jenkins,自动化

        选择第二个选项,我们就可以得到一个类似git拉取的页面,他就是拉取我们的Jenkinsfile文件的,将流水线脚本全部内容存在项目根目录下的Jenkinsfile文件中(新建file),在这里就会自动拉取你根目录的Jenkinsfile文件,读取你的Jenkins流水线脚本,效果与之前的效果是一样的。

 文章来源地址https://www.toymoban.com/news/detail-631340.html

到了这里,关于Gitlab + Docker + Jenkins + Harbor实现自动化部署的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Jenkins + Gitlab 实现项目自动化构建及部署

      通俗来讲就是本地项目 push 到 gitlab 后, Jenkins 能够识别到项目的更新并自动构建部署;  本文以实际操作的方式来表述详细配置过程及避开配置 Jenkins 时的坑. 默认电脑已经安装了虚拟机, 默认gitlab 上已经有了你想要部署的项目, 部署了 maven 和 jdk 并配置了环境变量!!! 1 执行

    2024年02月16日
    浏览(58)
  • Jenkins+GitLab+Docker搭建前端自动化构建镜像容器部署(无本地证书,映射证书)

    前言 🚀 需提前安装环境及知识点: 1、Docker搭建及基础操作 2、DockerFile文件描述 3、Jenkins搭建及基础点 🚀 目的: 将我们的前端项目打包成一个镜像容器并自动发布部署,可供随时pull访问 1、在当前项目的根目录创建Dockerfile文件并写入如下代码: 代码片段详细描述: 注意

    2024年02月15日
    浏览(60)
  • 记录使用gitlab实现Docker自动化部署

    目录 前言 一、gitlab-runner docker安装 二、gitlab-runner的注册与使用 1.注册 2. .gitlab-ci.yml 脚本编写 总结 前面搭建了gitlab与harbor ,现在就使用它们来实现自动化docker部署。所谓自动化部署,就是提交代码到指定分支时自动触发预先写好的脚本,来实现打包,推送镜像。想要实现这

    2023年04月11日
    浏览(47)
  • Gitlab自动触发jenkins完成自动化构建 jenkins

     首先安装gitlab插件,我已经安装过了,首次请在 可选插件 中进行搜索。   进入项目配置--构建触发器: Build when a change is pushed to GitLab. GitLab webhook URL: 请复制此处的URL,后续有用。  然后点击高级   “Allowed branches”触发分支可以用默认的全部分支,也可以选择仅由指定名

    2024年02月16日
    浏览(63)
  • docker+jenkins 实现自动化部署

    工欲善其事必先利其器,所以前期的准备工作必须做好,那么我们要实现自动化部署,必须提前准备什么呢?哈哈哈,可能有一些小伙伴已经猜到了,我们需要一台自己的服务器,这里博主使用的自己够买一台腾讯云的轻量服务器,折扣完了才一百多块钱,当然小伙伴也可以

    2024年02月06日
    浏览(269)
  • 【Jenkins+Gitlab自动化部署配置】

    以下为整理当初参照的博客 阿里云云服务器 ECS 手动搭建GitLab避坑教程 博客文中的镜像源地址已换 Gitlab忘记root用户密码的解决办法 Gitlab学习笔记(一):基于Ubuntu的gitlab的私有服务搭建(超详细) Jenkins 构建报错:Couldn‘t find any revision to build. Verify the repository and branch conf

    2024年02月21日
    浏览(51)
  • Jenkins结合gitlab自动化持续集成

    大家好,我是自动化测试老司机~ 最近在公司有负责搭建自动化测试环境,自动化脚本写好后,毋庸置疑是需要将自动化脚本进行持续集成测试,能够根据企业的定制化需求,通过Jenkins触发执行构建任务,定时执行自动化脚本等,今天就给大家介绍一下Jenkins结合gitlab进行自动

    2024年02月11日
    浏览(58)
  • Gitlab+Jenkins自动化部署,解放双手

    ​ 在部署项目前需要对源码进行打包,一个简单的SpringBoot项目默认是打包为jar包,也就是在pom.xml中的 packagingjar/packaging 方式,当然也会有一些打包成war包方式,使用外置的Tomcat应用服务器部署war包,那么就是 packagingwar/packaging 。 在父子类聚合项目中,父工程的 pom.xml 文件中

    2024年02月07日
    浏览(65)
  • Jenkins+Docker 实现一键自动化部署项目

    1.安装Jenkins 注:因为Jenkins容器里的用户是Jenkins,而主机用户不是Jenkins,就算是root也一样会报错:/var/jenkins_home/copy_reference_file.log: Permission denied,这个时候就需要在主机上面给主机地址赋予访问Jenkins容器的权限,Jenkins内部用的是uid 1000的user。 -privileged=true让容器具有root权限

    2024年02月16日
    浏览(51)
  • Docker + Jenkins + Nginx实现前端自动化部署

    文章有点长,如果你是以学习的态度来看这篇文章,建议收藏起来慢慢看。 前端自动化部署一直以来概念很清楚知道怎么回事,但是其中怎么操作没怎么研究过,虽然之前环境都搭起来了,但是也只是Jenkins构建项目成功,比如提交代码之后怎么触发自动构建,打包后的文件

    2024年02月05日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包