Повторное развертывание облачной функции Google из командной строки с помощью исходных репозиториев

У меня довольно простая облачная функция Google, которую я развертываю из облачных репозиториев.

Я использую Google Cloud Shell в качестве машины для разработки.

Когда я делаю обновления функции по мере разработки, я использую интерфейс командной строки для отправки обновлений в свой исходный репозиторий. Однако выполнение команды gcloud functions deploy ... из командной строки, похоже, не заставляет GCF использовать последний исходный код.

Иногда команда deploy после добавления нового исходного кода просто сообщает «Ничего не обновлять». (что неверно.)

Чаще всего выполняется процесс развертывания, но функция по-прежнему запускает предыдущую версию кода.

Когда это происходит, единственный способ получить функцию для обновления - это использовать панель управления, «Отредактировать» функцию, а затем нажать кнопку «Развернуть» (хотя я ничего не менял).

Неужели я забываю выполнить какое-то обязательное управление версиями или тегами? Есть ли способ заставить CLI вытащить самую последнюю фиксацию из исходного репо?




Ответы (1)


Я думаю, вы ищете --source=SOURCE < параметр href = "https://cloud.google.com/sdk/gcloud/reference/functions/deploy" rel = "nofollow noreferrer"> gcloud functions deploy, чтобы указать на исходный репозиторий вместо текущего каталога. (по умолчанию):

--source=SOURCE

Расположение исходного кода для развертывания. Местоположение источника может быть одним из следующих трех вариантов:

  • Исходный код в Google Cloud Storage (должен быть .zip архив),
  • Ссылка на исходный репозиторий или,
  • Путь к локальной файловой системе (корневой каталог источника функции).

Обратите внимание: если вы не укажете флаг --source:

  • Текущий каталог будет использоваться для развертывания новых функций.
  • Если функция ранее была развернута с использованием пути локальной файловой системы, то исходный код функции будет обновлен с использованием текущего каталога.
  • Если функция ранее была развернута с использованием облачного хранилища Google или исходного репозитория, то исходный код функции не будет обновлен.

Значение флага будет интерпретировано как расположение облачного хранилища, если оно начинается с gs://.

Значение будет интерпретироваться как ссылка на исходный репозиторий, если оно начинается с https://.

В противном случае он будет интерпретирован как путь к локальной файловой системе. При развертывании исходного кода из локальной файловой системы эта команда пропускает файлы, указанные в .gcloudignore файле (см. gcloud topic gcloudignore для получения дополнительной информации). Если файл .gcloudignore не существует, команда попытается его создать.

Минимальный URL-адрес исходного репозитория: https://source.developers.google.com/projects/${PROJECT}/repos/${REPO}

При использовании указанного выше URL-адреса будут использоваться источники из корневого каталога репозитория в ревизии, помеченной тегом master.

Если вы хотите развернуть версию, отличную от master, добавьте к URL-адресу один из следующих трех источников:

  • /revisions/${REVISION},
  • /moveable-aliases/${MOVEABLE_ALIAS},
  • /fixed-aliases/${FIXED_ALIAS}.

Если вы хотите развернуть источники из каталога, отличного от корневого, вы должны указать версию, перемещаемый псевдоним или фиксированный псевдоним, как указано выше, и добавить /paths/${PATH_TO_SOURCES_DIRECTORY} к URL-адресу.

В целом URL-адрес должен соответствовать следующему регулярному выражению:

  ^https://source\.developers\.google\.com/projects/
  (?<accountId>[^/]+)/repos/(?<repoName>[^/]+)
  (((/revisions/(?<commit>[^/]+))|(/moveable-aliases/(?<branch>[^/]+))|
  (/fixed-aliases/(?<tag>[^/]+)))(/paths/(?<path>.*))?)?$

Пример правильно отформатированного URL-адреса исходного репозитория:

  https://source.developers.google.com/projects/123456789/repos/testrepo/
  moveable-aliases/alternate-branch/paths/path-to=source
person Dan Cornilescu    schedule 02.02.2020
comment
Абсолютно идеально. Спасибо! Думаю, я предполагал, что он подберет настройки с момента первого развертывания функции, но я понимаю, что это было неправильно. - person Rob E.; 03.02.2020
comment
может ли $ {MOVEABLE_ALIAS} быть в формате feature / xxx-NNN-yyy? Я имею ввиду с / внутри? - person al-dann; 20.05.2020