使用Docker安装Gitlab,Jenkins,Tomcat搭建流水线项目环境,实现DevOps自动化步骤,很详细

8 篇文章 0 订阅
6 篇文章 0 订阅

使用Docker安装Gitlab,Jenkins,Tomcat搭建流水线项目,实现DevOps自动化

写在前头,入职公司不久,发现公司都是用的Jenkins来实现自动化项目部署,十分方便,但作为底层开发人员,接触的不是很多,所以特地来详细的学习一下,扩充一下自己的技术栈!

以下内容需要拥有docker的基础知识,大家也可以多看看我之前的博客,都很详细。

我这里采用的是Docker容器化技术来安装的,方便,简单,环境如下:

  • 阿里云服务器一台 Centos7.6.4
  • 已安装好的Docker环境(详细看我之前的博客:Docker入门全教程

Docker安装Gitlab


1、gitlab的安装
# 搜索gitlab镜像
[root@pihao /]# docker search gitlab --filter=STARS=500
NAME                   DESCRIPTION                                     STARS             
gitlab/gitlab-ce       GitLab Community Edition docker image based …   2935               
sameersbn/gitlab       Dockerfile to build a GitLab image for the D…   1152               
gitlab/gitlab-runner   GitLab CI Multi Runner used to fetch and run…   615    
# 我这里选择的是 gitlab/gitlab-ce最新版的镜像
[root@pihao /]# docker pull gitlab/gitlab-ce
Using default tag: latest
latest: Pulling from gitlab/gitlab-ce
e92ed755c008: Already exists
713c8b67b945: Pull complete
Digest: sha256:381c96323b10847583133ab6177feb8e6d69fd38a55d9d1c3872fa7b18025c2e
Status: Downloaded newer image for gitlab/gitlab-ce:latest
docker.io/gitlab/gitlab-ce:latest
# 拉取成功
[root@pihao /]# docker images
REPOSITORY            TAG                 IMAGE ID            CREATED             SIZE
gitlab/gitlab-ce      latest              2b9ac1a40dd1        2 days ago          1.81GB

2、gitlab的运行
# -p 端口映射(80端口是gitlab内部绑定的端口)
# -v 数据文件挂载 将文件都挂到我本机的/home目录下面
# --name 取别名
[root@pihao home]# docker run -d  -p 8443:443 -p 8090:80 -p 222:22 --name gitlab -v /home/gitlab/config:/etc/gitlab -v /home/gitlab/logs:/var/log/gitlab -v /home/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce
f33cab7b2854e0131c388b6bf8b5bd609da9a4ea166226c9c8301b2c9673a8f5

# 查看容器是否启动成功
[root@pihao home]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS   
f33cab7b2854        gitlab/gitlab-ce    "/assets/wrapper"   5 seconds ago       Up 4 seconds (health: starting)   22/tcp, 0.0.0.0:8090->80/tcp, 0.0.0.0:8443->443/tcp   gitlab
[root@pihao home]# 启动成功
3、修改gitlab默认的配置文件

修改gitlab.rb配置文件

[root@pihao /]# vim /home/gitlab/config/gitlab.rb

# 找到 external_url 这个属性配置,把注释去掉并且把它设置为你主机的地址注意,这里主机地址的后面不能加端口(这是一个坑),加了端口之后不能访问gitlab的页面!!!   如: external_url 'http://112.74.167.52'

# 再将配置文件中以下的两个注释打开

[root@pihao /]# gitlab_rails['gitlab_shell_ssh_port'] = 22
[root@pihao /]# gitlab_rails['gitlab_shell_git_timeout'] = 800

修改gitlab.yml文件

[root@pihao /]# vim /home/gitlab/data/gitlab-rails/etc/gitlab.yml
# 这里只需要设置你的主机ip以及端口;这里会显示在github的克隆地址!!!
    gitlab:
        ## Web server settings (note: host is the FQDN, do not include http://)
        host: 112.74.167.52 # 宿主机的ip地址
        port: 8090 # 
        https: false

OK,配置到这里,Gitlab页面就能正常访问了,http://112.74.167.52:8090,一般来说,第一次访问页面的时候可能会报502错误。莫慌!!!这是因为gitlab刚刚启动,很多功能还没启动起来,稍等一分钟即可正常访问!

访问如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-08v20C51-1592095939297)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200613190021468.png)]

