GitLab1.4.5之GitRunner(CI/CD)

添加Git的SSH密钥到GitLab

Git本地生成ssh密钥请点击这里
在这里插入图片描述
在这里插入图片描述

GitLab创建组和用户

  • 创建组
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 创建用户
    在这里插入图片描述
    在这里插入图片描述

GitLab创建项目

  • 创建项目
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 为项目添加成员
    在这里插入图片描述
  • 合并分支相关设置
    在这里插入图片描述
  • 取消默认的Auto DevOps
    在这里插入图片描述
  • 设置master分支可以强制推送
    在这里插入图片描述

IDEA提交本地项目到GitLab已有仓库

IDEA创建Maven聚合项目请点击这里

  • 为本地项目创建Git本地仓库
    在这里插入图片描述
    在这里插入图片描述
  • 提交本地代码
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 创建dev分支并合并到master分支
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

为指定项目注册GitRunner

  • 从GitRunner获取GitLab实例地址以及其注册令牌
    在这里插入图片描述
    在这里插入图片描述
  • 发起注册
[root@192 ~]# gitlab-runner register # 执行注册指令
Runtime platform arch=amd64 os=linux pid=4044 revision=de104fcd version=14.5.1
Running in system-mode.

Enter the GitLab instance URL (for example, https://gitlab.com/): # GitLab实例地址
http://ip:port/
Enter the registration token: # 注册令牌
SidBoYb******8wrX
Enter a description for the runner: # 当前runner的描述信息
[192.168.233.135]: JavaForGitRunnerMaster
Enter tags for the runner (comma-separated): # 当前runner的标签信息,当前项目自动化部署实例的别名
JavaForGitRunnerMaster
Registering runner... succeeded  runner=SidBoYbc
Enter an executor: docker+machine, docker-ssh+machine, shell, ssh, docker-ssh, parallels, virtualbox, kubernetes, custom, docker: 
# 脚本执行方式
shell
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
  • 查看已注册的GitRunner实例
    在这里插入图片描述
    在这里插入图片描述

IDEA项目实现CI\CD

  • 创建.gitlab-ci.yml文件到项目根目录
# tags: 填写注册GitlabRunner时填写的tags(相当于当前项目的自动化部署实例的别名)
# only: master 只允许在master分支下运行
# except: dev 不能在dev分支下运行
# script: 自定义需要执行的shell脚本
# when: always 不管前面几步成功与否,永远会执行这一步;manual 前面几步成功后需要手动执行
# 对于临时不想执行的job,可以在job名称的前面加符号“.”

# 自定义全局变量(如果是敏感变量,需要在Gitlab的CI/CD下配置,直接引用即可)
variables:
  # maven镜像存储地址,需要事先创建(文件操作权限 777)
  MAVEN_BASEPATH: /usr/local/maven/repository
  # GitlabRunner构建地址,需要从构建日志中查看获取并回填(文件操作权限 777)
  BUILD_BASE_PATH: /home/gitlab-runner/builds/Gxzx4JHx/0/java/JavaForGitrunner
  # SpringBoot jar存储地址,需要事先创建(文件操作权限 777)
  SPRINGBOOT_SERVER_PATH: /home/gitlab-runner/server/JavaForGitRunner
  # SpringBoot jar备份地址,需要事先创建(文件操作权限 777)
  SPRINGBOOT_BACK_PATH: /home/gitlab-runner/server/JavaForGitRunner/back
  # 当前版本号(注意:需要修改对应服务的版本号,如果时局部升级,只需修改对应的服务即可)
  SPRINGBOOT_VERSION: 20211208
#
#
# 定义 stages(阶段),任务将按此顺序执行
stages:
  - build
  #- test
  - deploy
#
#
# TODO ####### master  构建任务
master-build-job:
  stage: build
  tags:
    - JavaForGitRunnerMaster
  only:
    - master
  script:
    - echo $JAVA_HOME
    - java -version
    - echo $MAVEN_HOME
    - mvn -v
    - pwd
    - echo "[master] 编译项目开始"
    - cd $BUILD_BASE_PATH && mvn clean package
    - echo "[master] 编译项目结束"
    - echo ""
    - echo "-------- 备份Demo1.jar --------"
    - cd $BUILD_BASE_PATH/Demo1/target && mv Demo1-$SPRINGBOOT_VERSION.jar $SPRINGBOOT_BACK_PATH
    - echo ""
    - echo "-------- 备份Demo2.jar --------"
    - cd $BUILD_BASE_PATH/Demo2/target && mv Demo2-$SPRINGBOOT_VERSION.jar $SPRINGBOOT_BACK_PATH
    - echo ""
# TODO ####### master 部署任务
master-deploy-job:
  stage: deploy
  tags:
    - JavaForGitRunnerMaster
  only:
    - master
  script:
    - echo "[master] 构建项目开始"
    - echo ""
    - echo "-------- Demo1相关 --------"
    - ps -aux | grep Demo1 | grep -v grep | awk '{print $2}' | while read pid; do kill -9 $pid; done && true=0 || false=1
    - cd $SPRINGBOOT_SERVER_PATH && rm -rf Demo1.jar
    - cd $SPRINGBOOT_BACK_PATH && cp -rf Demo1-$SPRINGBOOT_VERSION.jar $SPRINGBOOT_SERVER_PATH/Demo1.jar
    - cd $SPRINGBOOT_SERVER_PATH && sh start.sh Demo1
    - echo ""
    - echo "-------- Demo2相关 --------"
    - ps -aux | grep Demo2 | grep -v grep | awk '{print $2}' | while read pid; do kill -9 $pid; done && true=0 || false=1
    - cd $SPRINGBOOT_SERVER_PATH && rm -rf Demo2.jar
    - cd $SPRINGBOOT_BACK_PATH && cp -rf Demo2-$SPRINGBOOT_VERSION.jar $SPRINGBOOT_SERVER_PATH/Demo2.jar
    - cd $SPRINGBOOT_SERVER_PATH && sh start.sh Demo2
    - echo ""
    - echo "[master] 构建项目结束"
# 启动脚本
#!/bin/sh
case "$1" in
    Demo1)
        nohup java -jar /home/gitlab-runner/server/JavaForGitRunner/Demo1.jar >/dev/null 2>&1 &
        ;;
    Demo2)
        nohup java -jar /home/gitlab-runner/server/JavaForGitRunner/Demo2.jar >/dev/null 2>&1 &
        ;;
    *)
        echo "Please use start or stop as first argument"
        ;;
esac

  • 首次提交master分支后查看流水线(100%报错)
    在这里插入图片描述
    在这里插入图片描述
  • 重新提交master分支后查看流水线
    在这里插入图片描述
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_30818545/article/details/121736861