问题描述
在开源呼吸机项目中,我们希望为Arduino控制器板提供一个可用的固件文件,以便测试人员可以直接使用。然而,尽管构件似乎已经存在,但CI作业却无法找到这些构件。具体问题如下:
– CI/CD流水线创建了两个文件,可以使用find
命令列出。
– 在下一步中,流水线报告找不到这些构件。错误信息显示”no matching files/no files to upload”。
请问,这是什么错误,如何解决或排除故障?为什么这个作业最终被标记为成功?
CI作业定义如下:
compile:
stage: build
tags:
- docker
script:
- |
git clone -b ci-gh https://github.com/mattd3v/Open-Source-Ventilator.git
cd Open-Source-Ventilator/OpenSourceVentilator/
arduino-cli compile --warnings all --fqbn arduino:avr:uno -o osv-controller-uno.bin OpenSourceVentilator.ino
find .
artifacts:
paths:
- ./osv-controller-uno.bin.hex
- ./osv-controller-uno.bin.elf
流水线输出如下:
../test./test/RMVS_TestCaseData.xlsx
./OpenSourceVentilator.ino
./osv-controller-uno.bin.hex
./osv-controller-uno.bin.elf
./README.md
section_end:1586713988:build_script[0K
section_start:1586713988:after_script[0;m
section_end:1586713990:after_script[0K
section_start:1586713990:archive_cache[0K
[0K[36;1m Saving cache[0;m[0;m
section_end:1586713991:archive_cache[0K
section_start:1586713991:upload_artifacts_on_success[0K
[0K[36;1mUploading artifacts for successful job[0;m[0;m
[32;1mUploading artifacts...[0;m
[0;33m WARNING: ./osv-controller-uno.bin.hex: no matching files[0;m
[0;33m WARNING: ./osv-controller-uno.bin.elf: no matching files[0;m
[31;1mERROR: No files to upload [0;m
section_end:1586713993:upload_artifacts_on_success[0K
[32;1mJob succeeded[0;m
解决方案
请注意以下操作注意版本差异及修改前做好备份。
方案1
根据Casey Vega的评论,需要提供完整的路径。
在CI作业定义中,构件的路径是相对于构建目录的。因此,可以尝试修改路径为- Open-Source-Ventilator/OpenSourceVentilator/osv-controller-uno.bin.hex
。
方案2
如果方案1无效,可以尝试以下解决方案:
1. 确保构建目录中的文件确实存在。可以通过在CI作业中添加ls
命令来列出构建目录中的文件,以验证文件是否存在。
2. 检查构建目录是否正确设置。可以通过在CI作业中添加pwd
命令来查看当前工作目录。
3. 检查构建目录是否包含正确的文件。可以通过在CI作业中添加find
命令来查找文件。
以上是解决GitLab CI/CD作业无法找到构件的两种可能方案。如果以上方案都无效,请检查其他可能的问题,如构建环境配置、权限问题等。
希望以上解决方案能帮助您解决问题。如果还有其他疑问,请随时提问。
正文完