Запустить конвейер облачной сборки с помощью Cloud Function - PullRequest
0 голосов
/ 10 января 2019

Я пытаюсь создать облачную функцию, слушающую тему cloudbuilds и вызывающую API для запуска сборки. Я думаю, что чего-то не хватает в моем файле index.js (я новичок в Node.js). Можете ли вы привести пример того, как облачная функция выполняет API-вызов к Cloud Build API?

Вот моя функция:

const request = require('request')

const accessToken = '$(gcloud config config-helper --format='value(credential.access_token)')';

request({
  url: 'https://cloudbuild.googleapis.com/v1/projects/[PROJECT_ID]/builds',
  auth: {
    'bearer': accessToken
  },
  method: 'POST',
  json: {"steps": [{"name":"gcr.io/cloud-builders/gsutil", "args": ['cp','gs://adolfo-test-cloudbuilds/cloudbuild.yaml', 'gs://adolfo-test_cloudbuild/cloudbuild.yaml']}]},
}, 
module.exports.build = (err, res) => {
  console.log(res.body);
});

Я выполнял команду gcloud config config-helper --format='value(credential.access_token)', копировал токен и помещал его в качестве значения в переменную accessToken. Но это не сработало для меня.

Вот ошибка: { error: { code: 403, message: 'The caller does not have permission', status: 'PERMISSION_DENIED' } }

1 Ответ

0 голосов
/ 23 июля 2019

У меня была точно такая же проблема, и я решил ее, написав небольшой пакет, вы можете использовать его или прочитать исходный код. https://github.com/MatteoGioioso/google-cloud-build-trigger С помощью этого пакета вы можете запустить предварительно настроенный триггер из облачной сборки. Вы также можете расширять вызов других конечных точек API cloud build.

Как я понимаю cloud build API требует либо OAuth2, либо служебную учетную запись. Убедитесь, что вы дали правильное разрешение для cloud build в консоли gcp под IAM. После этого вы сможете загрузить файл service-account.json.

Дайте мне знать, помогло ли это вам

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...