Luca F
Luca F

Reputation: 145

COPY failed: no source files were specified - How do I have to use the artifacts?

With mvn package in maven-build I create a folder (with the name "target") with the correct subfiles and folders. When I execute it in my development environment I can go on with the docker-build stage. In Gitlab I get the error: COPY failed: no source files were specified. This happens in step 3/7 in my Dockerfile. Why they don't know the File in docker-build stage even though I create an artifact?

My .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

My Dockerfile:

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

When I had the target-Folder in Gitlab and don't have to create it before with mvn package it worked. Here is the code which worked before (and yes I have to create it and can't leave it in the repository):

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

Upvotes: 0

Views: 4843

Answers (1)

Luca F
Luca F

Reputation: 145

I got it. By default, all artifacts from all previous stages are passed (documentation), but if you are in the same stage it doesn't know the artifact. I have to create two different stages. I don't use stage: build two times, I created a third one.

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

Upvotes: 3

Related Questions