如何在GitLab CI运行时将仓库的trivy-offline.db.tgz拷贝到容器并解压
解决方案
注意:你当前配置了
GIT_STRATEGY: none,GitLab CI默认不会拉取代码仓库内容到作业执行环境。如果trivy-offline.db.tgz存放在你的代码仓库中,请先将该变量修改为GIT_STRATEGY: fetch;如果该文件是上游作业生成的制品,请配置dependencies或needs关联对应上游作业,确保压缩包已同步到$CI_PROJECT_DIR下。
GitLab Runner执行容器化作业时,会自动将宿主机上的项目目录(对应CI内置变量$CI_PROJECT_DIR,也就是你提到的/builds/test/eval-trivy-3路径)挂载到运行作业的容器的相同路径下,因此不需要额外执行拷贝命令,在容器内可以直接访问该压缩包。
你可以直接把script段中的两个占位行替换为以下内容:
# 先创建Trivy默认的漏洞库存放目录,避免路径不存在报错 - mkdir -p /root/.cache/trivy/db # 若你有额外拷贝到其他路径的需求,可保留以下拷贝命令,否则可以省略 # - cp $CI_PROJECT_DIR/trivy-offline.db.tgz /自定义/目标/存放路径/ # 解压命令,将压缩包内容解压到Trivy默认的漏洞库路径 - tar -zxf $CI_PROJECT_DIR/trivy-offline.db.tgz -C /root/.cache/trivy/db/ --strip-components 1
参数说明:
--strip-components 1:如果你的压缩包打包时自带了一级db目录,该参数可以跳过第一层目录,直接将trivy.db、metadata.json等文件放到Trivy识别的目录下;如果你的压缩包本身就是根目录直接存放库文件,可以删除该参数。- 如果你需要解压到自定义指定路径,只需要修改
-C后的目标路径即可。
内容的提问来源于stack exchange,提问作者user2201789
相关产品推荐
相关产品推荐

