如何将值传递给Gitlab配置项作业

rdlzhqv9  于 2023-01-28  发布在  Git
关注(0)|答案(3)|浏览(131)

我有一个GitLab CI作业下载和构建一些文件,然后发布到另一个服务器。我已经做了POC,并成功。问题是,我想自定义作业时,手动触发或通过API。我如何传递动态值(用户给定),以反映在CI作业(如文件名,格式等)?
我正在使用Windows runner。
我看到触发器变量和环境变量,但可以检索,而一旦执行的值设置在用户界面。我想有点不同,我将从用户那里得到的值。
这在GitLab中是不可能的吗?
编辑:
关于如何使用管道的更多信息。我的管道有两个阶段-构建和部署。我希望构建运行一次,但是我希望能够调用deploy multiple来部署到不同的服务器。我可以使用变量来确定我想部署到哪个服务器。通过GitLab UI这是可能的-我可以为pipeline设置变量,也可以为覆盖pipeline变量的job设置变量。我只是想通过API做同样的事情。

5rgfhyps

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' }]匹配

bxgwgixi

bxgwgixi2#

问题是,我希望在手动或通过API触发时自定义作业
GitLab 14.9应该可以实现(2022年3月)

通过API运行手动作业时指定变量

运行手动作业时,输入CI/CD变量以覆盖现有变量或添加新变量可能很有用。
以前,唯一的方法是通过UI来完成。
在此版本中,我们添加了在使用REST API运行作业时指定变量的功能,这将为您提供更多选项来自动化CI/CD管道。
参见文档和Issue
示例:

curl --request POST "https://gitlab.example.com/api/v4/projects/1/jobs/1/play
     --header "PRIVATE-TOKEN: <your_access_token>"
     --data @variables.json

@variables.json的结构如下:

{
  "job_variables_attributes": [
    {
      "key": "TEST_VAR_1",
      "value": "test1"
    },
    {
      "key": "TEST_VAR_2",
      "value": "test2"
    }
  ]
}
rryofs0p

rryofs0p3#

通过GitLab API向作业传递变量的JavaScript示例

如果你 * 没有使用curl*,但想通过API以编程方式从你选择的语言触发一个带有变量的GitLab作业,那么让job_variables_attributes工作的重要部分就是设置正确的Content-Type
JavaScript / nodejs中的示例:

const https = request('https')

const postData = JSON.stringify({
    job_variables_attributes: [
       {
            key: 'CUSTOM_VAR1',
            value: 'test1',
        },
        {
            key: 'CUSTOM_VAR2',
            value: 'test2',
        },
    ],
});

const req = https.request({    
    method: 'POST', 
    hostname: 'gitlab.example.com',
    path: `/api/v4/projects/${projectId}/jobs/${jobId}/play?private_token=${token}`,
    headers: { 'Content-Type': 'application/json' } 
}, (res) => ...)

req.write(postData);
req.end();

那么在作业中应该有$CUSTOM_VAR1$CUSTOM_VAR2

相关问题