Как передать переменные env из скрипта Python в Gitlab CI с запросами? - PullRequest
0 голосов
/ 02 мая 2019

Необходимо передать переменную 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 голосов
/ 02 мая 2019

Вы можете отправить переменную следующим образом:

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}
0 голосов
/ 02 мая 2019

Похоже, вы неправильно поняли значение параметра data в requests.post. Если вы посмотрите на документы , вы увидите, что информация из data будет доставлена ​​в теле.

Для выполнения API gitlab требуется параметр params запросов.

params закодирует data в URL как параметр запроса, например:

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

Таким образом, вы должны поместить свой variables в параметр params и другую информацию, которую вы имеете в data, в нужном месте (например, токен в заголовке и т. Д.)

...