Сбой запуска Google Cloud Build с ошибкой «ОШИБКА: шаг сборки 0» gcr.io/cloud-builders/docker «Сбой: шаг завершен с ненулевым состоянием: 1» - PullRequest
0 голосов
/ 20 апреля 2020

Я пытаюсь настроить непрерывное развертывание моего golang бэкэнда с помощью документации Google , но при срабатывании триггера происходит сбой со следующей ошибкой:

starting build "eba3ce39-caad-43f0-a255-0a3cacec4913"

FETCHSOURCE
Initialized empty Git repository in /workspace/.git/
From https://source.developers.google.com/p/my-porject/r/github_myusername_myproject.com
 * branch            660796f575bae6860d6f96df60cfd631a730c3ae -> FETCH_HEAD
HEAD is now at 660796f cloudbuild.yaml
BUILD
Starting Step #0
Step #0: Already have image (with digest): gcr.io/cloud-builders/docker
Step #0: unable to prepare context: unable to evaluate symlinks in Dockerfile path: lstat /workspace/Dockerfile: no such file or directory
Finished Step #0
ERROR
ERROR: build step 0 "gcr.io/cloud-builders/docker" failed: step exited with non-zero status: 1

My структура файла проекта выглядит так:

project
    frontend
    backend
        main.go
        cloudbuild.yaml
        Dockerfile

где мой cloudbuild.yaml выглядит так:

steps:
  # Build the container image
  - name: "gcr.io/cloud-builders/docker"
    args:
      [
        "build",
        "-t",
        "gcr.io/my-project/github.com/username/project.com:$COMMIT_SHA",
        ".",
      ]
  # Push the image to Container Registry
  - name: "gcr.io/cloud-builders/docker"
    args:
      [
        "push",
        "gcr.io/my-project/github.com/username/project.com:$COMMIT_SHA",
      ]
  # Deploy image to Cloud Run
  - name: "gcr.io/cloud-builders/gcloud"
    args:
      - "run"
      - "deploy"
      - "[SERVICE_NAME]"
      - "--image"
      - "gcr.io/my-project/github.com/username/project.com:$COMMIT_SHA"
      - "--region"
      - "us-central1"
      - "--platform"
      - "managed"
images:
  - gcr.io/my-project/github.com/username/project.com

, а мой Dockerfile выглядит как

# Use the official Golang image to create a build artifact.
# This is based on Debian and sets the GOPATH to /go.
# https://hub.docker.com/_/golang
FROM golang:1.13 as builder

# Create and change to the app directory.
WORKDIR /app

# Retrieve application dependencies.
# This allows the container build to reuse cached dependencies.
COPY go.* ./
RUN go mod download

# Copy local code to the container image.
COPY . ./

# Build the binary.
RUN CGO_ENABLED=0 GOOS=linux go build -mod=readonly -v -o server

# Use the official Alpine image for a lean production container.
# https://hub.docker.com/_/alpine
# https://docs.docker.com/develop/develop-images/multistage-build/#use-multi-stage-builds
FROM alpine:3
RUN apk add --no-cache ca-certificates

# Copy the binary to the production image from the builder stage.
COPY --from=builder /app/server /server

# Run the web service on container startup.
CMD ["/server"]

Я получил Dockerfile с Быстрый старт: создание и развертывание .

1 Ответ

0 голосов
/ 21 апреля 2020

Триггер Cloud Build в настоящее время указывает на /project/, в то время как ваша структура каталогов выглядит следующим образом:

project
    frontend
    backend
        main.go
        cloudbuild.yaml
        Dockerfile

Когда вы выполняете триггер, рабочая область каталога копируется в /workspace/, поэтому она не может найдите файл Docker в нем.

Вы можете переместить все в один и тот же рабочий каталог.

  .
    ├── main.go
    ├── cloudbuild.yaml
    ├── Dockerfile

Если вы хотите сохранить текущую структуру каталогов, вместо этого ваш триггер Cloud Build должен будет указывать на /project/backend/. Обратите внимание, что вы можете проверить структуру каталогов, используя команду ls -la linux.

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