gitlab ip变更runner拉取代码失败、shell启动springboot项目启动起来。

2022-06-13 12:59:16

gitlab ci/cd拉取代码失败

使用gitlab cicd 构建自动化部署时,runner拉取代码失败了,突然想到是ip变更了(用的虚拟机,nat模式改成了桥接模式,然后导致ip变更了),拉取代码的时候去找了上一次ip地址,所以拉取代码超时失败了。

报了一个错误:

unable to access 'http://gitlab-ci-token:[MASKED]@192.168.23.131/dev/.....

192.168.23.131是上一个gitlab的ip,这次变了,但是还是去23.131去拉代码了!

解决方案

第一步,修改gitlab.yml文件

在/opt/gitlab/embedded/service/gitlab-rails/config目录下有一个gitlab.yml文件

cd /opt/gitlab/embedded/service/gitlab-rails/config

在这里插入图片描述

vim gitlab.yml

在这里插入图片描述

第二步 修改gitlab.rb文件

vim /etc/gitlab/gitlab.rb

在这里插入图片描述

重新配置gitlab,并且重新启动gitlab

gitlab-ctl reconfigure
gitlab-ctl restart

顺利拉取代码

在这里插入图片描述

gitlab runner执行shell脚本失败

记录一次runner执行shell脚本时,程序起不来的问题。。

有一springboot项目,自动化部署的时候执行完了,shell脚本也执行了,但是springboot项目没有启动起来。。

.gitlab-ci.yml文件

最后是执行的restart.sh一个脚本文件

stages:- buildvariables:PROGRAME_DIR:"/root/cloud-demo"build_maven:stage: buildonly:- /^dev-\d{8}$/tags:- devscript:- echo "============$PWD============"- echo "============开始打包构建============"- mvn clean- mvn package- echo "============打包构建完成============"- echo "============开始拷贝文件============"- rm-rf ${PROGRAME_DIR}/cloud-demo.jar- cp demo/target/demo-1.0-SNAPSHOT.jar ${PROGRAME_DIR}/cloud-demo.jar- echo "============拷贝文件完成============"- echo "============$PWD============"- echo "============开始部署============"- chmod a+x ${PROGRAME_DIR}/restart.sh- ${PROGRAME_DIR}/restart.sh- echo "============部署完成============"

restart.sh脚本如下

#!/bin/bashsource /etc/profilecd /root/cloud-demoecho"Begin Execute Shell"
pid=`ps -ef|grep cloud-demo.jar|grep -vgrep|awk'{print$2}'`echo"$pid"if[ -n"$pid"]thenecho"Kill SpringBoot Application"kill -9$pidsleep 3fiecho"Start SpringBoot Application"nohup java -jar cloud-demo.jar>/dev/null 2>&1&

在这里插入图片描述

看runner执行的日志也没发现问题,一路正常执行,shell文件也执行了,打印的信息也都打印了,进程也毫无疑问正常杀掉了,但是最后一步nohup死活不成功。。

反复调试,后来发现nohupjava命令也没问题,毕竟source /etc/profile了,环境啥的都加载进来了

问题原因及解决

最后发现是>/dev/null 2>&1 &的问题,在服务器上启动restart.sh脚本文件一点问题都没有,一切正常,但是使用 runner执行的时候死活不成功,程序起不来。

后改成nohup java -jar cloud-demo.jar > /root/cloud-demo/error.log &,把日志打印到 error.log文件里。 runner终于正常执行了。。程序也启动了。。

这样仍然存在问题

我用nohup java -jar cloud-demo.jar > /root/cloud-demo/error.log &启动,这种在runner里执行后程序不会以守护进程来执行,也就是。。runner的执行状态一直在running中,无法变成success…

解决方案

后来,专门去学了下supervisor进程管理工具,安装在了服务器上,配合gitlab runner使用,问题解决
supervisor进程管理工具使用起来很方便,建议学一下,上手也比较容易的,可以去supervisor进程管理工具学习一下

.gitlab-ci.yml文件

stages:- buildvariables:PROGRAME_DIR:"/root/cloud-demo"build_maven:stage: buildonly:- /^dev-\d{8}$/tags:- devscript:- echo "============$PWD============"- echo "============开始打包构建============"- mvn clean- mvn package- echo "============打包构建完成============"- echo "============开始拷贝文件============"- rm-rf ${PROGRAME_DIR}/cloud-demo.jar- cp demo/target/demo-1.0-SNAPSHOT.jar ${PROGRAME_DIR}/cloud-demo.jar- echo "============拷贝文件完成============"- echo "============$PWD============"- echo "============开始部署============"- supervisorctl restart cloud-demo- echo "============部署完成============"
  • 作者:鸢尾の
  • 原文链接:https://blog.csdn.net/weixin_45248492/article/details/123129917
    更新时间:2022-06-13 12:59:16