使用方才设置的密码,然后使用root账号登入

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RESfdDvb-1592095939300)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200613190228193.png)]

进入的页面如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XsaSw0yJ-1592095939303)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200613190327178.png)]

点击create a project,创建如下工程:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K87OkiDU-1592095939307)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200613190553814.png)]

4、上传代码到gitlab

OK,现在我们已经搭建好gitlab服务器,并且创建了一个名叫upload-test-01的工程,那么接下来将往该工程中提交代码

复制工程的URL

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U0JNyPSp-1592095939310)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200613191159281.png)]

复制URL,使用Eclipse或者IDEA将代码推送到仓库

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vk94Sh4J-1592095939312)(C:\Users\ADMINI~1\AppData\Local\Temp\WeChat Files\a1d360f990f6db500610bfdd6bd27bf.png)]
在这里插入图片描述

推送成功

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jUHMlGdY-1592095939316)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200613195803338.png)]

Docker安装Jenkins

Gitlab服务器已经搭建完毕,现在开始搭建Jenkins服务器

1、Jenkins的安装

写在前头,不要使用jenkins官方最新的那个镜像,那个已经不推荐使用了,很多的插件不支持安装,网上浏览了很多的博客,发现大家用的最多的是这个镜像 jenkins/jenkins:lts,而这些jenkins容器默认都是已经装好了jdk的环境的,由于我们后面需要整合maven对项目进行打包,那么我们还要在这个镜像中搭建好maven的环境。

拉取jenkins/jenkins:lts镜像
# 镜像搜索jenkins
[root@iZwz9eq1jai7e87n6vw5liZ /]# docker search jenkins --filter=STARS=500
NAME                  DESCRIPTION                                 STARS               
jenkins               Official Jenkins Docker image               4806               
jenkins/jenkins       The leading open source automation server   2084
jenkinsci/blueocean   https://jenkins.io/projects/blueocean       527
# 拉取jenkins/jenkins:lts镜像
[root@iZwz9eq1jai7e87n6vw5liZ /]# docker pull jenkins/jenkins:lts
lts: Pulling from jenkins/jenkins
3192219afd04: Pull complete
Digest: sha256:83df661d1a2ad921323868ca48f432b175b039bb9e16be0209c0253f3186f25e
Status: Downloaded newer image for jenkins/jenkins:lts
docker.io/jenkins/jenkins:lts
# 拉取成功
[root@iZwz9eq1jai7e87n6vw5liZ /]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
jenkins/jenkins     lts                 5d1103b93f92        2 weeks ago         656MB
# 查看该镜像的环境变量
[root@iZwz9eq1jai7e87n6vw5liZ /]# docker inspect 5d1103b93f92

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-q5cfIr04-1592095939318)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200613202239287.png)]

发现上述镜像默认安装jdk1.8,并且配置好了PATH,但是没有安装maven,为了方便我们后面,我们在这个镜像中添加maven的环境,那么就需要我们在这个镜像的基础上再去创建一个我们自己的jenkins镜像,而这个镜像是有maven环境的!!!那么如何开始呢??

创建带有maven环境的jenkins镜像
准备好一个maven的安装包

maven安装包下载地址:http://maven.apache.org/download.cgi

# 我把这个maven的安装包放到了 /home目录下
[root@iZwz9eq1jai7e87n6vw5liZ home]# ls
apache-maven-3.6.3-bin.tar.gz  readme.txt #(这个readme.txt只是一个镜像使用的说明文件,随便自己定义内容)
[root@iZwz9eq1jai7e87n6vw5liZ home]#
编写Dockfile文件

说明,我们自定义构建镜像就是根据这个Dockerfile文件来进行的!

# 创建Dockerfile文件
[root@iZwz9eq1jai7e87n6vw5liZ home]# vim Dockerfile      (注意:官方推荐命名,D是大写的)
# 输入以下内容: (不包括 # 后面的注释的内容)
FROM jenkins/jenkins:lts 			 # 以哪个基础镜像开始构建
MAINTAINER pihao<827699764@qq.com>	 # 镜像作者的信息

COPY readme.txt /var/jenkins_home/readme.txt # 复制方才的使用说明文件到镜像内部
ADD apache-maven-3.6.3-bin.tar.gz /var/jenkins_home/ # 添加需要的整合的内容,会自动解压

ENV MYPATH /var/jenkins_home/ # 添加环境
WORKDIR $MYPATH # 容器启动后就切换到的目录

