Cloud Build не в состоянии построить простой шаг сборки с Maven - PullRequest
0 голосов
/ 30 декабря 2018

Тестирование cloud-build

Часть моего cloudbuild.yaml

  - name: 'gcr.io/cloud-builders/mvn'
    args: ['dockerfile:build']

dockerfile: сборка отлично работает в конвейере битбакетов,нет проблем.Я использую

 <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>dockerfile-maven-plugin</artifactId>
                <version>${dockerfile-maven-version}</version>
                <executions>
                    <execution>
                        <id>default</id>
                        <goals>
                            <goal>build</goal>
                            <goal>push</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <repository>gcr.io/my-project-id/${project.artifactId}</repository>
                    <tag>${project.version}</tag>
                    <buildArgs>
                        <JAR_FILE>${project.build.finalName}.jar</JAR_FILE>
                    </buildArgs>
                </configuration>
            </plugin>

Но с помощью облачной сборки для этого единственного шага я получаю ошибку:

[INFO] Step 14/15 : ARG JAR_FILE
[INFO] 
[INFO] ---> Using cache
[INFO] ---> 55793de4bb9f
[INFO] [INFO] Step 15/15 : ADD target/${JAR_FILE} /usr/share/$SERVCE_FOLDER_NAME/app.jar
[INFO] 
[ERROR] ADD failed: stat /mnt/cache/docker/tmp/docker-builder589658449/target/myappname-0.0.1-SNAPSHOT.jar: no such file or directory

(JAR_FILE передается из подключаемого модуля macker dockerfile

нет такого файла или каталога

Почему? .. В конце дня я использую вызов dockerfile: build и ожидаю, что он будет таким же, как и при сборке из другогоpipe.

Мой Dockerfile:

FROM openjdk:8-jdk

ENV GOOGLE_APPLICATION_CREDENTIALS=/app/credentials.json

ARG ACTIVE_PROFILES=dev
ENV ACTIVE_PROFILES=$ACTIVE_PROFILES
ARG CREDENTIALS
ARG SERVCE_FOLDER_NAME=myappname-service
ENV SERVCE_FOLDER_NAME=$SERVCE_FOLDER_NAME

#ENTRYPOINT ["/usr/bin/java", "-jar", "/usr/share/$SERVCE_FOLDER_NAME/app.jar"]

ENTRYPOINT ["./entrypoint.sh" ]

WORKDIR /app

EXPOSE 8080

COPY ./.gcloud/credentials.json credentials.json
COPY entrypoint.sh .

#Add Maven dependencies (not shaded into the artifact; Docker-cached)
#ADD target/lib           /usr/share/$SERVCE_FOLDER_NAME/lib

ARG JAR_FILE
ADD target/${JAR_FILE} /usr/share/$SERVCE_FOLDER_NAME/app.jar

Сценарий EntryPoint (это то, что упомянуто на шаге 15/15 в журнале):

java -Djava.security.egd=file:/dev/./urandom -jar /usr/share/$SERVCE_FOLDER_NAME/app.jar --spring.profiles.active=$ACTIVE_PROFILES

(Iпытался передать жестко запрограммированные значения в $ SERVCE_FOLDER_NAME, $ ACTIVE_PROFILES - то же самое [работает в конвейере битовой памяти])

1 Ответ

0 голосов
/ 05 января 2019

Несколько вещей приходят на ум,

  • как вы запускаете сборки?
    • вручную с помощью gcloud или api?или автоматически с помощью триггеров сборки или приложения github?
  • кажется, что каталог target / может отсутствовать в удаленном рабочем пространстве - вы где-нибудь игнорируете файлы target / или .jar?
  • вы пробовали отладку с помощью cloud-build-local?это позволяет вам писать и исследовать рабочее пространство локально
...