COPY не удалось: не были указаны исходные файлы - Как мне использовать артефакты?

С пакетом mvn в maven-build я создаю папку (с именем target) с правильными подфайлами и папками. Когда я выполняю его в своей среде разработки, я могу перейти к этапу сборки докера. В Gitlab я получаю сообщение об ошибке: COPY failed: не были указаны исходные файлы. Это происходит на шаге 3/7 в моем Dockerfile. Почему они не знают файл на этапе сборки докера, хотя я создаю артефакт?

Мой .gitlab-ci.yml:

image: maven:latest

stages:
  - build
  - run

cache:
  paths:
    - .m2/repository

maven-build:
  stage: build
  script: mvn package -s .m2/settings.xml
  artifacts:
    paths:
      - target/

docker-build:
  image: docker:latest
  stage: build
  services:
    - docker:dind
  script: 
    - docker build . -t generic_test
    
run:
  stage: run    
  script:
    - docker run generictest

Мой докерфайл:

FROM selenium/standalone-firefox
WORKDIR /app
COPY target/*.jar app.jar
COPY *.json .
ENV http_proxy=http://10.127.255.25:8080
ENV https_proxy=http://10.127.255.25:8080
ENTRYPOINT java -jar app.jar /usr/bin/geckodriver

Когда у меня была целевая папка в Gitlab, и мне не нужно было создавать ее раньше, с mvn package она работала. Вот код, который работал раньше (и да, я должен его создать и не могу оставить в репозитории):

stages:
    - build
    
docker-build:
  image: docker:latest
  stage: build
  services:
    - docker:dind
 
  script:
    - echo docker build . -t dockertest
    - echo docker run dockertest
 

person Luca F    schedule 15.07.2020    source источник


Ответы (1)


Я понял. По умолчанию все артефакты со всех предыдущих этапов передаются (документация), но если вы находитесь на том же этапе, он не знает артефакта. Мне нужно создать два разных этапа. Я не использую stage: build два раза, я создал третий.

image: maven:latest

stages:
  - docker-build
  - maven-build
  - run

cache:
  paths:
    - .m2/repository

maven-build:
  stage: docker-build
  script: 
    - mvn package -s .m2/settings.xml
    - dir
    - cd target
    - dir
  artifacts:
    paths:
      - target/

docker-build:
  image: docker:latest
  stage: maven-build
  services:
    - docker:dind
  script: 
    - ls
    - docker build . -t generictest
    
run:
  image: docker:latest
  stage: run
  services:
    - docker:dind
  script:
    - docker run generictest
person Luca F    schedule 16.07.2020