ENV MAVEN_HOME /var/jenkins_home/apache-maven-3.6.3 # 添加maven的环境变量,就跟安装jdk差不多
ENV PATH $PATH:$MAVEN_HOME/bin # 将maven的变量加到总的PATH当中
构建镜像
[root@iZwz9eq1jai7e87n6vw5liZ home]# ls
apache-maven-3.6.3-bin.tar.gz  Dockerfile  jdk-8u251-linux-x64.tar.gz  readme.txt
# docker build 命令构建镜像(注意后面的 . 一定要加上,这里会自动寻找到Dockerfile文件,所以不用指定名字)
[root@iZwz9eq1jai7e87n6vw5liZ home]# docker build -t myjenkins .
Sending build context to Docker daemon  204.6MB
Step 1/8 : FROM jenkins/jenkins:lts
 ---> 5d1103b93f92
Step 2/8 : MAINTAINER pihao<827699764@qq.com>
 ---> Running in 9edb275b5e76
Removing intermediate container 9edb275b5e76
 ---> 6e2357116d49
Step 3/8 : COPY readme.txt /var/jenkins_home/readme.txt
 ---> f76bcbf77b93
Step 4/8 : ADD apache-maven-3.6.3-bin.tar.gz /var/jenkins_home/
 ---> 44f6f2cf3182
Step 5/8 : ENV MYPATH /var/jenkins_home/
 ---> Running in 44e048cbe299
Removing intermediate container 44e048cbe299
 ---> e792ce76fb54
Step 6/8 : WORKDIR $MYPATH
 ---> Running in 2fa21e5f5860
Removing intermediate container 2fa21e5f5860
 ---> 4d0194703fca
Step 7/8 : ENV MAVEN_HOME /var/jenkins_home/apache-maven-3.6.3
 ---> Running in 0f12c7d8844d
Removing intermediate container 0f12c7d8844d
 ---> c067e3490a5b
Step 8/8 : ENV PATH $PATH:$MAVEN_HOME/bin
 ---> Running in da8739ed9fd2
Removing intermediate container da8739ed9fd2
 ---> 02556376487f
Successfully built 02556376487f
Successfully tagged myjenkins:latest # 说明构建成功

# 查看我们自己构建的镜像
[root@iZwz9eq1jai7e87n6vw5liZ home]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
myjenkins           latest              02556376487f        2 minutes ago       667MB
jenkins/jenkins     lts                 5d1103b93f92        2 weeks ago         656MB
[root@iZwz9eq1jai7e87n6vw5liZ home]#

这里我们再增加一步,那就是配置maven 本地仓库以及更换maven里面的镜像,我们更换成阿里云的镜像

# 编辑 maven的settings.xml配置文件
[root@iZwz9eq1jai7e87n6vw5liZ /]# ls
bin  boot  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@iZwz9eq1jai7e87n6vw5liZ /]# cd var/lib/docker/volumes/myjenkins/_data/
# 创建maven的本地仓库
[root@iZwz9eq1jai7e87n6vw5liZ /]# mkdir maven_repo   
[root@iZwz9eq1jai7e87n6vw5liZ /]# cd apache-maven-3.6.3/conf/
[root@iZwz9eq1jai7e87n6vw5liZ conf]# ls
logging  settings.xml  toolchains.xml
[root@iZwz9eq1jai7e87n6vw5liZ conf]# vim settings.xml

添加阿里的镜像

<mirror>
    <id>nexus-aliyun</id>
    <mirrorOf>central</mirrorOf>
    <name>Nexus aliyun</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UHOJ5qBO-1592095939320)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200614011134817.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ur1QTTLG-1592095939321)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200614002242004.png)]

OK

2、jenkins的运行

好,现在带有maven环境的jenkins镜像已经构建完毕,接下来应该运行这个镜像 run

# 运行容器
[root@iZwz9eq1jai7e87n6vw5liZ myjenkins]# docker run -d -p 8088:8080 -p 50000:50000 -v myjenkins:/var/jenkins_home --name myjenkins myjenkins
591fe973fd4b9095c904b36cc333bf4d385b3e9958e8cfa995d833a18da52e44
# 查看运行的容器
[root@iZwz9eq1jai7e87n6vw5liZ myjenkins]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED                 
591fe973fd4b        myjenkins           "/sbin/tini -- /usr/…"   34 seconds ago      Up 33 seconds       0.0.0.0:50000->50000/tcp, 0.0.0.0:8088->8080/tcp   myjenkins
[root@iZwz9eq1jai7e87n6vw5liZ myjenkins]#

