1.功能简介
AutoDevOps是极狐GitLab上整合了CI/CD流水线中各个阶段功能的一个工具,通过AutoDevOps功能能够快速启动一套完整的CI/CD流水线。并且能够根据代码仓库中的代码类型,自动生成对应的流水线任务。
AutoDevOps集成了以下功能:
- 检测您的代码的语言。
- 构建和测试您的应用程序。
- 衡量代码质量。
- 扫描漏洞和安全漏洞。
- 检查许可问题。
- 实时监控。
- 部署您的应用程序。
具体的使用方法参考:Auto DevOps | 极狐GitLab
2.默认的AutoDevOps的任务
默认情况下我们一旦启用AutoDevOps,会直接根据代码类型生成所有的CI/CD流水线任务,如下图:
但是大多数情况下,我们是用不到这么多的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流水线的用户可以根据实际情况自定义。