# #github #google-cloud-platform #google-cloud-run #google-cloud-build
Вопрос:
Если есть проблема, из-за которой облачная сборка не удается создать предварительную сборку для использования в запросах на вывод на github.
У меня есть
- организация github с установленным приложением cloud build.
- настройка облачной сборки с триггерами для развертывания в облачном запуске
- функциональная сборка на основе мастер-развертывания (здесь это не имеет значения).
Вот мое cloudbuild-preview.yaml
личное дело. Неудачный шаг-последний: «ссылка на версию по запросу»
steps:
- id: "build image"
name: "gcr.io/cloud-builders/docker"
args:
[
"build",
"-t",
"$_GCR_HOSTNAME/${PROJECT_ID}/${_SERVICE_NAME}:${_PR_NUMBER}-${SHORT_SHA}",
".",
]
- id: "push image"
name: "gcr.io/cloud-builders/docker"
args:
[
"push",
"$_GCR_HOSTNAME/${PROJECT_ID}/${_SERVICE_NAME}:${_PR_NUMBER}-${SHORT_SHA}",
]
- id: "deploy revision with tag"
name: "gcr.io/google.com/cloudsdktool/cloud-sdk"
entrypoint: "gcloud"
args:
[
"beta",
"run",
"deploy",
"${_SERVICE_NAME}",
"--platform",
"managed",
"--region",
"${_REGION}",
"--image",
"$_GCR_HOSTNAME/${PROJECT_ID}/${_SERVICE_NAME}:${_PR_NUMBER}-${SHORT_SHA}",
"--tag",
"pr-${_PR_NUMBER}",
"--no-traffic",
]
- id: "link revision on pull request"
name: "$_GCR_HOSTNAME/${PROJECT_ID}/deployment-previews" # our custom builder
args:
[
"set",
"--project-id",
"${PROJECT_ID}",
"--region",
"${_REGION}",
"--service",
"${_SERVICE_NAME}",
"--pull-request",
"${_PR_NUMBER}",
"--repo-name",
"${_GITHUB_REPO}",
"--commit-sha",
"${SHORT_SHA}",
]
timeout: 1400s
options:
machineType: N1_HIGHCPU_8
substitutions:
_GCR_HOSTNAME: eu.gcr.io
_SERVICE_NAME: redacted-service
_REGION: europe-west4
_GITHUB_REPO: $(pull_request.pull_request.head.repo.full_name)
Выполнение завершается с ошибкой
Step #3 - "link revision on pull request": Error response from daemon: manifest for eu.gcr.io/redacted-org/deployment-previews:latest not found: manifest unknown: Failed to fetch "latest" from request "/v2/redacted-org/deployment-previews/manifests/latest".
Step #3 - "link revision on pull request": Using default tag: latest
Step #3 - "link revision on pull request": Pulling image: eu.gcr.io/redacted-org/deployment-previews
Starting Step #3 - "link revision on pull request"
Чего я не понимаю, так это того, почему sep даже ищет тег :последняя версия. Там его нет. Описанные выше шаги не создают его. Реестр контейнеров не содержит такового.
Как указать на этом шаге сборки, чтобы использовать правильное изображение, помеченное тегом ${_PR_NUMBER}-${SHORT_SHA}
?
Где я могу погрузиться в магию здесь? Где определение этого волшебного шага сборки?!
Большое вам спасибо за любые идеи.
Комментарии:
1. Какая версия вашего развертывания-предыдущая, которая у вас есть в реестре контейнеров? У вас есть последняя версия с тегами? Другой номер версии? Номер Ша? Можете ли вы попытаться указать версию на этапе сборки?
2. на этапе создания push-изображения я загружаю изображение, как указано, помеченное номером PR и коротким SHA:
${_PR_NUMBER}-${SHORT_SHA}
. Шаблон для этой конфигурации облачного запуска получен от Google: cloud.google.com/run/docs/tutorials/…3. Будет трудно понять это, не видя полных журналов выполнения, потому что в какой-то момент он должен откуда-то получить последний тег, но трудно понять, на каком шаге он получает его без журналов, не могли бы вы поделиться этим?
Ответ №1:
Если вы не укажете тег изображения, инструменты всегда будут пытаться извлечь :latest
изображение. В облачной сборке вы можете указать конкретную версию образа компоновщика, просто включив тег в название шага сборки:
- id: "link revision on pull request"
name: "$_GCR_HOSTNAME/${PROJECT_ID}/deployment-previews:${_PR_NUMBER}-${SHORT_SHA}" # our custom builder
args:
[
"set",
"--project-id",
"${PROJECT_ID}",
"--region",
"${_REGION}",
"--service",
"${_SERVICE_NAME}",
"--pull-request",
"${_PR_NUMBER}",
"--repo-name",
"${_GITHUB_REPO}",
"--commit-sha",
"${SHORT_SHA}",
]