容器运行到这里其实已经可以访问jenkins的页面了,但为了确保我们运行的容器环境无误,我们先进入容器内部确认一下 jdk,maven,以及相应的PATH

检查镜像内容是否安装了maven等相应的环境
# 进入容器内容
[root@iZwz9eq1jai7e87n6vw5liZ myjenkins]# docker exec -it myjenkins /bin/bash
 # 查看jdk版本
jenkins@591fe973fd4b:~$ java -version
openjdk version "1.8.0_242"
OpenJDK Runtime Environment (build 1.8.0_242-b08)
OpenJDK 64-Bit Server VM (build 25.242-b08, mixed mode)
 # 查看maven版本
jenkins@591fe973fd4b:~$ mvn -v  
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: /var/jenkins_home/apache-maven-3.6.3
Java version: 1.8.0_242, vendor: Oracle Corporation, runtime: /usr/local/openjdk-8/jre
Default locale: en, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-1062.18.1.el7.x86_64", arch: "amd64", family: "unix"
# 确认完毕,jenkins的环境无误!!!,如果不能正确显示相应的版本,那就有问题了,赶紧检查一下。
# 接下来我们就能放心访问jenkins的页面了
3、Jenkins的登入

jenkins默认的登入端口是8080,由于我们用8088做了映射,所以可以访问 http://IP:8088

登入jenkins页面

第一次访问如下图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kzWLpcAg-1592095939323)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200613210948176.png)]

稍等几分钟后

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Mw7owDzi-1592095939324)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200613212427287.png)]

进入容器内容,根据页面提示获取到加密串

# 进入容器获取加密串
[root@iZwz9eq1jai7e87n6vw5liZ updates]# docker exec -it myjenkins /bin/bash
# cat
jenkins@591fe973fd4b:~$ cat /var/jenkins_home/secrets/initialAdminPassword
f0da74842a5d4daa8465f14baff3b5f7 # 将这个加密串粘贴到页面上
jenkins@591fe973fd4b:~$

登入后的页面如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6ACX3PrS-1592095939326)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200613213103528.png)]

刚开始我们点击 选择插件来安装

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qkVplhTG-1592095939327)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200613213413167.png)]

创建第一个管理员账户完毕之后点击保存然后确认开始jenkins

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vnoUXklE-1592095939329)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200613213713655.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cRfVw1Rj-1592095939330)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200613213840151.png)]

配置jenkins的下载加速

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ccuN7nQU-1592095939332)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200613214003883.png)]

点击Availavle,等到页面完全加载完毕之后(一点要等到页面全部在加载之后)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2wBlPcfR-1592095939334)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200613214205422.png)]

然后进入我们的挂载文件目录 /var/lib/docker/volume/myjenkins/_data/updates目录修改default.json文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BDLFSz4b-1592095939336)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200613214432241.png)]

执行如下命令:

[root@iZwz9eq1jai7e87n6vw5liZ updates]# sed -i 's/http:\/\/updates.jenkins-ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json && sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json
[root@iZwz9eq1jai7e87n6vw5liZ updates]# 下载地址已经替换完毕,不相信的我们可以来查看一下
[root@iZwz9eq1jai7e87n6vw5liZ updates]# vim default.json
# 我们发现已经换成了 百度的地址了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4kJOxJd7-1592095939337)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200613214926503.png)]

default.json修改完毕之后我们再回来前端页面上:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ONqIjXdV-1592095939339)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200613215141005.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W996NQVY-1592095939340)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200613215229026.png)]

将上面Update Site 输入框内容替换成如下:清华大学更新地址

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

点击summit,完毕之后重启页面 restart,然后从新输入账号密码完成登入操作!

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Vpr35W8u-1592095939343)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200613215534881.png)]

至此,Jenkins加速的操作配置完成。

4、Jenkins的插件安装

加速的配置我们已经完毕,接下来就是安装一些插件。在这里,我们先安装几个必须的插件

安装中文汉化插件 Localization:Chinese

完毕后重启界面

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cyRUc9o2-1592095939345)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200613220143557.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iEkF4zEe-1592095939346)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200613220332310.png)]

