淘先锋技术网

首页 1 2 3 4 5 6 7

【一】安装部署

【1】Jenkins所处位置

在这里插入图片描述

【2】Docker安装Gitlab

(1)首先准备一台空的虚拟机服务器

Gitlab用的端口是80,可能会跟其它应用冲突,并且Gitlab所需内存也很大,所以还是单独放在一个服务器上比较好。
用原来空的虚拟机服务器克隆一个,注意内存要选大一点,6G左右

(2)安装服务器所需的依赖

(1)ip a / ip addr / ifconfig 不显示ip问题

(3)Docker的安装

(1)查看系统的内核版本

uname -r 4.18.0-80.11.2.el8_0.x86_64

执行命令:uname -r
注意:x86 64位系统,如果是32位是不能安装 docker 的

(2)yum更新到最新版本

sudo yum -y update

执行命令:sudo yum update
注意:看到显示 Complete 就代表完成了,整个过程需要 5-10 分钟左右

更新gcc(C语言的编译环境)

yum -y install gcc
yum -y install gcc-c++

(3)安装Docker所需的依赖包

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

执行命令:sudo yum install -y yum-utils device-mapper-persistent-data lvm2
注意:看到显示 Complete 就代表完成了,整个过程需要 1-3 分钟左右

(4)设置Docker的yum的源

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

(5)更新yum软件包索引

yum makecache fast

(6)查看仓库所有Docker版本

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

(7)安装Docker
安装默认最新版本的Docker

yum -y install docker-ce docker-ce-cli containerd.io

(8)启动Docker并添加开机自启动
启动Docker

sudo systemctl start docker

设置开机启动Docker

systemctl enable docker

重启docker

systemctl restart docker

停止docker

systemctl stop docker

(9)查看Docker版本

docker --version

(10)测试

ps -ef|grep docker
docker version

(11)卸载Docker

systemctl stop docker
yum remove docker-ce docker-ce-cli containerd.io
rm -rf /var/lib/docker
rm -rf /var/lib/containerd

(12)Docker常用命令

[root@CodeGuide ~]# docker --help				#Docker帮助
[root@CodeGuide ~]# docker --version			#查看Docker版本
[root@CodeGuide ~]# docker search <image>		#搜索镜像文件,如:docker search mysql
[root@CodeGuide ~]# docker pull <image>		#拉取镜像文件, 如:docker pull mysql
[root@CodeGuide ~]# docker images				#查看已经拉取下来的所以镜像文件
[root@CodeGuide ~]# docker rmi <image>		#删除指定镜像文件
[root@CodeGuide ~]# docker run --name <name> -p 80:8080 -d <image>		#发布指定镜像文件
[root@CodeGuide ~]# docker ps					#查看正在运行的所有镜像
[root@CodeGuide ~]# docker ps -a				#查看所有发布的镜像
[root@CodeGuide ~]# docker rm <image>			#删除执行已发布的镜像

(13)如何创建自启动的容器
(1)还没run创建容器的
使用 docker run 命令运行时,增加 --restart=always 参数即可

(2)已运行的容器修改其自启动策略
执行命令:
docker update --restart=always 容器名或容器ID
docker container update --restart=【容器策略】 容器名称

# no 容器退出时不重启容器
# on-failure 只有在非零状态退出时才重新启动容器
--restart=on-failure:【重启次数】
# always 无论退出状态如何都

(4)阿里云镜像加速

(1)获取阿里云加速器地址
登陆阿里云,点击控制台,然后点击菜单,找到“容器镜像服务”
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YRAD3MdN-1672584376343)(evernotecid://9B99E324-7852-4A64-95A3-727CD2F9CB64/appyinxiangcom/12234224/ENResource/p1677)]

创建个人容器镜像托管服务

然后点击镜像工具,进入镜像加速器,即可看到阿里云加速器地址,把这个加速器地址配置到docker容器里
在这里插入图片描述

(2)创建文件夹并执行脚本
先创建文件夹

mkdir -p /etc/docker

执行脚本

tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://xqybwad5.mirror.aliyuncs.com"]
}
EOF

