我有一个GitLab CI作业下载和构建一些文件,然后发布到另一个服务器。我已经做了POC,并成功。问题是,我想自定义作业时,手动触发或通过API。我如何传递动态值(用户给定),以反映在CI作业(如文件名,格式等)?
我正在使用Windows runner。
我看到触发器变量和环境变量,但可以检索,而一旦执行的值设置在用户界面。我想有点不同,我将从用户那里得到的值。
这在GitLab中是不可能的吗?
编辑:
关于如何使用管道的更多信息。我的管道有两个阶段-构建和部署。我希望构建运行一次,但是我希望能够调用deploy multiple来部署到不同的服务器。我可以使用变量来确定我想部署到哪个服务器。通过GitLab UI这是可能的-我可以为pipeline设置变量,也可以为覆盖pipeline变量的job设置变量。我只是想通过API做同样的事情。
3条答案
按热度按时间5rgfhyps1#
启动管道时可以传递变量:https://docs.gitlab.com/ee/ci/pipelines/#run-a-pipeline-manually
可以使用预定义的或手动指定的变量手动执行管线。
这些变量也可以在API调用中指定:https://docs.gitlab.com/ee/api/pipelines.html#create-a-new-pipeline
包含管道中可用变量的数组,与结构[{ 'key' =〉'UPLOAD_TO_S3','value' =〉'true' }]匹配
bxgwgixi2#
问题是,我希望在手动或通过API触发时自定义作业
GitLab 14.9应该可以实现(2022年3月)
通过API运行手动作业时指定变量
运行手动作业时,输入CI/CD变量以覆盖现有变量或添加新变量可能很有用。
以前,唯一的方法是通过UI来完成。
在此版本中,我们添加了在使用REST API运行作业时指定变量的功能,这将为您提供更多选项来自动化CI/CD管道。
参见文档和Issue。
示例:
@variables.json
的结构如下:rryofs0p3#
通过GitLab API向作业传递变量的JavaScript示例
如果你 * 没有使用curl*,但想通过API以编程方式从你选择的语言触发一个带有变量的GitLab作业,那么让
job_variables_attributes
工作的重要部分就是设置正确的Content-Type
:JavaScript / nodejs中的示例:
那么在作业中应该有
$CUSTOM_VAR1
和$CUSTOM_VAR2
。