如何解决如何在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 举报,一经查实,本站将立刻删除。