gitlab ci自动化构建与部署常用配置-Java maven 项目
在使用 Gitlab CI 进行自动化构建部署的时候,需要新建一个 .gitlab-ci.yml
配置文件,里面是我们自动化构建的具体步骤的脚本:
image: maven:3-jdk-8 # 使用的 Docker 镜像 名称,非必填
stages: # 定义构建的阶段
- build # 一般这个阶段做测试代码构建
- prepare # 这个阶段作用在一个分支,用于部署测试测试环境
- prod # 这个阶段作用在另一个分支,用户发布生产环境
build: # 对应 stages 定义的阶段
stage: build
tags: # 即指定运行的runner节点,这里在gitlab管理端可以配置,并且需要给项目开启使用
- docker
variables: # 定义变量,视情况而定,可以在构建阶段使用,这里是数据库的示例
MYSQL_DATABASE: demo
MYSQL_ROOT_PASSWORD: 123456
services: # 使用的docker 服务名
- name: mysql:8.0
alias: docker-mysql # 服务别名
- name: redis:5.0.8
alias: docker-redis
script: # 执行的脚本
- pwd
- cat /etc/hosts
- mvn clean package deploy -U -Pci # maven 项目的清除、打包、推送远程 命令
# 编译后有产物,所以要指定下过期时间和路径, 以供于其他阶段使用
artifacts:
expire_in: 1 days # 保留一天
paths:
- target/*.jar # 保留的文件
allow_failure: true #允许失败
prepare:
stage: prepare
needs: # 该阶段需要的先前条件
- job: build # 需要build 阶段完成并且有产物
artifacts: true
# 只作用在master分支
only:
- master
tags:
- Grid
# 服务器上配了进程守护直接执行杀死进程的脚本
script:
- pwd
# 这里可以跟部署项目的服务器做配合,实现自动化的部署,比如服务器上配置守护进程,这里直接把项目推到服务器,然后杀死正在运行的项目
prod:
stage: prod
needs:
- job: build
artifacts: true
only:
- prod
tags:
- docker
variables:
JAR_NAME: **.jar
before_script: # 在执行脚本执行的操作,这里是避免jar冲突覆盖,定义了一个jar名
- TMP_NAME=${JAR_NAME}-`date +"%Y%m%d%H%M%S"`
- echo "临时文件名 ${TMP_NAME}"
script:
- 比如直接把项目推到服务器,然后服务器上部署了自动检测的一些程序或者脚本