Bitbucket Pipelines для создания приложения Java, образа Docker и передачи его в AWS ECR?

Я настраиваю Bitbucket Pipelines для своего Java-приложения, и я хочу добиться того, чтобы каждый раз, когда я что-то объединяю с мастером ветки, Bitbucket запускает конвейер, который на первом этапе создает и тестирует мое приложение, а на втором этапе создает образ Docker из него и вставьте его в ECR. Проблема в том, что на втором этапе невозможно использовать файл JAR, созданный на первом этапе, потому что каждый шаг выполняется в отдельном новом контейнере Docker. Есть идеи, как это решить?

Мои текущие файлы:

1) Bitbucket-pipelines.yaml

pipelines:
  branches:
    master:
      - step:
          name: Build and test application
          services:
            - docker
          image: openjdk:11
          caches:
            - gradle
          script:
            - apt-get update
            - apt-get install -y python-pip
            - pip install --no-cache-dir docker-compose
            - bash ./gradlew clean build test testIntegration

      - step:
          name: Build and push image
          services:
            - docker
          image: atlassian/pipelines-awscli
          caches:
            - gradle
          script:
            - echo $(aws ecr get-login --no-include-email --region us-west-2)  > login.sh
            - sh login.sh
            - docker build -f Dockerfile -t my-application .
            - docker tag my-application:latest 212234103948.dkr.ecr.us-west-2.amazonaws.com/my-application:latest
            - docker push 212234103948.dkr.ecr.us-west-2.amazonaws.com/my-application:latest

2) Dockerfile:

FROM openjdk:11
VOLUME /tmp
EXPOSE 8080
COPY build/libs/*.jar app.jar
ENTRYPOINT ["java", "-jar", "/app.jar"]

И я получаю ошибку:

Step 4/5 : COPY build/libs/*.jar app.jar
COPY failed: no source files were specified



Ответы (1)


Я нашел решение, это довольно просто - мы должны просто использовать функцию «артефакты», поэтому на первом этапе дополнительная строка:

artifacts:
- build/libs/*.jar

решает проблему.

person Rolf    schedule 19.12.2019