gitlab - 尝试从共享 docker 卷上传文件作为工件
gitlab - trying to upload files from shared docker volume as artifacts
我正在尝试从容器上传文件作为我的 gitlab 管道中的工件。我正在尝试创建一个共享卷。但我一定是做错了什么,因为我得到一个错误,没有文件可以上传。
我的gitlab-ci.yml文件中有如下逻辑:
variables:
SHARED_PATH: testresults
DOCKER_DRIVER: overlay2
deployDev:
stage: deployDev
environment:
name: development
script:
- docker volume create ${SHARED_PATH}
- docker build --platform linux/amd64 --target deployFunctionApp -t azuredeployserver .
- docker run -v ${SHARED_PATH}:/builds/TestResults azuredeployserver
artifacts:
when: always
paths:
- ${SHARED_PATH}/test-results.xml
reports:
junit:
- ${SHARED_PATH}/test-results.xml
except:
- main
when: manual
tags:
- mac-pipelines
这是错误:
$ docker run -v ${SHARED_PATH}:/builds/TestResults azuredeployserver
WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested
Uploading artifacts for successful job
00:00
Uploading artifacts...
WARNING: testresults/test-results.xml: no matching files
ERROR: No files to upload
Uploading artifacts...
WARNING: testresults/test-results.xml: no matching files
ERROR: No files to upload
Cleaning up project directory and file based variables
00:00
Job succeeded
手动尝试
图像由管道构建后,我尝试从命令行手动执行此操作:
PS /Users/me/> docker 运行 --rm -i -v=testresults:/build/testresults azuredeployserver ls -lah /build/testresults
警告:请求的图像平台 (linux/amd64) 与检测到的主机平台 (linux/arm64/v8) 不匹配,未请求特定平台
总计 12K
drwxr-xr-x 2 根根 4.0K 4 月 25 日 19:43。
drwxr-xr-x 3 根根 4.0K 4 月 26 日 12:47 ..
-rw-r--r-- 1 root root 809 Apr 25 19:42 test-results.xml
所以我可以看到 XML 文件在那里 - 我只是不知道如何通过 gitlab 获取它 -ci.yml
如有任何帮助,我们将不胜感激。
编辑 1
我修改了脚本以尝试 docker cp 命令:
script:
- docker volume create ${SHARED_PATH}
- docker build --platform linux/amd64 --target deployFunctionApp -t azuredeployserver .
- docker run --name $DOCKER_IMAGE_BUILD_TAG_ID -v ${SHARED_PATH}:/builds/TestResults azuredeployserver
- docker cp $DOCKER_IMAGE_BUILD_TAG_ID:/builds/TestResults/*.xml ./TestResults/*.xml
但我看到的错误是
$ docker run --name $DOCKER_IMAGE_BUILD_TAG_ID -v ${SHARED_PATH}:/builds/TestResults azuredeployserver
docker: invalid reference format: repository name must be lowercase.
See 'docker run --help'.
Uploading artifacts for failed job
00:00
Uploading artifacts...
WARNING: .TestResults/test-results.xml: no matching files
ERROR: No files to upload
Uploading artifacts...
WARNING: .TestResults/test-results.xml: no matching files
ERROR: No files to upload
Cleaning up project directory and file based variables
00:01
ERROR: Job failed: exit code 125
现在看看我是否可以硬编码图像的名称来测试 docker cp 命令。但如果你看到我误入歧途的地方,我会洗耳恭听。
此外,我想如果我使用 docker cp 我可以摆脱与创建卷相关的所有内容吗?
SHARED_PATH=testresults docker volume create ${SHARED_PATH}
创建一个名为 testreults
.
的 docker 卷
当你在工件部分引用 ${SHARED_PATH}/test-results.xml
时,你是在说,“在 GitLab Runner 的本地文件系统中寻找 testresults/test-results.xml
,它不存在。
我认为这里最直接的选择是将文件从容器中复制到 GitLab Runner 可以访问它的地方。
Docker: Copying files from Docker container to host
我正在尝试从容器上传文件作为我的 gitlab 管道中的工件。我正在尝试创建一个共享卷。但我一定是做错了什么,因为我得到一个错误,没有文件可以上传。
我的gitlab-ci.yml文件中有如下逻辑:
variables:
SHARED_PATH: testresults
DOCKER_DRIVER: overlay2
deployDev:
stage: deployDev
environment:
name: development
script:
- docker volume create ${SHARED_PATH}
- docker build --platform linux/amd64 --target deployFunctionApp -t azuredeployserver .
- docker run -v ${SHARED_PATH}:/builds/TestResults azuredeployserver
artifacts:
when: always
paths:
- ${SHARED_PATH}/test-results.xml
reports:
junit:
- ${SHARED_PATH}/test-results.xml
except:
- main
when: manual
tags:
- mac-pipelines
这是错误:
$ docker run -v ${SHARED_PATH}:/builds/TestResults azuredeployserver
WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested
Uploading artifacts for successful job
00:00
Uploading artifacts...
WARNING: testresults/test-results.xml: no matching files
ERROR: No files to upload
Uploading artifacts...
WARNING: testresults/test-results.xml: no matching files
ERROR: No files to upload
Cleaning up project directory and file based variables
00:00
Job succeeded
手动尝试
图像由管道构建后,我尝试从命令行手动执行此操作:
PS /Users/me/> docker 运行 --rm -i -v=testresults:/build/testresults azuredeployserver ls -lah /build/testresults
警告:请求的图像平台 (linux/amd64) 与检测到的主机平台 (linux/arm64/v8) 不匹配,未请求特定平台 总计 12K drwxr-xr-x 2 根根 4.0K 4 月 25 日 19:43。 drwxr-xr-x 3 根根 4.0K 4 月 26 日 12:47 .. -rw-r--r-- 1 root root 809 Apr 25 19:42 test-results.xml
所以我可以看到 XML 文件在那里 - 我只是不知道如何通过 gitlab 获取它 -ci.yml
如有任何帮助,我们将不胜感激。
编辑 1
我修改了脚本以尝试 docker cp 命令:
script:
- docker volume create ${SHARED_PATH}
- docker build --platform linux/amd64 --target deployFunctionApp -t azuredeployserver .
- docker run --name $DOCKER_IMAGE_BUILD_TAG_ID -v ${SHARED_PATH}:/builds/TestResults azuredeployserver
- docker cp $DOCKER_IMAGE_BUILD_TAG_ID:/builds/TestResults/*.xml ./TestResults/*.xml
但我看到的错误是
$ docker run --name $DOCKER_IMAGE_BUILD_TAG_ID -v ${SHARED_PATH}:/builds/TestResults azuredeployserver
docker: invalid reference format: repository name must be lowercase.
See 'docker run --help'.
Uploading artifacts for failed job
00:00
Uploading artifacts...
WARNING: .TestResults/test-results.xml: no matching files
ERROR: No files to upload
Uploading artifacts...
WARNING: .TestResults/test-results.xml: no matching files
ERROR: No files to upload
Cleaning up project directory and file based variables
00:01
ERROR: Job failed: exit code 125
现在看看我是否可以硬编码图像的名称来测试 docker cp 命令。但如果你看到我误入歧途的地方,我会洗耳恭听。 此外,我想如果我使用 docker cp 我可以摆脱与创建卷相关的所有内容吗?
SHARED_PATH=testresults docker volume create ${SHARED_PATH}
创建一个名为 testreults
.
当你在工件部分引用 ${SHARED_PATH}/test-results.xml
时,你是在说,“在 GitLab Runner 的本地文件系统中寻找 testresults/test-results.xml
,它不存在。
我认为这里最直接的选择是将文件从容器中复制到 GitLab Runner 可以访问它的地方。
Docker: Copying files from Docker container to host