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

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

这种方式: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持续集成持续部署

 

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
GitLab-RunnerGitLab提供的一个开源工具,可以用于在GitLab上运行CI/CD任务。通过GitLab-Runner,可以方便地实现自动化的构建、测试、集成和部署等任务。 下面是一些使用GitLab-Runner打造锋利的CI/CD的方法: 1. GitLab-Runner安装和配置:首先需要安装GitLab-Runner,并将其配置到GitLab服务器上。可以通过Docker容器、二进制包或源码编译的方式安装GitLab-Runner,然后在GitLab服务器上注册Runner,并设置Runner的执行环境和权限等参数。 2. 编写CI/CD脚本:在GitLab上创建项目,并在项目中编写CI/CD脚本,定义任务的执行流程和步骤。可以使用GitLab提供的CI/CD工具和插件,也可以使用第三方工具和脚本库。 3. 构建、测试和集成:通过GitLab-Runner执行CI/CD任务,自动化构建、测试和集成代码,并生成测试报告和代码覆盖率报告等文档。可以使用各种编程语言和框架,如Java、Python、Ruby、Node.js等。 4. 部署和发布:通过GitLab-Runner将代码部署到目标服务器上,并执行自动化发布流程。可以使用容器化技术、配置管理工具、自动化部署工具等实现高效、可靠的部署和发布。 5. 监控和反馈:通过GitLab的监控和反馈机制,及时发现和解决CI/CD任务中的问题和错误,并持续优化任务的执行效率和稳定性。可以使用各种监控工具和日志分析工具,如Prometheus、Grafana、ELK等。 总之,使用GitLab-Runner打造锋利的CI/CD,可以提高开发和运维的效率和质量,降低项目的风险和成本,实现持续交付和快速迭代的目标。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值