CICD实战——使用Jenkins实现自动化部署和环境隔离

CICD实战——使用Jenkins实现自动化部署和环境隔离

安装

jdk

1.查看是否安装了jdk

[root@10-0-59-231 data]# java -version # 查看是否安装jdk,没有则要安装
-bash: java: 未找到命令

2.搜索可用包

yum search java |grep -i --color JDK

3.安装jdk

yum install java-1.8.0-openjdk* # 安装1.8 openjdk

4.查看

java -version

#输出
openjdk version "1.8.0_252"
OpenJDK Runtime Environment (build 1.8.0_252-b09)
OpenJDK 64-Bit Server VM (build 25.252-b09, mixed mode)

PS:yum自动配置了环境变量,可以通过 vim /etc/profile 查看

jenkins

1.centos 7 下安装

yum install jenkins

2.更改默认端口号和git clone代码存放目录

vim /etc/sysconfig/jenkins
JENKINS_PORT="8088"             # 默认8080
JENKINS_HOME="/data/jenkins"    # 默认 /var/lib/jenkins
systemctl daemon-reload # 使得配置生效

3.启动

systemctl restart jenkins # 重启
chkconfig jenkins on      # 开机启动

配置

1.新建任务
2.输入名字,选择自由风格软件。
在这里插入图片描述
3.General,勾选丢弃旧的构建
在这里插入图片描述

4.设置代码仓库。我们使用的gitlab,所以勾选Git,然后贴入代码仓库地址,Credentials添加一个有权限的用户。
Branch Specifier:默认是从Master拉代码编译,我们一般发布是release,所以这里使用 release 分支。
在这里插入图片描述

5.构建触发器。这个不用设置,用不到。
6.构建环境。暂时用不到,跳过。
7.构建。点击“执行shell“,调用build.sh脚本完成源代码的编译工作,具体见下一节。
在这里插入图片描述

8.构建后。点击“Send build artifacts over SSH”,通过ssh把编译的包发布到远程机器上,具体见后面。
在这里插入图片描述

构建

1.构建脚本。

cd ${WORKSPACE} && cd server/paas_build
chmod 777 build_db_proxy_server.sh
./build_db_proxy_server.sh
cd ../
echo 'tar ${pwd}/online.base.im/'
tar -czvf online.base.im.tar.gz online.base.im/

在这里插入图片描述

这里打包压缩一下,便于后续的拷贝分发。

2.测试构建。
在这里插入图片描述
在这里插入图片描述

点击立即构建,然后在下面可以看到构建进度,再点击,查看具体构建结果。
在这里插入图片描述

分发

新增SSH Servers

PS:本地编译好程序后,还需要拷贝到的目标机器上运行,才完成整套流程。
点击系统管理->系统设置,拉到最下面。找到SSH Servers,点击后面的新增。
在这里插入图片描述
输入相关信息,其中Remote Directory,需要预先创建。推荐在/data/apps等目录。该目录代表了,后续把文件拷贝到机器上的根目录。然后点击高级设置密码后,点击“Test Connfiguration”,确保配置没问题。
在这里插入图片描述
如果有多台机器,多次add即可。

发布脚本

1.构建完成后,需要通过脚本执行一些安装动作,点击“Send build artifacts over SSH”。
2.选择一个服务器。相对于WorkSpace,我的包在server/online.base.im.tar.gz位置。
在这里插入图片描述
Remove prefix:需要移除的前缀,如果不设置。假设SSH Servers设置的Remote Directory为/data/webapps,则该压缩包拷贝后的路径为:/data/webapps/server/online.base.im.tar.gz。
Exec command:需要执行的命令。执行前请设置一下当前工作目录,比如cd /data/webapps。

附脚本:

kill -9 $(pidof db_proxy_server) # 停止进程
sleep 5    # 等一会
cd /data/webapps/ 
# 备份原程序
mv online.base.imdbproxyserver.service online.base.imdbproxyserver.service.$(date "+%Y%m%d")${BUILD_NUMBER}
tar -zxvf online.base.im.tar.gz
rm -rf online.base.im.tar.gz
mv online.base.im online.base.imdbproxyserver.service
cd online.base.imdbproxyserver.service
cd db_proxy_server
mv libhiredis.so.0.13 libhiredis.so.0.12
ln -s /data/webconf/dbproxyserver.xml dbproxyserver.xml
cd ../
chmod 777 *.sh
./restart.sh db_proxy_server

重新构建

在这里插入图片描述

此时要不停的调整脚本,直到显示成蓝色的球为止,代表中间过程一切顺利,没有错误。然后就实现了:

  1. 从gitlab自动拉取最新代码
  2. 编译
  3. 自动部署集群

看一下效果:
在这里插入图片描述
在这里插入图片描述
PS:如果需要发布到多个机器,在“构建后”里面在添加一个SSH Server即可。

关于

CSDN关于作者
推荐下自己的开源IM,纯Golang编写:

CoffeeChat:
https://github.com/xmcy0011/CoffeeChat
opensource im with server(go) and client(flutter+swift)

参考了TeamTalk、瓜子IM等知名项目,包含服务端(go)和客户端(flutter+swift),单聊和机器人(小微、图灵、思知)聊天功能已完成,目前正在研发群聊功能,欢迎对golang和跨平台开发flutter技术感兴趣的小伙伴Star加关注。

————————————————
版权声明:本文为CSDN博主「许非」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/xmcy001122/article/details/105665732

参考:https://www.jianshu.com/p/5f671aca2b5a
参考:http://www.linuxboy.net/linuxjc/144365.html

猜你喜欢

转载自blog.csdn.net/xmcy001122/article/details/106202085
今日推荐