汉化后界面

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JlTvzBk2-1592095939348)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200613221820513.png)]

安装权限控制插件 Role-based Authorization Strategy

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aqhdlHlj-1592095939350)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200613222130398.png)]

安装完毕之后设置权限策略:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qvWkqUvB-1592095939351)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200613222243579.png)]

安装凭证插件 Credentials Binding

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jUU7vlw6-1592095939352)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200613222422877.png)]

安装后效果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2WACBqey-1592095939354)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200613222539782.png)]

安装Git插件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-R7OPStqo-1592095939356)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200613222757218.png)]

5、Jenkins拉取Gitlab代码的两种方式

好,现在必要的插件也都安装完毕,接下来我们从Gitlab拉取代码到Jenkins,那这里就要介绍一下凭据的用处了!

  • Username with password (常用) 就是拉取代码时的账号和密码
  • SSH username with private key (常用) 需要配置公钥以及私钥
  • Secret file
  • Secret text
  • Cretificate
采用http的方式拉取代码

之前我们已经上传过一个最基本的Springboot项目到Gitlab,现在我们把它拉取到 Jenkins

先添加一个凭据用于等下拉取代码

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-32k1RSmu-1592095939357)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200613230430587.png)]

构建一个自由风格的项目

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VVhvL0ta-1592095939359)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200613230550960.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-40Dbglh9-1592095939360)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200613231003642.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dNRjUHSn-1592095939362)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200613231124641.png)]

查看构建信息

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zHF0C212-1592095939363)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200613231215970.png)]

至此,项目已经构建完毕,也就是说已经从Gitlab获取到了源码!!!

采用ssh的方式拉取代码

接下来我们再来看另一种凭据的使用 SSH,要想使用SSH的方式,那我们需要先 生成公钥和私钥,公钥需要保存到Gitlab上,私钥需要保存到 Jenkins上,很多小伙伴有疑问了,这个密钥到底在哪生成呢?是在宿主机上还是docker的容器内部呢?简单分析一下,jenkins拉取代码肯定是从容器内容用Git拉取的,这里说了说了,之前只说了Jenkins默认安装了jdk的环境,其实,jenkins还默认安装了Git ,所以这个密钥是需要在容器内部生成的。

在容器内部生成公钥和私钥

# 进入jenkins容器
[root@iZwz9eq1jai7e87n6vw5liZ ~]# docker exec -it myjenkins /bin/bash
# ssh-keygen -t rsa
jenkins@591fe973fd4b:~$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/var/jenkins_home/.ssh/id_rsa): # 直接回车(存放目录)
Created directory '/var/jenkins_home/.ssh'.
Enter passphrase (empty for no passphrase): # 直接回车
Enter same passphrase again: # 直接回车
Your identification has been saved in /var/jenkins_home/.ssh/id_rsa.
Your public key has been saved in /var/jenkins_home/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:hRu7ogjttrYBVOvI/RgjkGOhtICyAZQtdzkB7+Wc/7M jenkins@591fe973fd4b
The key's randomart image is:
+---[RSA 2048]----+
|*+oo..o          |
|B++oo+   .       |
|**o.....o .      |
|*.+ . + .=       |
|.+ = . +S        |
| o. =   ..       |
|. o. .. ..       |
| ooo . .  ..     |
| o=o.      Eo    |
+----[SHA256]-----+ # 出现这个图像说明密钥已经生成完毕
# 切换到密钥存放目录
jenkins@591fe973fd4b:~$ cd .ssh/
jenkins@591fe973fd4b:~/.ssh$ ls
id_rsa(私钥)  id_rsa.pub(公钥)
# 查看公钥内容
jenkins@591fe973fd4b:~/.ssh$ cat id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCt34S7j5/wxW13xfJOqseQSlf3FPPxky0zMfhlefMltJOfD01iBS1dzosZk6fz/y5K4qMS1JSba8prZkzgHnrYpWqQX19+Ybur8cDPWxxqKORBD/LYv6F/FFBU298aKz/GFil19Q4LtD8GwJxfj/jQvPkcUQOafrRQbZXRXsvR9h4sM/f5ZAwR51uKVMs/4gt/HLBNNRMVrenUiR6lmHkR+D4DnygtAgaEFTE6Zahj2S8YupHgrVMMz2dUlePZ4CByeanIFUvSCmZwsubwMwoJm03kZOGM5k09b/96YhJwUtU1BtzjhXL+JODg7Diu3MTrZOPAZYZBvcc9134sp77d jenkins@591fe973fd4b
jenkins@591fe973fd4b:~/.ssh$

