Docker+GitLab+Jenkins自动化部署

安装docker

查看内核版本,要求高于3.10

bash 复制代码
uname -r

更新yum

sql 复制代码
yum update

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

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

设置源

yum-config-manager --add-repo mirrors.aliyun.com/docker-ce/l...

安装docker

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

启动并加入开机启动

bash 复制代码
systemctl start docker
systemctl enable docker

校验安装

docker version

安装Maven JDK

去官网下载安装包 tar.gz

maven官网:maven.apache.org/download.cg...

jdk下载官网:www.oracle.com/java/techno...

cd /var/local

本机安装包 直接上传便可

上传到服务器

解压

python 复制代码
tar -zxvf apache-maven-3.8.8-bin.tar.gz
tar -zxvf jdk-8u381-linux-x64.tar.gz

改名

bash 复制代码
mv apache-maven-3.8.8 maven3
mv jdk-8u381-linux-x64 jdk8

编辑环境变量

vim /etc/profile

添加maven,jdk地址

bash 复制代码
export JAVA_HOME=/var/local/jdk1.8
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
export M2_HOME=/var/local/maven3
export PATH=$PATH:$JAVA_HOME/bin:$M2_HOME/bin

更新环境变量

source /etc/profile

配置阿里镜像

vim /var/local/maven3/conf/settings.xml

找到 标签,在改标签中添加如下代码

放到标签 中

xml 复制代码
<mirror>
     <id>alimaven</id>
     <name>aliyun maven</name>
     <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
     <mirrorOf>central</mirrorOf>
</mirror>

查看是否按照成功

jdk

maven

docker安装Jenkins

安装Jenkins 机器上必须要有jdk

如果没有执行以下命令

yum install -y java-1.8.0-openjdk.x86_64

搜索镜像

docker search jenkins

拉取镜像

docker pull jenkins/jenkins:2.414.2

创建容器 开放8080端口和50000端口 挂载目录 创建容器名称

jdk 和maven地址记住也要挂载到容器中,不然容易找不到路径

docker run -d -u root -p 8080:8080 -p 50000:50000 -v /var/jenkins_home:/var/jenkins_home -v /etc/localtime:/etc/localtime -v /var/local/jdk1.8:/var/local/jdk1.8 -v /var/local/maven3:/var/local/maven3 --name jenkins jenkins/jenkins:2.414.2

option 作用
-i 以交互模式运行容器,通常与 -t 同时使用
-t 启动容器后,为容器分配一个命令行,通常与 -i 同时使用
-v 目录映射,容器目录挂载到宿主机目录,格式: <host目录>:<容器目录>
-d 守护进程,后台运行该容器
-p 指定端口映射,格式:主机(宿主)端口:容器端口
-P 随机端口映射,容器内部端口随机映射到主机的端口(49153起始 49153到65535)
-u 以什么用户身份创建容器
--name "jenkins" 容器名字
-m, --memory bytes 设置容器使用内存最大值
-h, --hostname string 指定容器的 host name
--dns 8.8.8.8 指定容器 dns 服务器
-e username="ritchie" 设置环境变量
--restart Docker 重启后,容器是否自动重启
--privileged 容器内是否使用真正的 root 权限

启动容器

docker start jenkins

启动成功后通过ip地址+8080访问

通过log查看密码 docker ps 查找容器id

docker logs ddf61266cf14

输入密码

点击继续后,选择 按照推荐安装插件。然后继续等待。

安装好后则可创建用户密码

成功安装Jenkins。

下载安装插件

sql 复制代码
需要安装的插件有:
Publish Over SSH
Maven Integration
GitLab
GitLab Hook
GitLab Authentication
GitLab API
Git
Git client Plugin
Git Parameter

安装完毕重启Jenkins

安装git

安装

yum -y install git

查看是否安装

git service

docker安装GitLab

拉取镜像

docker pull gitlab/gitlab-ce

运行镜像 默认端口是80 但是我这里80端口被占用了 所以改成880了

docker run -d -p 443:443 -p 880:80 -p 222:22 --name gitlab --restart always -v /home/gitlab/config:/etc/gitlab -v /home/gitlab/logs:/var/log/gitlab -v /home/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce

修改配置文件

vim /home/gitlab/config/gitlab.rb

修改的内容

arduino 复制代码
external_url 'http://IP' 配置http协议所使用的访问地址,不加端口号默认为80,如果上面修改了端口号,格式为 http://(IP):(端口)
gitlab_rails['gitlab_ssh_host'] = 'IP' 配置ssh协议所使用的访问地址和端口
gitlab_rails['gitlab_shell_ssh_port'] = 222 此端口是run时22端口映射的222端口

重新运行容器

docker restart gitlab