(3)重新加载配置文件

systemctl daemon-reload

(4)重新启动docker

systemctl restart docker

(5)查看 daemon.json 是否已经生效了

tail /etc/docker/daemon.json

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w2MT66LX-1672584376344)(evernotecid://9B99E324-7852-4A64-95A3-727CD2F9CB64/appyinxiangcom/12234224/ENResource/p1679)]

(5)安装Gitlab

关闭所有防火墙
service firewalld status
service firewalld stop
重启docker:systemctl restart docker

(1)拉取镜像,创建容器
直接使用创建命令,系统会自动进行拉取

# 添加容器
docker run --detach \
 --hostname 192.168.19.8  \
 --publish 443:443 --publish 80:80 \
 --name gitlab \
 --restart always \
 --volume $GITLAB_HOME/config:/etc/gitlab \
 --volume $GITLAB_HOME/logs:/var/log/gitlab \
 --volume $GITLAB_HOME/data:/var/opt/gitlab \
 --shm-size 256m \
 registry.gitlab.cn/omnibus/gitlab-jh:latest


 gitlab/gitlab-ce:latest

(2)启动容器

docker start gitlab

查看已经存在的容器

docker ps -a

(3)进入容器

docker exec -it gitlab /bin/bash

(4)外网访问测试
首先保证前面关闭防火墙
访问下面连接(注意http不加s):http://192.168.19.8/
要稍微等一会

查看内存使用情况

free -m

等内存加载的差不多了,就可以打开网页了
在这里插入图片描述
在这里插入图片描述
(5)管理员账号密码登录
密码是进入容器后查找的

cat /etc/gitlab/initial_root_password

登录名是root,密码直接复制过来使用
在这里插入图片描述
(6)修改默认密码
启动 gitlab-rails console要等一会

进入容器:
~/files/code/gitlab$ docker exec -it gitlab bash
启动 gitlab-rails console:

root@gitlab:/# gitlab-rails console
--------------------------------------------------------------------------------
 Ruby:         ruby 2.7.5p203 (2021-11-24 revision f69aeb8314) [x86_64-linux]
 GitLab:       14.7.2 (89599212ee6) FOSS
 GitLab Shell: 13.22.2
 PostgreSQL:   12.7
--------------------------------------------------------------------------------
Loading production environment (Rails 6.1.4.4)
irb(main):001:0> user =User.find(1)
=> #<User id:1 @root>
irb(main):002:0> user.password = '111111admin'
=> "111111admin"
irb(main):003:0> user.password_confirmation = '111111admin'
=> "111111admin"
irb(main):004:0> user.send_only_admin_changed_your_password_notification!
=> true
irb(main):005:0> user.save!
=> true
irb(main):006:0> exit
root@gitlab:/# exit

【3】Gitlab使用

(1)Gitlab创建项目

首先创建一个空白的项目
在这里插入图片描述

(2)Idea工具创建本地仓库

在IDEA中创建好项目,点击VCS,按照下图指示先给项目创建本地Git仓库
在这里插入图片描述

(3)选择此项目根目录作为发布的仓库

(4)把项目ADD添加到git缓冲区

选择最右侧的 “add”
在这里插入图片描述

(5)再将项目COMMIT提交到本地仓库

选择最右侧第一个 “Commit Directory…”
在这里插入图片描述点击之后,在弹窗里填写备注信息
在这里插入图片描述

(6)把项目PUSH推送到远程仓库

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
URL复制下面这个
在这里插入图片描述连接的时候输入root和对应的密码就行了

这样就可以提交上去了
在这里插入图片描述

更新项目的话,commit的时候选择你修改的文件,push的时候,对应的url就是你要更新项目仓库的url。这样,gitlab上面仓库里面的项目就是你选择的文件进行修改了。也就是只是局部进行修改。

(7)查看commit的几次,就是看版本

在这里插入图片描述

看到以上commit了3次;

我们想要回到某一次,我们可以右击想要回到的版本
在这里插入图片描述
只要点击了以上的这个,就回去了

【Checkout Revision】和【Reset Current Branch to Here】的区别?

(8)创建分支

我们想要在当前的项目的基础上面,创建一个分支,相当于对于当前的项目复制一份,变为一个分支
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

如何查看是不是切换过去了

idea右下角,就可以看到当前的项目在哪个分支

在这里插入图片描述
在这里插入图片描述

也可以直接在右下角进行点击创建
在这里插入图片描述

【4】Docker安装Jenkins

(1)拉取镜像

拉取镜像,这里指定是2.415版本,默认最新的是2.3版本,在初始化插件的时候会因为版本低而下载失败

docker pull jenkins/jenkins:2.415

(2)修改目录权限

会把容器中的Jenkins主目录给持久化到主机本地目录里,因此需要先在主机上新建一个本地目录,并设置权限

需要修改下目录权限,因为当映射本地数据卷时,/data/jenkins_home/目录的拥有者为root用户,

而容器中jenkins用户的 uid 为 1000。

我们创建一个jenkins目录
# mkdir /var/jenkins_home
# chown -R 1000:1000 /var/jenkins_home/

(3)运行容器

(1)–name jenkins:命名
(2)-d:表示后台运行
(3)-p 10240:8080:把宿主机的10240端口映射到8080端口
(4)-v /var/jenkins_home:/var/jenkins_home
(5)-v /etc/localtime:/etc/localtime
(6)-v /var/run/docker.sock:/var/run/docker.sock:让Jenkins能够与主机的Docker进行通讯

docker run -d -p 10240:8080 -p 10241:50000 -v /var/jenkins_home:/var/jenkins_home -v /etc/localtime:/etc/localtime --name myjenkins -v /var/run/docker.sock:/var/run/docker.sock jenkins/jenkins:2.415

(4)浏览器访问Jenkins页面

输入http://192.168.XX.XX:10240
IP是服务器IP地址
端口号是我们刚刚设置的端口号
在这里插入图片描述

(5)获取管理员密码

vim /var/jenkins_home/secrets/initialAdminPassword

复制密码然后登录

(6)安装插件

这里先跳过安装

(7)创建管理员

root
admin

(8)实例配置

url不用动
在这里插入图片描述
配置完成
在这里插入图片描述http://192.168.19.7:10240/

(9)通过docker安装的jenkins自带git和JDK,就不需要再安装了

Jenkins本机默认使用“yum -y install git” 安装的 git

docker exec -it myjenkins /bin/bash

git --version

java --version

echo $JAVA_HOME

在这里插入图片描述

(10)查看Jenkins版本

在这里插入图片描述
滑到最底下,可以看到当前安装的版本是2.328
在这里插入图片描述

【6】Jenkins使用

(1)配置插件镜像

在这里插入图片描述
滑到下面,找到升级站点
在这里插入图片描述
输入:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

点击提交,然后重启jenkins:http://localhost:8080/restart

(2)定制安装所需的插件

因为环境网络问题前面跳过了插件的安装,在这一步选择一个简单的jenkins系统所需要的插件。

配置路径:Manage Jenkins>> Manage Plugins
在这里插入图片描述在这里插入图片描述
选择所需要插件,点击安装(Install without restart)
在这里插入图片描述

有两个重要的插件需要安装:publish over ssh和Maven Integration plugin

(1)安装publish over ssh
在这里插入图片描述
注意:这里直接安装可能会失败,查看失败的详情信息,提示说需要更高版本的Jenkins才可以:Jenkins (2.332.1) or higher required

那么我们可以换个更低版本的插件来安装试试,插件网址:http://updates.jenkins-ci.org/download/plugins/

在这里插入图片描述

查看它前面的版本是否符合要求,下载一个hpi文件,离线方式安装插件:
在这里插入图片描述
在这里插入图片描述
重启jenkins

(2)安装Maven Integration
然后还有Maven插件
在这里插入图片描述

安装完成后重新启动一下

(3)安装中文翻译插件
重启
在这里插入图片描述点击【Configure System】选项。
在这里插入图片描述找到【Locale】选项,输入【zh_CN】,勾选下面的选项,最后点击【应用】即可。

在这里插入图片描述
(4)安装Git插件

(3)配置ssh

配置全局凭据,这个全局凭据看起来高大上,其实挺好理解,就是一个配置项,然后你配置好以后,你就可以通过jenkins登录到你想进入的那台服务器里面,你还可以在那台服务器上执行你设计的指令。而咱们第二步中安装的publish over ssh插件,就是用来干这事的!

(1)生成ssh私钥和公钥
假设我有两台机器A,B然后我想在A机器上远程登录到B机器上,那么我就应该在A机器中通过ssh生成公钥和私钥,然后把公钥放到B机器中,私钥自己留着。

(5)配置jdk和maven和git

(1)配置JDK
点击系统管理,找到全局工具配置

如果是在宿主机里安装的JDK
在这里插入图片描述
但是如果使用Docker安装的Jenkins,那么是自带JDK的,我们可以进入到jenkins容器中 echo $JAVA_HOME 获取java环境安装地址

docker exec -it myjenkins /bin/bash

git --version

java --version

echo $JAVA_HOME

获取Jenkins里的jdk路径是【/opt/java/openjdk】
在这里插入图片描述

在这里插入图片描述

(2)配置maven(选用默认的即可)

进入【首页】–【系统管理】–【全局配置】,拉到最下面maven–maven安装

下载jar包会比较慢,所以还要配置国内的镜像,所以这里还是用自己安装的maven会更方便使用
在这里插入图片描述
(3)配置git
使用默认的,不需要配

点击保存

(6)准备Springboot项目到git

要包含Dockerfile文件,在springboot项目根目录新建一个名为Dockerfile的文件,注意没有后缀名,其内容如下:(大致就是使用jdk8,把jar包添加到docker然后运行prd配置文件)

FROM jdk:8
VOLUME /tmp
ADD target/zx-order-0.0.1-SNAPSHOT.jar app.jar
EXPOSE 8888
ENTRYPOINT ["Bash","-DBash.security.egd=file:/dev/./urandom","-jar","/app.jar","--spring.profiles.active=prd"]

上传git仓库
在这里插入图片描述
在这里插入图片描述

【7】使用Jenkins部署项目

(1)新建任务

在这里插入图片描述

在这里插入图片描述

(2)到Gitlab的项目里复制克隆路径

在这里插入图片描述
这里先简单用个测试的hello world项目:https://github.com/bangbangw/demo01.git

(2)项目配置

(1)源码管理
用的是自己搭建服务器上gitlab的代码,创建的时候已经设置为public了,这里直接用:http://192.168.19.8/root/docker-springboot.git
在这里插入图片描述
(2)构建触发器
在这里插入图片描述

(3)构建环境
在这里插入图片描述
(4)Pre Steps
可以执行一些构建之前的操作

(5)Build(构建)
在Gitlab里面可以看一下pom.xml是不是放在根目录下的,如果还有子目录,下面就要填成***/pom.xml
在这里插入图片描述
在这里插入图片描述

(4)增加构建执行shell

因为我们项目和jenkins在同一台服务器,所以我们用shell脚本运行项目,原理既是通过dockerfile 打包镜像,然后docker运行即可。

在这里插入图片描述

shell脚本:

#!/bin/bash
# 服务名称
SERVER_NAME=jenkins

# 源jar名称,mvn打包之后,target目录下的jar包名称
JAR_NAME=demo-0.0.1-SNAPSHOT

# jenkins下的目录
JENKINS_HOME=/var/jenkins_home/workspace/jenkins

# 等待三秒
echo sleep 3s
sleep 1
echo sleep 2s
sleep 1
echo sleep 1s
sleep 1
      
echo "结束进程完成"

cd $JENKINS_HOME/target

cp $JENKINS_HOME/Dockerfile $JENKINS_HOME/target

# 修改文件权限
chmod 755 $JAR_NAME.jar

echo "看看docker能不能用"
docker -v

echo "停止容器"
# 停止容器
docker stop springboot

echo "删除容器"
# 删除容器
docker rm springboot
echo "删除镜像"
# 删除镜像
docker rmi springboot
echo "打包镜像"
# 打包镜像
docker build -t springboot .
echo "运行镜像"
# 运行镜像
docker run -d -p 8081:8081 --name springboot springboot

在这里插入图片描述

(5)立即构建

在这里插入图片描述

因为是第一次构建,maven的仓库里没有jar包,所以全部都要下载,有可能会在下载的过程中就失败,所以构建的过程中要观察一下控制台输出
在这里插入图片描述

(6)控制台输出报错

在这里插入图片描述我们看到打包成功了,就是在使用docker命令的时候出现权限问题,这是我们要给docker.sock权限就可以解决了!!

报错信息:

Got permission denied while trying to connect to the Docker daemon socket at
 unix:///var/run/docker.sock: Post 
 "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/springboot/stop": dial unix 
 /var/run/docker.sock: connect: permission denied

解决方案:

chmod a+rw /var/run/docker.sock

(7)再次构建

我们发现没有报错,也看到了容器的id
在这里插入图片描述

(8)查看Docker镜像是否启动

docker images
docker ps

在这里插入图片描述

(9)本地接口访问测试

【8】准备一个springboot的helloworld项目

(1)下载地址
https://how2j.cn/k/springboot/springboot-idea/1641.html

在这里插入图片描述
(2)idea打开项目
下载项目文件后,解压,然后使用idea打开
在这里插入图片描述
(3)启动项目,测试访问
因为本地8080端口冲突,所以在配置文件里把服务端口改成了8082,启动成功以后访问:http://localhost:8082/hello
在这里插入图片描述
如图测试成功,接下来就是把测试成功的项目提交到自己搭建的Gitlab上去了

(4)Gitlab创建项目
首先创建一个空白的项目
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(5)Idea工具创建本地仓库
在IDEA中创建好项目,点击VCS,按照下图指示先给项目创建本地Git仓库
在这里插入图片描述
然后选择当前项目的文件作为发布的仓库,成功之后看到所有项目文件变成了红色
在这里插入图片描述

(6)把项目ADD添加到git缓冲区
点击项目,然后右键,选择最右侧的 “add”,添加之后可以看到所有项目文件变成了绿色
在这里插入图片描述
(7)再将项目COMMIT提交到本地仓库
选择最右侧第一个 “Commit Directory…”
在这里插入图片描述
点击之后,在弹窗里填写备注信息
在这里插入图片描述
提交完成后,可以看到项目的所有文件都变成了白色

(8)把项目PUSH推送到远程仓库
先复制项目在Gitlab的git地址:http://192.168.19.8/root/hello-world.git
在这里插入图片描述

然后push项目

在这里插入图片描述

然后自定义远程地址

在这里插入图片描述

然后点击Push,连接的时候输入root和对应的密码就行了,这样就可以提交上去了
在这里插入图片描述

更新项目的话,commit的时候选择你修改的文件,push的时候,对应的url就是你要更新项目仓库的url。这样,gitlab上面仓库里面的项目就是你选择的文件进行修改了。也就是只是局部进行修改。

可以看到项目的代码都已经提交上来了
在这里插入图片描述