由于之前运行Gitlab容器的时候,指定了222端口为容器内22的映射端口,那么这里地方还要在.ssh目录下增加一个config的配置文件!这个很坑啊,很容易忘记,导致后面的ssh拉取代码的时候一直报permission denied的错误!!!,这个坑搞了我两天,上班时的心情都不好了!对了,这里还要给这个 .ssh 的文件777的权限(这里如果22端口没改则跳过这一步)

# 在 .ssh目录下新增	config文件
[root@iZwz9eq1jai7e87n6vw5liZ .ssh]# vim config
# config文件中编辑的内容
Host 112.74.167.52 # gitlab服务器地址
User root # gitlab登入账号
port 222 # ssh的端口,之前做了映射的
IdentityFile /var/jenkins_home/.ssh/id_rsa # 私钥所在目录

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IosISMTD-1592095939365)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200614004431035.png)]

将id_rsa.pub(公钥)内容复制到Gitlab的 ssh keys 中

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-V0DxmnWJ-1592095939367)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200613233222337.png)]

将id_rsa(私钥)内容复制到 Jenkins的ssh凭据里面

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uVMVwysk-1592095939370)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200613233748006.png)]

使用ssh的方式从Gitlab拉取代码

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CH4XoecZ-1592095939372)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200613234045800.png)]

再创建一个项目test02使用ssh的方式来构建项目

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y8k6DcpE-1592095939374)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200614000553660.png)]

查看构建信息:构建成功!

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IlPP2kzu-1592095939376)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200614000713454.png)]

6、Jenkins配置JDK以及maven的环境

因为后续需要将拉取的代码进行打包操作,所以这里必须要先配置maven以及JDK的环境

查看Jenkins中现有的环境

[root@iZwz9eq1jai7e87n6vw5liZ /]# docker inspect myjenkins

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CyqkHPzh-1592312157400)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200616204944981.png)]

Jenkins页面添加如下配置

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gzXdSAgF-1592312157403)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200616205041129.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qWZcQtGV-1592312157406)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200616205216123.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rS6VvEKV-1592312157410)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200616205245688.png)]

再在系统配置添加如下变量

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-phYFTfv7-1592312157412)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200616205419275.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jB9YTHbk-1592312157413)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200616205519265.png)]

环境配置完毕

7、使用maven构建拉取的代码,生成jar/war包

至此,Gitlab以及Jenkins的搭建都已经说清楚了,还包括 jenkins从gitlab拉取代码的两种方式,那么接下来就再讲讲使用 Jenkins 对拉取的代码进行maven打包的把!这个也很简单

以 test01为例,点击 配置

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZsH2xEwj-1592095939378)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200614001058182.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FrBv1Dsk-1592095939379)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200614001305600.png)]

编写maven打包指令

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pP0w0Xpt-1592095939381)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200614001428271.png)]

执行立即构建将项目打包

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lgOHc42t-1592095939382)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200614001635220.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-frkDXFma-1592095939384)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200614002752512.png)]

查看打包结果: 构建成功

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WMlIFM8U-1592095939386)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200614002858767.png)]

那么接下来我们来看一下生成的springboot 的jar包

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2UOkHfA1-1592095939387)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200614003212697.png)]

至此,使用Jenkins 对项目进行maven打包也已经完成!

截图截得我想吐啊,大家给个收藏关注吧!谢谢了。革命尚未成功,我们还需努力

Docker安装Tomcat

只要前面都是按照我的做的,应该都能安装成功,并且到这一步

