如何通过请求将环境变量从python脚本传递到gitlab ci?

时间:2019-05-02 10:15:39

标签: python gitlab-ci

需要将env变量从python脚本传递到gitlab ci管道。尝试过

responce = requests.post("https://gitlab.com/api/v4/projects/{project_id}/trigger/pipeline", data={'token': 'token', 'ref': 'branch', 'variables': [{'key': 'MR_ID', 'value': 'VALUE'}])

responce = requests.post("https://gitlab.com/api/v4/projects/{project_id}/trigger/pipeline", data={'token': 'token', 'ref': 'branch', {variables': [{'key': 'MR_ID', 'value': 'VALUE'}]})

一直都在获取{“ error”:“变量无效”}。

文档内容如下:https://docs.gitlab.com/ee/api/pipelines.html#create-a-new-pipeline

有人可以提供真正有效的python示例吗?

2 个答案:

答案 0 :(得分:0)

似乎您误解了data中的requests.post参数。如果您查看the docs,就会发现data的信息将在体内传递。

您要实现gitlab API的是请求的params参数。

params会将URL中的data编码为查询参数,如下所示:

requests.post("https://gitlab.example.com/api/v4/projects/YOUR_PROJECT_ID/pipeline", params={"MR_ID": "VALUE"});

因此,您必须将variables放在params参数中,并将data中的其他信息放在正确的位置(例如标头中的令牌等)

答案 1 :(得分:0)

您可以通过以下方式发送变量:

import requests
url = "https://gitlab.com/api/v4/projects/{project_id}/trigger/pipeline"
data = {'token': 'token', 'ref': 'branch', 'variables[MR_ID]': 'VALUE'}
response = requests.posts(url, data=data}