Gitlab CI: триггер API с вызовом ax ios не работает при использовании переменных - PullRequest
1 голос
/ 01 апреля 2020

Без переменных серверный вызов работает, и gitlab запускает конвейер.

Но когда я добавляю переменные к этому вызову, он выдает ошибку: «переменные должны быть картой строк с ключами».

Это мой код:

    axios
      .post(`https://gitlab.myurl.com/api/v4/projects/${projectId}/trigger/pipeline`, {
        ref: branch,
        token: token,
        variables: { STAGING_AREA: 'testing1', NOTIFY_STATUS: true, SLACK_USER_ID: 'xxxxx' }
      })
      .then(res => {
        console.log('pipeline started:', res.data.web_url);
      })
      .catch(error => {
        console.error('errorMessage', error);
      });

Какой правильный синтаксис для передачи переменных?

Ответы [ 2 ]

2 голосов
/ 02 апреля 2020

Согласно документам , переменный параметр должен иметь форму variables[key]=value.

И запрос является многокомпонентным, поэтому вам нужно использовать FormData.
Попробуйте запустить этот код.

const pipelineTriggerBody = new FormData();
pipelineTriggerBody.append('ref', 'master'); // branch name
pipelineTriggerBody.append('token', 'CI_TOKEN');
pipelineTriggerBody.append('variables[STAGING_AREA]', 'testing1');
pipelineTriggerBody.append('variables[NOTIFY_STATUS]', true);
pipelineTriggerBody.append('variables[SLACK_USER_ID]', 'xxxxx');

axios
  .post(
    `https://gitlab.myurl.com/api/v4/projects/${projectId}/trigger/pipeline`,
    pipelineTriggerBody
  )
  .then(res => {
    console.log('pipeline started:', res.data.web_url);
  })
  .catch(error => {
    console.error('errorMessage', error);
  });
0 голосов
/ 06 апреля 2020

Я делал одну вещь неправильно.

NOTIFY_STATUS: true

Похоже, что true можно передать только в виде строки:

NOTIFY_STATUS: 'true'

После этого редактирования мой код работал нормально.

...