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

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:
- build

variables:
  PROGRAME_DIR: "/root/cloud-demo"

build_maven:
  stage: build
  only:
  - /^dev-\d{8}$/
  tags:
  - dev
  script:
    - 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/bash
source /etc/profile
cd /root/cloud-demo
echo "Begin Execute Shell"
pid=`ps -ef | grep cloud-demo.jar | grep -v grep | awk '{print $2}'`
echo "$pid"
if [ -n "$pid" ]
then
  echo "Kill SpringBoot Application"
  kill -9 $pid
  sleep 3
fi
echo "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:
- build

variables:
  PROGRAME_DIR: "/root/cloud-demo"

build_maven:
  stage: build
  only:
  - /^dev-\d{8}$/
  tags:
  - dev
  script:
    - 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 "============部署完成============"
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值