Как передать параметры API в триггеры построения облака GCP - PullRequest
0 голосов
/ 18 января 2020

У меня есть большой набор триггеров GCP Cloud Build, которые я вызываю через планировщик Cloud, все работает нормально. Теперь я хочу вызвать эти триггеры с помощью внешнего вызова API и передать им динамические c параметры, которые различаются по значениям и количеству параметров.

Я смог запустить триггер, выполнив запрос API, но любой JSON параметры в отправленном мною запросе API игнорировались. Google говорит о параметрах замещения в https://cloud.google.com/cloud-build/docs/configuring-builds/substitute-variable-values. Я определяю эти переменные в файле cloudbuild.yaml, однако они не были переданы в мой сценарий оболочки из запроса API. У меня нет ошибок при аутентификации или авторизации, поэтому безопасность может не быть проблемой.

Поддерживается ли моя идея вообще, или мне нужно прибегнуть к другому решению, такому как запуск кластера GKE с контейнерами, который предоставит его API (очень тяжелое решение для бокса).

1 Ответ

1 голос
/ 20 января 2020

Мы делаем нечто похожее - мы мигрировали из Jenkins в GCB, но для некоторых людей нам все еще нужен более приятный «пользовательский интерфейс», чтобы начать сборку / передачу переменных.

Я получил здесь скрипты и изменил их в соответствии со своими потребностями: https://medium.com/@nieldw / put-your-build-triggers-in-source-control-with-the-cloud-build-api- ed0c18d6fca c

Вот их REST API: https://cloud.google.com/cloud-build/docs/api/reference/rest/v1/projects.triggers/run

Для приведенного ниже сценария помните, что вам нужен идентификатор триггера ты хочешь бежать. (Вы также можете получить это, проанализировав выходные данные другого REST API.)

TRIGGER_ID=1
# we need to specify ATLEAST the branch name or commit id (check after)
BRANCH_OR_SHA=$2

# check if branch_name or commit_sha
if [[ $BRANCH_OR_SHA =~ [0-9a-f]{5,40} ]]; then
    # is COMMIT_HASH
    COMMIT_SHA=$BRANCH_OR_SHA
    BRANCH_OR_SHA="\"commitSha\": \"$COMMIT_SHA\""
else
    # is BRANCH_NAME
    BRANCH_OR_SHA="\"branchName\": \"$BRANCH_OR_SHA\""
fi

# This is the request we send to google so it knows what to build
# Here we're overriding some variables that we have already set in the default 'cloudbuild.yaml' file of the repo
cat <<EOF > request.json
{
  "projectId": "$PROJECT_ID",
  $BRANCH_OR_SHA,
  "substitutions": {
    "_MY_VAR_1": "my_value",
    "_MY_VAR_2": "my_value_2"
   }
}
EOF

# our curl post, we send 'request.json' with info, add our Token, and set the trigger_id
curl -X POST -T request.json -H "Authorization: Bearer $(gcloud config config-helper \
    --format='value(credential.access_token)')" \
        https://cloudbuild.googleapis.com/v1/projects/"$PROJECT_ID"/triggers/"$TRIGGER_ID":run
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...