如何在Gitlab CI中指定以点开头的artifact产物名称?
GitLab CI指定带前导点的artifact名称解决方案
GitLab CI的artifact命名逻辑默认会自动裁剪名称开头的点、空格等特殊字符,直接在name字段写带前导点的名称、或是加转义符都无法绕过这个规则,可通过以下两种方案解决:
方案一:手动打包目标文件(推荐)
自己在执行脚本阶段提前将产物打包为符合命名要求的压缩包,再直接将该压缩包设置为artifact,完全绕开GitLab的自动命名裁剪逻辑:
your_job: script: # 手动将目标文件打包为带前导点的zip包 - zip .last_version.zip .last_version artifacts: when: on_success # 直接指定已经打包好的压缩包路径 paths: [.last_version.zip] expire_in: 1 week
该方案生成的artifact下载后文件名就是完全符合预期的.last_version.zip,无隐含问题,适配后续自动化脚本处理的场景。
方案二:零宽空格取巧法
如果需要保留GitLab的自动打包逻辑,可以在name字段的前导点之前添加一个零宽空格(Unicode编码U+200B),GitLab会将这个不可见字符识别为合法的名称开头,不会裁剪后续的点:
artifacts: when: on_success paths: [.last_version] # 引号内第一个字符为零宽空格,后续为你需要的带点名称 name: ".last_version" expire_in: 1 week
注意:该方案生成的压缩包名称实际开头包含不可见的零宽空格,如果后续需要用脚本自动匹配处理该文件,需要额外处理这个字符,否则会出现找不到文件的问题。
内容的提问来源于stack exchange,提问作者Konstantin Likhachev
相关产品推荐
相关产品推荐

