基于gitlab+jenkins+maven的系统发布流水线(Centos7全流程)

7 篇文章 0 订阅

从零搭建基于gitlab+jenkins+maven的系统发布流水线

一、Java环境准备(jdk 1.8)

  1. 查看当前是否存在Java环境,如果存在 jdk 1.8,则进入下一个环节。
    java -version

image.png

  1. 下载 jdk 1.8
    yum -y install java-1.8.0-openjdk

  2. 配置环境变量
    vi /etc/profile

  3. 输入 i 进入编辑模式,在文件的最后加上

export JAVA_HOME=/usr/lib/jvm/java-1.8.0
export JRE_HOME=$JAVA_HOME/jre  
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib

image.png

esc退出编辑模式,输入 :wq 保存并退出

  1. 使用source /etc/profile更新配置后,再次输入 java -version查看是否安装成功,如果没成功,则仔细确认环境变量中JAVA_HOME的路径是否有误

image.png

二、Maven环境准备

  1. 下载wget工具
    yum -y install wget

  2. 远程下载Maven
    使用命令 cd /usr/local,进入到local目录

复制安装包在官网连接后,直接命令下载
image.png

wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz

  1. 解压(根据自己实际安装包名称修改)
    tar -zxvf apache-maven-3.6.3-bin.tar.gz

  2. 改名
    mv apache-maven-3.6.3 maven

  3. 配置环境变量
    vi /etc/profile

  4. 输入 i 进入编辑模式,在文件的最后加上

MAVEN_HOME=/usr/local/maven
export PATH=${MAVEN_HOME}/bin:${PATH}

image.png
esc退出编辑模式,输入 :wq 保存并退出

  1. 使用source /etc/profile更新配置后,输入 mvn -v查看是否配置成功,如果没成功,则仔细确认环境变量中MAVEN_HOME的路径是否有误

image.png

  1. 配置maven阿里云镜像
    vim /usr/local/maven/conf/settings.xml

找到<mirrors> </mirrors>标签,在改标签中添加如下代码

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

image.png

  1. 配置默认maven仓库
<localRepository>/usr/local/maven/repository</localRepository>

image.png

三、git 环境准备

  1. 安装git
    yum -y install git

  2. 使用git --version查看是否安装成功

image.png

四、docker 环境准备

  1. 卸载之前已经安装过的版本
yum remove docker \
    docker-client \
    docker-client-latest \
    docker-common \
    docker-latest \
    docker-latest-logrotate \
    docker-logrotate \
    docker-engine

在这里插入图片描述

  1. 安装需要的包
yum install -y yum-utils

在这里插入图片描述

  1. 设置阿里云镜像仓库
yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

在这里插入图片描述

  1. 安装docker引擎
# 更新软件包索引
yum makecache fast

#安装
yum install docker-ce docker-ce-cli containerd.io

在这里插入图片描述

  1. 启动docker服务
systemctl start docker
  1. 查看是否安装成功
docker version

在这里插入图片描述

至此完成Linux服务器上,docker的安装

  1. 配置阿里云镜像加速
    登录账号即可

在这里插入图片描述

在这里插入图片描述

五、Gitlab部署(docker部署)

  1. 拉取gitlab镜像
    docker pull gitlab/gitlab-ce

image.png

2.运行gitlab镜像

docker run -d -p 443:443 -p 80: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

参数说明:

# -d:后台运行
# -p:将容器内部端口向外映射(这里根据实际情况做端口映射,例子中选择了直接不改动端口)
# --name:命名容器名称
# -v:将容器内数据文件夹或者日志、配置等文件夹挂载到宿主机指定目录
  1. 修改配置
    vim /home/gitlab/config/gitlab.rb

输入i给配置文件添加如下信息:

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端口

如图所示:

image.png

