如何在gitlab中的作业之间移动jar文件?

如何解决如何在gitlab中的作业之间移动jar文件?

我正在尝试构建gitlab管道来从Java应用程序构建docker映像。我有两个工件,我想在构建阶段之间传递...发现一个文件(build_result.txt)已上传,但是找不到另一个(chat.jar)。但是,这两个文件都在同一目录中。将文件上传为工件有大小或扩展名限制吗?


stages:

  - app-build
  - con-build

image: docker:latest
  
services:
  - docker:dind

variables:
  #Global variables
  GIT_SSL_NO_VERIFY: "true"
  DOCKER_DRIVER: overlay2

 #Application variables 
  APP_NAME: web
  APP_TAG: test

before_script:
  - echo "..."

after_script:
  - echo "..."

app-build:
  stage: app-build
  artifacts:
    when: always
    paths:
      - build_result.txt 
      - chat.jar
    expire_in: 2 days
  tags: 
    - dind
  script:
    - echo "BEFORE..."
    - apk --no-cache --update add maven git
    - apk --no-cache --update add openjdk11 --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community

    - echo "DO..."
    - echo "building app..."| tee -a build_result.txt 
    - git clone https://github.com/callicoder/spring-boot-websocket-chat-demo.git /app
    - cd /app
    - mvn package | tee -a build_result.txt
    - cp target/websocket-demo-0.0.1-SNAPSHOT.jar /app/chat.jar
    - ls / 
    - ls /app 
    - ls /app/target

con-build:
  stage: con-build
  dependencies:
    - app-build
  tags: 
    - dind
  artifacts:
    when: always
    paths:
      - docker_build.txt
    expire_in: 2 days

  script:
    - echo "Place artifact for docker consumption"
    - mkdir -p /docker/files/app
    - cp chat.jar /docker/files/app/chat.jar
    - cd docker
    - docker build -t "$APP_NAME:$APP_TAG" . | tee -a docker_build.txt

我得到的输出是找不到chat.jar,但是它在同一目录中……在构建阶段日志的结尾显示为警告,但是下一个作业失败,表明可以找不到文件...如何找到一个文件而不找到另一个文件

第1步-记录。

[INFO] ------------------------------------------------------------------------
 [INFO] BUILD SUCCESS
 [INFO] ------------------------------------------------------------------------
 [INFO] Total time:  18.574 s
 [INFO] Finished at: 2020-09-24T18:15:56Z
 [INFO] ------------------------------------------------------------------------
 $ cp target/websocket-demo-0.0.1-SNAPSHOT.jar /app/chat.jar
 $ ls /
 app
 bin
 builds
 certs
 dev
 etc
 home
 lib
 media
 mnt
 opt
 proc
 root
 run
 sbin
 srv
 sys
 tmp
 usr
 var
 $ ls /app
 Dockerfile
 Readme.md
 build_result.txt
 chat.jar
 k8s-deployment.yaml
 mvnw
 mvnw.cmd
 pom.xml
 screenshot.png
 src
 target
 $ ls /app/target
 classes
 generated-sources
 generated-test-sources
 maven-archiver
 maven-status
 surefire-reports
 test-classes
 websocket-demo-0.0.1-SNAPSHOT.jar
 websocket-demo-0.0.1-SNAPSHOT.jar.original
Running after_script
00:00
 Running after script...
 $ echo "do stuff after every stage..."
 do stuff after every stage...
Uploading artifacts for successful job
00:00
 Uploading artifacts...
 build_result.txt: found 1 matching files and directories 
 WARNING: chat.jar: no matching files               
 Uploading artifacts as "archive" to coordinator... ok  id=797950 responseStatus=201 Created token=nVg8i-GF
 Job succeeded

第2步-日志:

 $ cp chat.jar /docker/files/app/chat.jar
 cp: can't stat 'chat.jar': No such file or directory
Running after_script
00:00
 Running after script...
 $ echo "do stuff after every stage..."
 do stuff after every stage...
Uploading artifacts for Failed job
00:00
 Uploading artifacts...
 WARNING: docker_build.txt: no matching files       
 ERROR: No files to upload                          
 ERROR: Job Failed: command terminated with exit code 1  

解决方法

您正在创建一个内容为{br />的a = 1文件 docker_build.txt 但是随后您将目录更改为echo "building app..."| tee -a build_result.txt,然后创建另一个/app,最后构建了工件。

但是您看到的不是您的第一个docker_build.txt命令,因为您的起始目录不是docker_build.txt,而是ls {{3}提供的动态路径}

此外,所有工件定义也都与此路径相关,因此,在移动/命令后,这应该可以工作:

CI_PROJECT_DIR

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?