利用AutoDevOps快速启用极狐GitLab流水线

1.功能简介

AutoDevOps是极狐GitLab上整合了CI/CD流水线中各个阶段功能的一个工具,通过AutoDevOps功能能够快速启动一套完整的CI/CD流水线。并且能够根据代码仓库中的代码类型,自动生成对应的流水线任务。

AutoDevOps集成了以下功能:

  • 检测您的代码的语言。
  • 构建和测试您的应用程序。
  • 衡量代码质量。
  • 扫描漏洞和安全漏洞。
  • 检查许可问题。
  • 实时监控。
  • 部署您的应用程序。

具体的使用方法参考:Auto DevOps | 极狐GitLab

2.默认的AutoDevOps的任务

默认情况下我们一旦启用AutoDevOps,会直接根据代码类型生成所有的CI/CD流水线任务,如下图:

image

但是大多数情况下,我们是用不到这么多的job的!

对于新接触极狐GitLab的人员,可能看到这么多job直接就放弃了,但是实际上AutoDevOps这个功能是比较适合新手来快速开启CI/CD的流水线的。

使用AutoDevOps我们可以很快的构建出一个类似于打包发布这种简单场景的CI/CD流水线,而我们几乎不需要配置什么,这样对于新接触极狐GitLab CI/CD流水线的新手来说,就可以先不用花费大量时间去学习.gitlab-ci.yml的写法,去理解其中繁多的各种关键字的含义了。

我们可以先通过AutoDevOps将极狐GitLab CI/CD流水线先用起来,再通过学习.gitlab-ci.yml的写法等对流水线的定义方法有了一定概念之后,再逐渐去修改AutoDevOps中的流水线,实现自定义的各种功能。从而实现一个平稳的过渡!

3.自定义AutoDevOps的任务

AutoDevOps中的每个任务都有一个对应的变量,我们可以通过变量轻松控制启用哪些任务,从而来实现自定义AutoDevOps的CI/CD流水线的目的。

控制AutoDevOps的变量主要包括以下变量:

  • test: TEST_DISABLED
  • code_quality: CODE_QUALITY_DISABLED
  • license_management: LICENSE_MANAGEMENT_DISABLED
  • browser_performance: BROWSER_PERFORMANCE_DISABLED
  • load_performance: LOAD_PERFORMANCE_DISABLED
  • sast: SAST_DISABLED
  • secret_detection: SECRET_DETECTION_DISABLED
  • dependency_scanning: DEPENDENCY_SCANNING_DISABLED
  • container_scanning: CONTAINER_SCANNING_DISABLED
  • dast: DAST_DISABLED
  • review: REVIEW_DISABLED
  • stop_review: REVIEW_DISABLED
  • code_intelligence: CODE_INTELLIGENCE_DISABLED

冒号前面为任务名,冒号后面为变量名,当这些变量的值为true时,对应的任务就不会在AutoDevOps中启用了。

3.1 场景一

假设我现在是一个刚刚接触极狐GitLab CI/CD流水线的新人,我不需要太过复杂的流水线,我只想要一个:打包测试发布的流水线。

那我们可以通过在项目中增加如下环境变量来实现:

  • CODE_QUALITY_DISABLED: true
  • LICENSE_MANAGEMENT_DISABLED: true
  • BROWSER_PERFORMANCE_DISABLED: true
  • LOAD_PERFORMANCE_DISABLED: true
  • SAST_DISABLED: true
  • SECRET_DETECTION_DISABLED: true
  • DEPENDENCY_SCANNING_DISABLED: true
  • CONTAINER_SCANNING_DISABLED: true
  • DAST_DISABLED: true
  • REVIEW_DISABLED: true
  • CODE_INTELLIGENCE_DISABLED: true

最后得到的流水线如下图:

需要注意一点:这里的部署环节(production)是只能部署到使用agent集成的k8s环境中的。如果目标环境不是k8s环境,则需要在.gitlab-ci.yml中自定义部署的环节。

示例:

include:
- template: Auto-DevOps.gitlab-ci.yml
variables:
  CI_DEPLOY_FREEZE: "true"
deploy:
  stage: deploy
  script:
    - <your deploy script>

再将具体的部署脚本改成自己的即可。

3.2 场景二

只运行安全扫描相关的任务,需要在项目中加入如下变量:

  • CODE_QUALITY_DISABLED: true
  • LICENSE_MANAGEMENT_DISABLED: true
  • BROWSER_PERFORMANCE_DISABLED: true
  • LOAD_PERFORMANCE_DISABLED: true
  • DAST_DISABLED: true
  • REVIEW_DISABLED: true
  • CODE_INTELLIGENCE_DISABLED: true
  • CI_DEPLOY_FREEZE: true
  • TEST_DISABLED: true

然后就只会得到类似下图的这些任务:

除了以上列举的两种场景之外,还可以有很多种组合方式,对于想使用AutoDevOps快速启用极狐GitLab流水线的用户可以根据实际情况自定义。