记得要开放端口 我这里配置的端口是880

http:ip:端口号 能看见这页面说明安装成功

查看root密码

进入容器

docker exec -it 容器id /bin/bash

查看密码

cat /etc/gitlab/initial_root_password

D7xHWrkISUSYvyBkFiYH6FWXSdCfsRBqfq1JnBBDefI=

创建仓库将代码上传到gitLab中

配置ssh

在本地打开git bash 生成ssh公钥和私钥

scss 复制代码
ssh-keygen -t rsa -C '[email protected]' 
ssh-keygen -t rsa -C '[email protected]'

-C 参数是你的邮箱地址

查看公钥

shell 复制代码
# ~表示用户目录,比如我的windows就是C:\Users\Administrator,并复制其中的内容

$ cat ~/.ssh/id_rsa.pub

打开gitLab

添加公钥到这里 添加添加 这样本地就能上传代码到服务器了,先将要部署的代码上传到服务器。

使用Jenkins流水线部署项目

配置Jenkins

配置maven

配置jdk

配置git

如果直接使用yum安装的默认地址就是这个

配置Jenkins连接gitlab

1.登录gitLab获取密钥

2.复制令牌

3.进入Jenkins系统设置

4.找到gitlab设置,注意url需要 http:// 开头

5.测试连接

这样子就是连接成功了

6.进行ssh连接配置(项目部署在远程主机需要)

7.新建一个任务

8.复制GitLab中要部署的项目地址

9.配置

默认就不用加端口号的 仓库地址

选择分支

10.构建触发器

点击高级

记录token b037f6df6806aea27d592d3d3e65b78d

最后点击保存。

11.在gitlab项目中设置webhooks

将上面要求记录的值 都放到这里

如果出现

设置这个再试一次

点击测试

显示200

至此,完成了gitlab与Jenkins的互通

设置ssh脚本

点击刚才构建的maven项目

设置maven命令 先清除后打包

找到这个

往下拉找到 Add post-buld step 然后选择seed files or executecommands over SSH

命令的大概意思就是

复制jar包到/var/jenkins_home/jar 这个目录。如果没有可提前创建

jar的位置一般在挂载的jenkins_home目录下面的workspace目录下面的构建的项目名称下面。找到自己对应的jar位置。然后修改

后面的命令大概就是查询是否有这个进程 没有就启动jar包

bash 复制代码
cp /var/jenkins_home/workspace/dz-community/subject/subject-starter/target/subject-starter.jar /var/jenkins_home/jar
#!/bin/bash
APP_NAME=subject-starter.jar
LOG_NAME=subject-starter.log

pid=`ps -ef | grep $APP_NAME | grep -v grep|awk '{print $2}'`

function is_exist(){
pid=`ps -ef | grep $APP_NAME | grep -v grep|awk '{print $2}'`
if [ -z ${pid} ]; then
String="notExist"
echo $String
else
String="exist"
echo $String
fi
}

str=$(is_exist)
if [ ${str} = "exist" ]; then
echo " 检测到已经启动的程序,pid 是 ${pid} "
kill -9 $pid
else
echo " 程序没有启动了 "
echo "${APP_NAME} is not running"
fi

str=$(is_exist)
if [ ${str} = "exist" ]; then
echo "${APP_NAME} 已经启动了. pid=${pid} ."
else
source /etc/profile
BUILD_ID=dontKillMe
nohup java -Xms300m -Xmx300m -jar /var/jenkins_home/jar/$APP_NAME   >$LOG_NAME 2>&1 &
echo "程序已重新启动..."
fi

在项目上点击构建后,在控制输出这样就表示成功了。打开apifox 调用后端就能查看项目是否启动成功

也可以查看端口是否启动 netstat -ntlp

相关推荐
Hum8le2 小时前
小科普《DNS服务器》
运维·服务器
yunqi12154 小时前
【负载均衡系列】nginx负载高怎么排查
运维·nginx·负载均衡
BigBookX5 小时前
在 Ubuntu 中配置开机自启动脚本并激活 Anaconda 环境
linux·运维·ubuntu
yi个名字6 小时前
Linux中的yum和vim工具使用总结
linux·运维·vim
云观秋毫6 小时前
试试智能体工作流,自动化搞定运维故障排查
运维·数据库·自动化
不是编程家7 小时前
Linux第九讲:动静态库
linux·运维·服务器
藏在歌词里7 小时前
ruoyi-vue部署4
linux·运维·服务器·vue.js·windows
wanhengidc8 小时前
搭建小程序该如何选择服务器?
运维·服务器·小程序
Stark-C8 小时前
“我是GM”之NAS搭建Luanti游戏服务器,开启沙盒游戏新体验
运维·服务器·游戏