gitlab-runner shell实现Spring Boot Java Web CI/CD持续集成持续部署

2022-06-13 08:37:54

过去我们团队的开发模式是,开发人员提交代码后,测试人员去拉取代码,然后编译启动,并开始测试。

这种方式:1  增加了测试人员的工作量 2 测试人员手动更新代码,编译启动,遇到问题不能自己解决,需要开发人员协助。很浪费时间。

gitlab的CI/CD功能可以实现项目的自动部署,开发人员提交代码后自动编译部署,无需人工干预。使开发和测试衔接的更紧密。

下面说说我们团队使用CI/CD的思路 1 提交代码后自动编译生成.jar 文件。 2 将 .jar 文件拷贝到指定目录。 3 运行 .jar

前期准备工作

  1. 需要 安装gitlab-runner
  2. 注册runner
  3. 编写.gitlab-ci.yml
  4. 编写 自动部署的shell 脚本

安装gitlab-runner ,注册runner  网上资料较多可自行百度

编写 .gitlab-ci.yml  脚本需要需要根据部署思路

variables:
  VAR_PATH: "/home/gitlab-runner/aaa/bbb"
  MAVEN_CLI_OPTS: "-s .m2/settings.xml --batch-mode"
  MAVEN_OPTS: "-Daven.repo.local=.m2/repository"
  PID: 0
stages:
   - build
   - deploy
job1:
  stage: build
  only:
    - master
  script:
    - ls -la ~/.ssh/
    - cat ~/.ssh/known_hosts
    - echo $CI_PROJECT_DIR
    - cd $CI_PROJECT_DIR
    - ls
    - pwd
    - mvn $MAVEN_CLI_OPTS clean package
  artifacts: 
    paths:
      - target/*.jar
job2: 
  stage: deploy
  script:
  - ls
  - cp -rf target/*.jar $VAR_PATH
  - bash deploy.sh helloword
  # - cd $VAR_PATH
  dependencies: 
    - job1

自动部署的shell 脚本

#!/bin/bash
if [ $# -ne 1 ]
then
        echo "arguments error!"
        exit 1
else
        jarname=$1
        echo $jarname
        pid=`ps -ef | grep "$jarname-0.0.1-SNAPSHOT.jar"|grep -v grep|awk '{print $2}'`
        for id in $pid
        do
                echo $id
                kill -9 $id
                echo "killed $id"
        done
        nohup java -jar /home/gitlab-runner/aaa/bbb/$jarname-0.0.1-SNAPSHOT.jar > /home/gitlab-runner/aaa/bbb/$jarname-log.log 2>&1 &
fi

过程中遇到的问题

最开始的时候不想 写deploy.sh脚本,因为在.gitlab-ci.yml 可以写 shell 脚本,但是在判断进程中是否已经运行,如果运行就需要先杀死进程再启动 .jar 程序。但是 .gitlab-ci.yml 中编写的linux shell 指令 无内容返回时 就会报错

$ ps -ef|grep helloword-0.0.1-SNAPSHOT.jar
gitlab-+ 10925 10923  0 11:34 ?        00:00:00 grep helloword-0.0.1-SNAPSHOT.jar
$ ps -ef|grep helloword-0.0.1-SNAPSHOT.jar|grep -v grep
ERROR: Job failed: exit status 1

在网上这篇文章的启发 编写了 shell脚本 部署成功

centos7下使用gitlab+shell实现CI/CD持续集成持续部署

  • 作者:wbf810207
  • 原文链接:https://blog.csdn.net/wbf810207/article/details/90412358
    更新时间:2022-06-13 08:37:54