GitLab CI/CD 作业无法找到构件的原因及解决方案

65次阅读
没有评论

问题描述

在开源呼吸机项目中,我们希望为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作业无法找到构件的两种可能方案。如果以上方案都无效,请检查其他可能的问题,如构建环境配置、权限问题等。

希望以上解决方案能帮助您解决问题。如果还有其他疑问,请随时提问。

正文完