环境 CentOS 7 (gitlab-runner 的服务器上事先安装 maven,sshpass) gitlab-runner 官方安装文档:[链接] 官方注册文档:[链接] .gitlab-ci.yml #全局变量定义 variables: DEV_NAME: dev //开发服务器的用户名称 DEV_HOST: ..

Gitlab CICD For Springboot

环境

CentOS 7 (gitlab-runner 的服务器上事先安装 maven,sshpass)

gitlab-runner

官方安装文档:https://docs.gitlab.com/runner/install/linux-manually.html
官方注册文档:https://docs.gitlab.com/runner/register/index.html

.gitlab-ci.yml

#全局变量定义
variables:
  DEV_NAME: dev  		//开发服务器的用户名称
  DEV_HOST:  0.0.0.0  	//开发服务器地址
  CODE_PATH: ./Develop/SourceCode/Code/	代码路径
  MAVEN_CLI_OPTS_develop: "/mvn_config/mvn-settings.xml --batch-mode"  //编译时选择的maven路径

#阶段顺序
stages:
- before_all
- build
- deploy
- clean

#每一个阶段前面
before_script:
- ':'

#所有步骤之前
before_all:
  stage: before_all
  script:
  - ': "================      编译环境检测      ================="'
  dependencies: []
  only:
    refs:
    - develop
    - master
    - test

#发布、编译
mvn package:
  stage: build
  variables:
    MAVEN_CLI_OPTS: $MAVEN_CLI_OPTS_develop
  script:
  - cd ${CODE_PATH}
  - TEMP_PATH=`pwd`
  - mkdir -p final_target
  - rm -f ./final_target/*.zip
  - mvn -s ${TEMP_PATH}${MAVEN_CLI_OPTS} package deploy -B -e -U -T 1C -Dmaven.test.skip=true -Dmaven.compile.fork=true
  - find ./ -name *.zip | grep -v final_target | xargs -i mv {} ./final_target/
  - find ./ -name *.zip
  artifacts:
    name: "$CI_COMMIT_REF_NAME"
    paths:
    - ${CODE_PATH}final_target
  only:
    refs:
    - develop
    changes:
    - Develop/SourceCode/Code/**/*.{java,xml,properties,sh}

#部署,运行(开发)
deploy-agri:
  stage: deploy
  variables:
    PASSWD: $DEV_PASSWD		//开发环境密码设置在runner变量下
    NAME: $DEV_NAME
    HOST: $DEV_HOST
  dependencies:
  - mvn package
  script:
  - ': "==============        开发环境检测       ================="'
  - find ${CODE_PATH} -name *.zip

  - ': "================          备份          ================="'
  - ': "================    停止应用,删除旧包     ================="'
  - ': "================        开始执行         ================="'
  - sshpass -p ${PASSWD} ssh -o StrictHostKeychecking=no ${NAME}@${HOST} "mkdir -p ./Releases/"
  - sshpass -p ${PASSWD} ssh -o StrictHostKeychecking=no ${NAME}@${HOST} "rm -f  ./Releases/*.zip"
  - sshpass -p ${PASSWD} scp -o StrictHostKeychecking=no ${CODE_PATH}final_target/springboot.zip ${NAME}@${HOST}:./Releases/
  - sshpass -p ${PASSWD} ssh -o StrictHostKeychecking=no ${NAME}@${HOST} "python3 ./Releases/deploy.py"		//备份,停止,增量,启动脚本写在deploy.py中
  - ': "=============         检测是否成功启动        =============="'
  - sleep 30
  - sshpass -p ${PASSWD} ssh -o StrictHostKeychecking=no ${NAME}@${HOST} "jps | grep -v Jps "
  only:
    refs:
    - develop
    changes:
    - Develop/SourceCode/Code/**/*.{java,xml,properties,sh}

after all:
  stage: clean
  script:
  - ': "======================    END    ====================="'
  - ': "===================     结果反馈?     =================="'
  dependencies: []
  only:
    refs:
    - develop
    - master
    - test

  • GitLab

    GitLab 是利用 Ruby 一个开源的版本管理系统,实现一个自托管的 Git 项目仓库,可通过 Web 界面操作公开或私有项目。

    19 引用 • 22 回帖
回帖   
请输入回帖内容...