定义可引用的 CI/CD 配置文件中的输入参数

极狐GitLab 是一个一体化的 DevOps 平台,内置 CI/CD 功能。在极狐GitLab 15.11 中,我们引入了一项令人兴奋的新功能,允许用户为可包含的配置文件定义输入参数。 通过在 CI 模板中使用输入参数的功能,您可以将模板中的任何关键字替换为参数,包括阶段、脚本或作业名称。 例如,您可以向所有作业添加前缀,以更好地将它们与您要包含配置的流水线隔离。

学习极狐GitLab 的相关资料:

  1. 极狐GitLab 官网
  2. 极狐GitLab 官网文档
  3. 极狐GitLab 论坛
  4. 极狐GitLab 安装配置

这些输入参数可以针对每个配置文件声明为强制参数或可选参数,从而减少对全局变量的需求,并使 CI/CD 模板更加健壮和隔离。 输入参数的范围仅限于包含的配置,这意味着它们对流水线的其余部分没有影响。 这允许您声明和强制执行约束,例如通过强制模板输入。

这一功能开发是 CI/CD 组件目录长期路线图的第一个里程碑,这是一项新功能,允许用户搜索和重用具有适合其用例的特定参数的单一用途 CI/CD 配置单元。

在这篇技术博客文章中,我们将提供有关如何使用输入参数定义 CI/CD 模板以及如何在包含模板时使用它们的分步说明。

步骤1:创建一个模版YAML文档

第一步是创建一个模板 YAML 文档,该文档描述了模板可以使用哪些输入参数。 模板的第二部分是作业的定义,其中可能包括对使用插值格式 $[[ input-name ]] 的值的引用。 您应该在两个部分之间使用三条虚线。

下面是一个部署模板.yml 的示例:

复制代码
spec:
  inputs:
    website:
    environment:
      default: test
---
deploy:
  stage: deploy
  script: echo "deploy $[[ inputs.website ]] to $[[ inputs.environment ]]"

在此模板中,我们定义了两个输入参数:网站和环境。 环境参数有默认值。 在内容部分,我们定义了一个插入输入参数的作业。

步骤 2:将模板包含在 CI 配置中

在主 CI 配置文件 .gitlab-ci.yml 中,引用模板并使用 input 关键字添加输入参数。

以下是包含带有输入参数的deploy-template.yml的示例:

复制代码
include:
  - local: deploy-template.yml
    inputs:
      website: my-website.example.com

在此示例中,我们在项目中包含了本地模板。 注意:您可以将输入与其他包含类型一起使用,例如 include:project、include:template、include:remote。

在下面的示例中,我们使用输入为作业名称添加前缀,并使阶段也变得动态。

复制代码
spec:
  inputs:
    website:
    environment:
      default: staging
    stage:
      default: test
    job_prefix:
      default: ""
---
"$[[ inputs.job_prefix ]]deploy":
  stage: $[[ inputs.stage ]]
  script: echo "deploy $[[ inputs.website ]] to $[[ inputs.environment ]]"
然后我们可以将其从 .gitlab-ci.yml 中包含到输入参数中:

include:
  - local: deploy-template.yml
    inputs:
      stage: deploy
      website: http://example.com
      environment: production
      job_prefix: "my-app-"

就是这样! 您已成功创建接受输入的 CI 模板并在流水线配置中使用它们。 通过使用带有输入的模板,您可以简化流水线配置并使模板更加模块化和可重用。

相关推荐
小飞程序员4 天前
Docker本地部署gitlab实践(windows,linux)
devops
牛奶咖啡135 天前
DevOps自动化运维实践_使用再生龙对Linux系统进行备份还原
运维·自动化·devops·linux系统的备份还原·linux系统克隆备份·再生龙
Aliex_git5 天前
Dockerfile 优化实践笔记
笔记·学习·gitlab
觅特科技-互站5 天前
告别手动微调Prompt:DevOps用陌讯Skills重构AI运维工作流
运维·prompt·线性回归·kmeans·devops
加农炮手Jinx5 天前
Flutter for OpenHarmony: Flutter 三方库 icon_font_generator 自动化将 SVG 图标集转化为字体文件(鸿蒙矢量资源全自动管理)
运维·flutter·华为·自动化·harmonyos·devops
成为你的宁宁5 天前
Jenkins 自动化部署前后端分离若依项目全攻略:涵盖环境配置、Maven/Node.js 工具安装、GitLab 项目协同,及前后端构建、服务器推送与代码更新验证全步骤
node.js·自动化·gitlab·jenkins·maven
codingWhat6 天前
手把手系列之——前端工程化
ci/cd·devops·前端工程化
sunshinebo6 天前
一次 GitLab 无法启动的排查:Docker 日志把 500G 磁盘打满
docker·eureka·gitlab
何以不说话6 天前
DevOps、Git 和 GitLab
git·gitlab·devops
RoyLin8 天前
你的 nginx 在扼杀 AI 服务——为什么需要重新设计流量层
人工智能·devops