使用Docker安装Gitlab,Jenkins,Tomcat搭建流水线项目环境,实现DevOps自动化步骤,很详细
使用Docker安装Gitlab,Jenkins,Tomcat搭建流水线项目,实现DevOps自动化写在前头,入职公司不久,发现公司都是用的Jenkins来实现自动化项目部署,十分方便,但作为底层开发人员,接触的不是很多,所以特地来详细的学习一下,扩充一下自己的技术栈!以下内容需要拥有docker的基础知识,大家也可以多看看我之前的博客,都很详细。我这里采用的是Docker容器化技术来安装的,方便
使用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)]](https://i-blog.csdnimg.cn/blog_migrate/b196ef89834f28730b3fc039dcfd344b.png)
使用方才设置的密码,然后使用root账号登入
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RESfdDvb-1592095939300)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200613190228193.png)]](https://i-blog.csdnimg.cn/blog_migrate/fefdab88a116752dc1b6c308f56a6e2c.png)
进入的页面如下:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XsaSw0yJ-1592095939303)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200613190327178.png)]](https://i-blog.csdnimg.cn/blog_migrate/f8b3eaa8e9f2e8a0ab27e30f112840a6.png)
点击create a project,创建如下工程:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K87OkiDU-1592095939307)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200613190553814.png)]](https://i-blog.csdnimg.cn/blog_migrate/fcebc615f74059828ad2073a5cca7987.png)
4、上传代码到gitlab
OK,现在我们已经搭建好gitlab服务器,并且创建了一个名叫upload-test-01的工程,那么接下来将往该工程中提交代码
复制工程的URL
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U0JNyPSp-1592095939310)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200613191159281.png)]](https://i-blog.csdnimg.cn/blog_migrate/2641350789a53d361553f8b460417bd7.png)
复制URL,使用Eclipse或者IDEA将代码推送到仓库
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vk94Sh4J-1592095939312)(C:\Users\ADMINI~1\AppData\Local\Temp\WeChat Files\a1d360f990f6db500610bfdd6bd27bf.png)]](https://i-blog.csdnimg.cn/blog_migrate/6790f47c16a00d427748fc27f2d49a0e.png)

推送成功
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jUHMlGdY-1592095939316)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200613195803338.png)]](https://i-blog.csdnimg.cn/blog_migrate/46ba1e0db15b8b218dd5242b6c07b3c8.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)]](https://i-blog.csdnimg.cn/blog_migrate/75f5b5c039f4d7428a8d859568b08cad.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)]](https://i-blog.csdnimg.cn/blog_migrate/1e56119664f68ef2fa5f71c4e88cc12b.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ur1QTTLG-1592095939321)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200614002242004.png)]](https://i-blog.csdnimg.cn/blog_migrate/08547f88cc83dbc1a276043ccd6f207d.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)]](https://i-blog.csdnimg.cn/blog_migrate/16d377e1dd2c1a4fae2180556091de07.png)
稍等几分钟后
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Mw7owDzi-1592095939324)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200613212427287.png)]](https://i-blog.csdnimg.cn/blog_migrate/52488e05f8c7d5f44d98b7c6c7f91939.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)]](https://i-blog.csdnimg.cn/blog_migrate/26b26084d773003df63e4e556cd97c1c.png)
刚开始我们点击 选择插件来安装
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qkVplhTG-1592095939327)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200613213413167.png)]](https://i-blog.csdnimg.cn/blog_migrate/c4d723d1c4e0ed4931e8ceae2244802a.png)
创建第一个管理员账户,完毕之后点击保存然后确认开始jenkins
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vnoUXklE-1592095939329)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200613213713655.png)]](https://i-blog.csdnimg.cn/blog_migrate/c6d0a0708047dccfc51de459b62a8aa5.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cRfVw1Rj-1592095939330)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200613213840151.png)]](https://i-blog.csdnimg.cn/blog_migrate/c3483e1a82069af2242edea3bd46143d.png)
配置jenkins的下载加速
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ccuN7nQU-1592095939332)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200613214003883.png)]](https://i-blog.csdnimg.cn/blog_migrate/e6bb215b72de9b89931a00e435e7e228.png)
点击Availavle,等到页面完全加载完毕之后(一点要等到页面全部在加载之后)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2wBlPcfR-1592095939334)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200613214205422.png)]](https://i-blog.csdnimg.cn/blog_migrate/02ff0bcf78514459a6ebf9decb3771f7.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)]](https://i-blog.csdnimg.cn/blog_migrate/f2b20fb31282b836721a66228dfe99a4.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)]](https://i-blog.csdnimg.cn/blog_migrate/4ac3da73c5eaffa9c11061fe5171b3c9.png)
default.json修改完毕之后我们再回来前端页面上:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ONqIjXdV-1592095939339)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200613215141005.png)]](https://i-blog.csdnimg.cn/blog_migrate/985cf68fe733ed080a6e54e6ce7cd8ef.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W996NQVY-1592095939340)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200613215229026.png)]](https://i-blog.csdnimg.cn/blog_migrate/1dc251b61b111bc68d196a85af5e4742.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)]](https://i-blog.csdnimg.cn/blog_migrate/22eb25766dc645d7ddca1b7447c05783.png)
至此,Jenkins加速的操作配置完成。
4、Jenkins的插件安装
加速的配置我们已经完毕,接下来就是安装一些插件。在这里,我们先安装几个必须的插件
安装中文汉化插件 Localization:Chinese
完毕后重启界面
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cyRUc9o2-1592095939345)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200613220143557.png)]](https://i-blog.csdnimg.cn/blog_migrate/7583ccce86808c63b29cac991797c5e7.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iEkF4zEe-1592095939346)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200613220332310.png)]](https://i-blog.csdnimg.cn/blog_migrate/ab8946fa83268ce9eea28937fac54c54.png)
汉化后界面
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JlTvzBk2-1592095939348)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200613221820513.png)]](https://i-blog.csdnimg.cn/blog_migrate/c9095268c5c29884a65f170e0d108457.png)
安装权限控制插件 Role-based Authorization Strategy
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aqhdlHlj-1592095939350)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200613222130398.png)]](https://i-blog.csdnimg.cn/blog_migrate/6196bee402a274a7ea445a4ea40fbed6.png)
安装完毕之后设置权限策略:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qvWkqUvB-1592095939351)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200613222243579.png)]](https://i-blog.csdnimg.cn/blog_migrate/e729099c6a5404d1e4875cb4ac5058d5.png)
安装凭证插件 Credentials Binding
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jUU7vlw6-1592095939352)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200613222422877.png)]](https://i-blog.csdnimg.cn/blog_migrate/8edde034f4bf917ba253c6e4822f95fb.png)
安装后效果:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2WACBqey-1592095939354)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200613222539782.png)]](https://i-blog.csdnimg.cn/blog_migrate/cc2089476abfd677b755072d1b549961.png)
安装Git插件
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-R7OPStqo-1592095939356)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200613222757218.png)]](https://i-blog.csdnimg.cn/blog_migrate/265e446fda35f00b65748e8a70e53655.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)]](https://i-blog.csdnimg.cn/blog_migrate/aceedbadbca3919367e21bfab12b2b7c.png)
构建一个自由风格的项目
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VVhvL0ta-1592095939359)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200613230550960.png)]](https://i-blog.csdnimg.cn/blog_migrate/2d2230aff863232abddeb2a659dc99da.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-40Dbglh9-1592095939360)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200613231003642.png)]](https://i-blog.csdnimg.cn/blog_migrate/94d93667003aeb6259dbe2c85082e194.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dNRjUHSn-1592095939362)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200613231124641.png)]](https://i-blog.csdnimg.cn/blog_migrate/495f9a17df1241bccad5c3e681e341b4.png)
查看构建信息
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zHF0C212-1592095939363)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200613231215970.png)]](https://i-blog.csdnimg.cn/blog_migrate/cd5bb0d6ade0090ebefde11054e13f36.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)]](https://i-blog.csdnimg.cn/blog_migrate/40016b28143cc0e494ddfc96d576cd39.png)
将id_rsa.pub(公钥)内容复制到Gitlab的 ssh keys 中
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-V0DxmnWJ-1592095939367)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200613233222337.png)]](https://i-blog.csdnimg.cn/blog_migrate/1f20cf8b18c3c6638b7831f326f4ca9e.png)
将id_rsa(私钥)内容复制到 Jenkins的ssh凭据里面
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uVMVwysk-1592095939370)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200613233748006.png)]](https://i-blog.csdnimg.cn/blog_migrate/bce1ed9cd3469348c1468eb47ffdee71.png)
使用ssh的方式从Gitlab拉取代码
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CH4XoecZ-1592095939372)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200613234045800.png)]](https://i-blog.csdnimg.cn/blog_migrate/da6d89a85ba4bd1795a5419e23c8fc31.png)
再创建一个项目test02使用ssh的方式来构建项目
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y8k6DcpE-1592095939374)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200614000553660.png)]](https://i-blog.csdnimg.cn/blog_migrate/b5409a0115f90cfdf8de233e49bc2a90.png)
查看构建信息:构建成功!
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IlPP2kzu-1592095939376)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200614000713454.png)]](https://i-blog.csdnimg.cn/blog_migrate/8e85d50fba9bde001ec1f110396fbfb5.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)]](https://i-blog.csdnimg.cn/blog_migrate/2cde0de00a406d6983039637c6be2e28.png)
Jenkins页面添加如下配置
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gzXdSAgF-1592312157403)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200616205041129.png)]](https://i-blog.csdnimg.cn/blog_migrate/c2771ecd8a0c8866d673621ee755c501.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qWZcQtGV-1592312157406)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200616205216123.png)]](https://i-blog.csdnimg.cn/blog_migrate/b27d625797db88135c9f64eef0f3f60d.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rS6VvEKV-1592312157410)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200616205245688.png)]](https://i-blog.csdnimg.cn/blog_migrate/f8f749e7b99dc3eeb3cc054c707b87b1.png)
再在系统配置添加如下变量
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-phYFTfv7-1592312157412)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200616205419275.png)]](https://i-blog.csdnimg.cn/blog_migrate/dad7ca1ff669f7fb6e3fed77835ceea8.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jB9YTHbk-1592312157413)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200616205519265.png)]](https://i-blog.csdnimg.cn/blog_migrate/2dabb79c2d7f93d15c2075f0cdfa0115.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)]](https://i-blog.csdnimg.cn/blog_migrate/e8cf8a3a4b8a90d859876641ab130293.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FrBv1Dsk-1592095939379)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200614001305600.png)]](https://i-blog.csdnimg.cn/blog_migrate/c89c6b83a02568de373ee1a34b2aaccc.png)
编写maven打包指令
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pP0w0Xpt-1592095939381)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200614001428271.png)]](https://i-blog.csdnimg.cn/blog_migrate/f9eb3f1ec4dacdcadc3b3beca443b670.png)
执行立即构建将项目打包
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lgOHc42t-1592095939382)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200614001635220.png)]](https://i-blog.csdnimg.cn/blog_migrate/f66b9a44c9d07a908bab15ad07ecd3cc.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-frkDXFma-1592095939384)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200614002752512.png)]](https://i-blog.csdnimg.cn/blog_migrate/d9b71ef404e04a306a48e174f2d7f72e.png)
查看打包结果: 构建成功
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WMlIFM8U-1592095939386)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200614002858767.png)]](https://i-blog.csdnimg.cn/blog_migrate/751d8e4761541d9088a00bf80519feeb.png)
那么接下来我们来看一下生成的springboot 的jar包
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2UOkHfA1-1592095939387)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200614003212697.png)]](https://i-blog.csdnimg.cn/blog_migrate/c371a817d89d5782942c9a1fe145e5a2.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)]](https://i-blog.csdnimg.cn/blog_migrate/88e98f3e244aa5898798ec161949716d.png)
发现404,这是为什么呢?这是因为docker容器只保留了容器的最小功能,其他的配置能省就省,不信的话,我们可以切换到tomcat的webapps的目录下来一探究竟!!!
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f6T8H1H4-1592095939390)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200614010130386.png)]](https://i-blog.csdnimg.cn/blog_migrate/14735b80ca7e1902f5bc82421be11a91.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)]](https://i-blog.csdnimg.cn/blog_migrate/4b8f1184022c5c21e880216213f1733f.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)]](https://i-blog.csdnimg.cn/blog_migrate/369fcd54ef1889cf7dcf89c98afb3988.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)]](https://i-blog.csdnimg.cn/blog_migrate/9f64a4a558ac1c0f76f5f89bdf58f6cc.png)
OK配置完毕,接下来我们再次访问页面,点击 manager webapp 输入刚才设置的登入账号和密码 tomcat/123456登入查看
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2hCzjwSJ-1592095939396)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200614012927742.png)]](https://i-blog.csdnimg.cn/blog_migrate/1feceda1293a3a7740655e214ece49ae.png)
登入后页面:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sN6oX0Lm-1592095939398)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200614013003498.png)]](https://i-blog.csdnimg.cn/blog_migrate/f27413131066be446e80b0a8f6dc47c4.png)
至此,Tomcat的服务器也搭建完毕了。更新先停一段落,后续将会继续更新
Jenkins自动化项目部署的操作!!!只需要开发人员提交代码到版本库,那么Jenkins就自动将最新代码打包直接发布到Tomcat服务器,是不是很方便!也希望大家多多支持。头一次写这么详细,希望大家好好练习。
只要学不死,就往死里学!!!
更多推荐




所有评论(0)