开发人员在特性分支提交代码,触发提交流水线进行代码验证并发布到特性环境验证(可手动控制发布)。
阶段:编译,测试,扫描,构建镜像,上传镜像,发布特性环境
特性环境:命名规范为项目名称-ID-分支名称,每个特性分支发布到对应的特性环境。
镜像名称:
- registry.cn-beijing.aliyuncs.com/cidevops/cidevops-java-service:3-input-error-a486c590-834
ingress域名:
- "http://${CI_COMMIT_REF_NAME}.${CI_PROJECT_NAMESPACE}.${CI_PROJECT_NAME}.devops.com"
Build阶段
定义build作业模板,参数化构建命令。
- ## build相关作业
- ##
- .build:
- stage: build
- script:
- – ${BUILD_SHELL}
在template中引入build作业模板,由于使用容器构建所以声明MAVEN_IMAGE变量定义镜像名称。由于之前对构建环境构建目录持久化,所以定义GIT_CLONE_PATH参数进入指定的构建目录操作。GIT_CHECKOUT设置全局每个作业无需重复下载代码。BUILD_SHELL定义构建所需要的命令。定义变量能够足够灵活,适合不同项目不同打包命令的场景下。
- include:
- – project: 'cidevops/cidevops-newci-service'
- ref: master
- file: 'jobs/build.yml'
- variables:
- ## 全局配置
- GIT_CLONE_PATH: $CI_BUILDS_DIR/builds/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME/$CI_PIPELINE_ID
- GIT_CHECKOUT: "false"
- ## 依赖容器镜像
- BUILD_IMAGE: "maven:3.6.3-jdk-8"
- ## 构建测试参数
- MAVEN_OPTS: "-Dmaven.repo.local=/home/gitlab-runner/ci-build-cache/maven "
- BUILD_SHELL: 'mvn clean package -DskipTests –settings=./settings.xml ' ##构建命令
- ## 运行阶段
- stages:
- – build
- cache:
- paths:
- – target/
- ################# Jobs Configure #####################
- ## 构建作业
- build:
- variables:
- GIT_CHECKOUT: "true"
- image: ${BUILD_IMAGE}
- extends: .build
定义build作业,设置作业变量GIT_CHECKOUT: "true"表示需要下载代码,默认build是我们流水线中的第一个作业所以必须设置为下载代码,否则构建失败。作业中的变量优先级高于全局。image定义我们要使用的镜像,如果采用非容器模式运行可以删除image标签。剩下的配置全部集成模板作业.build。