针对GitLab实现端到端DevOps流水线验证

开发人员在特性分支提交代码,触发提交流水线进行代码验证并发布到特性环境验证(可手动控制发布)。

阶段:编译,测试,扫描,构建镜像,上传镜像,发布特性环境

特性环境:命名规范为项目名称-ID-分支名称,每个特性分支发布到对应的特性环境。

镜像名称:


  1. registry.cn-beijing.aliyuncs.com/cidevops/cidevops-java-service:3-input-error-a486c590-834 

ingress域名:


  1. "http://${CI_COMMIT_REF_NAME}.${CI_PROJECT_NAMESPACE}.${CI_PROJECT_NAME}.devops.com" 

Build阶段

定义build作业模板,参数化构建命令。


  1. ## build相关作业 
  2. ## 
  3.  
  4. .build: 
  5.   stage: build 
  6.   script:  
  7.     – ${BUILD_SHELL} 

在template中引入build作业模板,由于使用容器构建所以声明MAVEN_IMAGE变量定义镜像名称。由于之前对构建环境构建目录持久化,所以定义GIT_CLONE_PATH参数进入指定的构建目录操作。GIT_CHECKOUT设置全局每个作业无需重复下载代码。BUILD_SHELL定义构建所需要的命令。定义变量能够足够灵活,适合不同项目不同打包命令的场景下。


  1. include: 
  2.   – project: 'cidevops/cidevops-newci-service' 
  3.     ref: master 
  4.     file: 'jobs/build.yml' 
  5.  
  6.  
  7. variables: 
  8.   ## 全局配置 
  9.   GIT_CLONE_PATH: $CI_BUILDS_DIR/builds/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME/$CI_PIPELINE_ID     
  10.   GIT_CHECKOUT: "false" 
  11.  
  12.   ## 依赖容器镜像 
  13.   BUILD_IMAGE: "maven:3.6.3-jdk-8" 
  14.    
  15.   ## 构建测试参数 
  16.   MAVEN_OPTS: "-Dmaven.repo.local=/home/gitlab-runner/ci-build-cache/maven " 
  17.   BUILD_SHELL: 'mvn clean package  -DskipTests  –settings=./settings.xml '  ##构建命令 
  18.  
  19.  
  20.  
  21. ## 运行阶段   
  22. stages: 
  23.   – build 
  24.  
  25. cache: 
  26.   paths: 
  27.     – target/ 
  28.      
  29. ################# Jobs Configure ##################### 
  30. ## 构建作业 
  31. build: 
  32.   variables: 
  33.     GIT_CHECKOUT: "true" 
  34.   image: ${BUILD_IMAGE} 
  35.   extends: .build 

定义build作业,设置作业变量GIT_CHECKOUT: "true"表示需要下载代码,默认build是我们流水线中的第一个作业所以必须设置为下载代码,否则构建失败。作业中的变量优先级高于全局。image定义我们要使用的镜像,如果采用非容器模式运行可以删除image标签。剩下的配置全部集成模板作业.build。

【声明】:芜湖站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

相关文章