Tomcat的安装
# 搜索tomcat镜像
[root@iZwz9eq1jai7e87n6vw5liZ /]# docker search tomcat --filter=STARS=50
NAME                DESCRIPTION                                     STARS               
tomcat              Apache Tomcat is an open source implementati…   2751               
tomee               Apache TomEE is an all-Apache Java EE certif…   79                 
dordoka/tomcat      Ubuntu 14.04, Oracle JDK 8 and Tomcat 8 base…   54                   
# 这里我们直接pull最新版的tomcat
[root@iZwz9eq1jai7e87n6vw5liZ /]# docker pull tomcat
Using default tag: latest
e9afc4f90ab0: Pull complete
Digest: sha256:81c2a95e5b1b5867229d75255abe54928d505deb81c8ff8949b61fde1a5d30a1
Status: Downloaded newer image for tomcat:latest
docker.io/library/tomcat:latest
# 查看现有镜像
[root@iZwz9eq1jai7e87n6vw5liZ /]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
myjenkins           latest              02556376487f        4 hours ago         667MB
tomcat              latest              2eb5a120304e        3 days ago          647MB
jenkins/jenkins     lts                 5d1103b93f92        2 weeks ago         656MB
[root@iZwz9eq1jai7e87n6vw5liZ /]# Tomcat镜像已经安装完毕
Tomcat的运行
# 运行tomcat
[root@iZwz9eq1jai7e87n6vw5liZ mytomcat]# docker run -d -p 8080:8080 --name tomcat -v mytomcat:/usr/local/tomcat tomcat
9aa32004d185990213381e6aa1cf03684af32ab9a8ff3f5bd602161bf440e85f
# 查看当前运行的容器
[root@iZwz9eq1jai7e87n6vw5liZ mytomcat]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                              NAMES
9aa32004d185        tomcat              "catalina.sh run"        48 seconds ago      Up 47 seconds       0.0.0.0:8080->8080/tcp                             tomcat
591fe973fd4b        myjenkins           "/sbin/tini -- /usr/…"   4 hours ago         Up 4 hours          0.0.0.0:50000->50000/tcp, 0.0.0.0:8088->8080/tcp   myjenkins
[root@iZwz9eq1jai7e87n6vw5liZ mytomcat]# tomcat容器启动成功

接下来就直接访问tomcat的页面吧! http://IP:8080

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Z3Czvz8e-1592095939388)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200614005814610.png)]

发现404,这是为什么呢?这是因为docker容器只保留了容器的最小功能,其他的配置能省就省,不信的话,我们可以切换到tomcat的webapps的目录下来一探究竟!!!

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f6T8H1H4-1592095939390)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200614010130386.png)]

那要怎么样才能访问到tomcat的首页呢?其实很简单,我们发现tomcat的目录下面有一个webapps.dist的文件,我们只要把这个文件下的所有内容都复制到webapps的目录下面,即可访问到tomcat的经典首页!

# 复制命令
[root@iZwz9eq1jai7e87n6vw5liZ _data]# cp -r webapps.dist/* webapps/
[root@iZwz9eq1jai7e87n6vw5liZ _data]# cd webapps
[root@iZwz9eq1jai7e87n6vw5liZ webapps]# ls
docs  examples  host-manager  manager  ROOT
[root@iZwz9eq1jai7e87n6vw5liZ webapps]#

接下来我们再次访问 http://IP:8080,完美运行

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GkTcHXG8-1592095939392)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200614010533319.png)]

Tmcat修改配置
修改 tomcat-user.xml 文件(_data/config/目录下)
# 我们为tomcat添加一个用户和角色
<tomcat-users>
		<role rolename="tomcat" />
		<role rolename="role1" />
		<role rolename="manager-script" />
		<role rolename="manager-gui" />
		<role rolename="manager-status" />
		<role rolename="admin-gui" />
		<role rolename="admin-script" />
		<user username="tomcat" password="123456" roles="manager-gui,manager-			                  script,tomcat,admin-gui,admin-script" />
</tomcat-users>

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kS7temwF-1592095939394)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200614012052876.png)]

修改context.xml文件(_data/webapps/manager/META-INF/目录下)
#注释掉如下内容
<value className="org.apache.catalina.values.RemoteAddrValue"
		allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MCp6sw4L-1592095939395)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200614012528652.png)]

OK配置完毕,接下来我们再次访问页面,点击 manager webapp 输入刚才设置的登入账号和密码 tomcat/123456登入查看

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2hCzjwSJ-1592095939396)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200614012927742.png)]

登入后页面:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sN6oX0Lm-1592095939398)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200614013003498.png)]

至此,Tomcat的服务器也搭建完毕了。更新先停一段落,后续将会继续更新

Jenkins自动化项目部署的操作!!!只需要开发人员提交代码到版本库,那么Jenkins就自动将最新代码打包直接发布到Tomcat服务器,是不是很方便!也希望大家多多支持。头一次写这么详细,希望大家好好练习。

只要学不死,就往死里学!!!

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值