输入:wq,保存并退出

  1. 重新运行容器
    docker restart gitlab

  2. 在浏览器中输入服务器的ip地址(如果刚才有配置端口号则需要加上,服务器记得需要开放端口,如果使用虚拟机,则需要关闭虚拟机的防火墙
    然后会出现一个界面,让你输入密码
    而后需要登陆

账号:root

密码:刚输入的密码

image.png

六、安装&配置Jenkins

安装

  1. 下载Jenkins库

wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo

image.png

  1. 安装key

sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key

  1. 安装Jenkins

yum install -y jenkins

image.png

  1. 启动Jenkins服务(默认使用8080端口,如果被占用了,需修改)

systemctl start jenkins

  1. 修改配置文件,以root方式启动Jenkins

vim /etc/sysconfig/jenkins
将用户修改为root

image.png

image.png

  1. 重启服务systemctl restart jenkins

  2. 浏览器输入 ip:8080 即可访问

image.png

配置

  1. 查看并配置密码

cat /var/lib/jenkins/secrets/initialAdminPassword

image.png

将该密码复制到界面上,即可启动

  1. 选择推荐的插件,需要别的插件可在后续添加

image.png

  1. 创建管理员账户

image.png

  1. 默认即可

image.png

  1. 点击开始后进入首页

image.png

  1. 配置Java、maven、git环境

image.png

  1. 首先是Java,取消这个勾

image.png

放入系统中的jdk路径,使用cat /etc/profile,查看我们之前配置好的路径即可

image.png

  1. maven

image.png

  1. git(根据你安装的实际情况,/usr/bin/git为默认路径)

image.png

完成配置后,保存即可

  1. 安装插件

image.png

直接找到以下插件进行安装,搜索下载即可(如果速度慢的话,可自行在配置中添加镜像,具体配置方式百度)

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

image.png
image.png

  1. 重启Jenkins后,重新登陆即可
    systemctl restart jenkins

七、配置Jenkins连接gitlab

  1. 登录gitlab服务器,点击设置

image.png

  1. 设置好后,点击创建token

image.png

  1. 记录好个人令牌
    image.png

  2. 进入Jenkins系统设置

image.png

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

image.png

6.选择API token设置

image.png

image.png

7.测试,显示success

image.png

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

image.png

image.png

  1. 成功后,保存退出即可

八、部署项目

  1. 在gitlab准备一个maven项目,我这里做了一个springboot的hello world项目

image.png

  1. 上传到gitlab中

image.png

  1. 在Jenkins中新建item

image.png

  1. 选择maven项目

image.png

  1. 复制gitlab中的项目地址

image.png

  1. 填入地址,然后添加账号密码验证

image.png

image.png

选择分支
image.png

7.构建触发器

image.png

点击高级选项

image.png

最后,点击保存即可.

  1. 在gitlab项目中设置webhooks

image.png

image.png

image.png

如果出现Urlis blocked: Requests to the local network are not allowed问题,参考,设置后保存即可
image.png

image.png

  1. 进行测试

image.png

image.png

可以在Jenkins中看到构建

image.png

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

九、完成自动化部署

  1. 进入maven工程中的设置

image.png

  1. 找到build

输入clean maven打包命令

image.png

  1. 找到Post Steps配置

image.png

  1. 脚本(jar包名称根据实际情况修改
pid=`ps -ef | grep demo.jar | grep -v grep | awk '{print $2}'`
echo “旧应用进程id:$pidif [ -n "$pid" ]
then
kill -9 $pid
fi
cd /home/demo
./start.sh
npid=`ps -ef | grep demo.jar | grep -v grep | awk '{print $2}'`
echo "新的进程 $npid:$?"
echo "启动成功!"

然后保存退出

5.连接运行jar包的远程主机,添加一个启动脚本start.sh

cd /home
mkdir demo
cd /home/demo
touch start.sh
chmod u+x start.sh #修改为可执行文件
vim start.sh

编辑start.sh添加以下代码(jar包名称根据实际情况修改

export oldId=$BUILD_ID
export BUILD_ID=dontKillMe
nohup java -jar demo.jar >log.txt &
export BUILD_ID=$oldId
sleep 40

保存后,完成所有操作

注意: 最好在远程主机上先使用Java -jar xxx.jar尝试运行项目的jar包,免得出现端口占用,无法运行等问题

十、测试效果

gitlab中push测试

image.png

Jenkins中等待构建

image.png

效果(我在项目中设置了运行在8081端口上):

image.png

至此完成了整个项目的从零搭建

十一、后续

服务器重启以后,发现启动了Jenkins也无法访问,原因是虚拟机的8080端口没通过防火墙(Jenkins一般会使用另外的服务器,设置了开放8080端口便可)

如果使用了虚拟机,设置一下即可

防火墙开放8080端口

firewall-cmd --permanent --zone=public --add-port=8080/tcp

重新载入设置

systemctl reload firewalld

ps :需要设置开机重启,docker,gitlab才会重新启动,建议直接将Jenkins、docker设置为开机启动.

docker设置为开机启动(gitlab使用了docker部署)

systemctl enable docker

Jenkins设置为开机启动

systemctl enable jenkins.service

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值