Gitlab 的 artifacts zip 文件是空的
Gitlab's artifacts zip file is empty
我正在尝试 运行 Gitlab 中的机器人框架测试 CI 并将生成的报告下载为工件。到目前为止,我已经成功 运行 完成了管道中的测试并生成了工件,但是生成的 zip 是空的。我想念什么?
这是我的 Dockerfile:
FROM ppodgorsek/robot-framework:latest
COPY resources /opt/robotframework/resources
COPY tests /opt/robotframework/tests
COPY libs /opt/robotframework/libs
这是我在gitlab的舞台-ci.yml:
run robot tests dev:
variables:
# more variables
ROBOT_OPTIONS: "--variable ENV:dev -e FAIL -e PENDING"
allow_failure: true
services:
- name: docker:dind
stage: run-robot-tests
image: docker:latest
script:
- mkdir -p reports
# mode docker run commands
- docker -H $DOCKER_HOST run --rm --network localnet --env "ROBOT_OPTIONS=${ROBOT_OPTIONS}" -v reports:/opt/robotframework/reports --name robot $CONTAINER_DEV_IMAGE
artifacts:
name: ${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}
paths:
- reports/
when: always
tags:
- d-i-d
only:
refs:
- dev
我省略了一些特定于我们项目的细节。
但只是为了让您了解我们的设置,我们正在拉取 docker 图像 ppodgorsek/robot-framework 并且我们 运行 使用它针对另一个 docker 容器进行测试 运行是我们项目的前端。为了确保所有容器都在同一个网络上,我们使用 docker-in-docker。在同一个网络中还有我们的后端容器和我们的数据库。
这是我作业输出的尾部。
==============================================================================
Tests | PASS |
3 critical tests, 3 passed, 0 failed
3 tests total, 3 passed, 0 failed
==============================================================================
Output: /opt/robotframework/reports/output.xml
Log: /opt/robotframework/reports/log.html
Report: /opt/robotframework/reports/report.html
Uploading artifacts...
reports/: found 1 matching files
Trying to load /builds/automation/system-tests.tmp/CI_SERVER_TLS_CA_FILE ...
Dialing: tcp gitlab.surfnet.nl:443 ...
Uploading artifacts to coordinator... ok id=42435 responseStatus=201 Created token=g8cWYYun
Job succeeded
您可以看到来自 运行 测试的控制台输出,然后您可以看到机器人存储生成的输出的位置。
接下来它显示生成了工件,就是这样,唯一的问题是它是空的。
好吧,我确实很接近。 Robot Framework 社区的人们为我指出了正确的方向! :D
问题出在命令中:
- docker -H $DOCKER_HOST run --rm --network localnet --env "ROBOT_OPTIONS=${ROBOT_OPTIONS}" -v reports:/opt/robotframework/reports --name robot $CONTAINER_DEV_IMAGE
更具体地说,在卷的相对路径上:
-v reports:/opt/robotframework/reports
因此,解决方案是使用绝对路径:
-v $PWD/reports:/opt/robotframework/reports
我正在尝试 运行 Gitlab 中的机器人框架测试 CI 并将生成的报告下载为工件。到目前为止,我已经成功 运行 完成了管道中的测试并生成了工件,但是生成的 zip 是空的。我想念什么?
这是我的 Dockerfile:
FROM ppodgorsek/robot-framework:latest
COPY resources /opt/robotframework/resources
COPY tests /opt/robotframework/tests
COPY libs /opt/robotframework/libs
这是我在gitlab的舞台-ci.yml:
run robot tests dev:
variables:
# more variables
ROBOT_OPTIONS: "--variable ENV:dev -e FAIL -e PENDING"
allow_failure: true
services:
- name: docker:dind
stage: run-robot-tests
image: docker:latest
script:
- mkdir -p reports
# mode docker run commands
- docker -H $DOCKER_HOST run --rm --network localnet --env "ROBOT_OPTIONS=${ROBOT_OPTIONS}" -v reports:/opt/robotframework/reports --name robot $CONTAINER_DEV_IMAGE
artifacts:
name: ${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}
paths:
- reports/
when: always
tags:
- d-i-d
only:
refs:
- dev
我省略了一些特定于我们项目的细节。 但只是为了让您了解我们的设置,我们正在拉取 docker 图像 ppodgorsek/robot-framework 并且我们 运行 使用它针对另一个 docker 容器进行测试 运行是我们项目的前端。为了确保所有容器都在同一个网络上,我们使用 docker-in-docker。在同一个网络中还有我们的后端容器和我们的数据库。
这是我作业输出的尾部。
==============================================================================
Tests | PASS |
3 critical tests, 3 passed, 0 failed
3 tests total, 3 passed, 0 failed
==============================================================================
Output: /opt/robotframework/reports/output.xml
Log: /opt/robotframework/reports/log.html
Report: /opt/robotframework/reports/report.html
Uploading artifacts...
reports/: found 1 matching files
Trying to load /builds/automation/system-tests.tmp/CI_SERVER_TLS_CA_FILE ...
Dialing: tcp gitlab.surfnet.nl:443 ...
Uploading artifacts to coordinator... ok id=42435 responseStatus=201 Created token=g8cWYYun
Job succeeded
您可以看到来自 运行 测试的控制台输出,然后您可以看到机器人存储生成的输出的位置。 接下来它显示生成了工件,就是这样,唯一的问题是它是空的。
好吧,我确实很接近。 Robot Framework 社区的人们为我指出了正确的方向! :D
问题出在命令中:
- docker -H $DOCKER_HOST run --rm --network localnet --env "ROBOT_OPTIONS=${ROBOT_OPTIONS}" -v reports:/opt/robotframework/reports --name robot $CONTAINER_DEV_IMAGE
更具体地说,在卷的相对路径上:
-v reports:/opt/robotframework/reports
因此,解决方案是使用绝对路径:
-v $PWD/reports:/opt/robotframework/reports