GitLab CI переменные в работе API? - PullRequest
6 голосов
/ 05 марта 2020

Я использую rest API для запуска заданий вручную в GitLab CI. Когда я запускаю ручную работу из пользовательского интерфейса, я могу определить пользовательские переменные, которые я могу использовать во время работы. Как я могу определить их при запуске задания через API?

Не удалось найти какую-либо документацию по нему. Или даже не один вопрос на форумах.

Вот как я сейчас выполняю свою работу

curl -k --request POST --header "PRIVATE-TOKEN: abc" https://mygit.com/api/v4/projects/17/jobs/1956/play

Я попытался добавить:

--form variables[TEST]=hello

Но это не сработало.

Редактировать: Немного больше информации о том, что я делаю. Так что мой трубопровод состоит из двух этапов. Сборка и развертывание. При каждом коммите я хочу, чтобы сборка запускалась один раз, а затем я хочу иметь возможность развернуть этот результат на нескольких разных серверах. Поскольку список серверов является динамическим c, и их много, я хочу, чтобы IP-адрес сервера использовался в качестве переменной, которую я могу присвоить своему заданию на развертывание.

Ответы [ 2 ]

0 голосов
/ 15 апреля 2020

Это то, как я его использую, но не нашел способа использовать для него токены API.

curl -X POST \
                -F token=xxxxxxxxxxxxxxxx \
                -F "ref=some_branch" \
                -F "variables[VAR1]=abc" \
                -F "variables[VAR2]=cde" \
                "https://example.gitlab.com/api/v4/projects/312/trigger/pipeline"

Где, например, -F "variables[VAR1]=abc" установлено в .gitlab-ci.yml.

only:
    variables:
      - $VAR1

Идея заключалась в том, чтобы создать некоторые ручные задания CI и сообщить разработчикам, что они могут запускать их через вызов API, но, поскольку я могу использовать только маркер проекта, он абсолютно небезопасен.

Было бы очень удобно запустить его через curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>"

0 голосов
/ 10 марта 2020

Передача переменных задокументирована в выпуск gitlab-org / gitlab 2772 , но больше о запуске конвейера (не задание)

Посмотрите, будет ли работать этот синтаксис, для триггерные переменные (синтаксис variables[xxx]=yyy):

# gitlab-ci.yml
build:
  script:
    - curl --request POST --form "variables[PRE_CI_PIPELINE_SOURCE]=$CI_PIPELINE_SOURCE" --form "token=$CI_JOB_TOKEN" --form ref=master http://192.168.10.3:3001/api/v4/projects/13/trigger/pipeline

Или просто для обычных переменных --form key=value:

curl --request POST --form "token=$CI_JOB_TOKEN" --form ref=master https://gitlab.example.com/api/v4/projects/9/trigger/pipeline
...