You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bazel如何将与src同级的private-keys目录映射复制到build目录

解决方案

问题核心原因有两个:一是Bazel默认不会自动处理未显式声明的静态资源目录,二是之前填写的相对路径不符合Bazel的路径解析规则(Bazel所有路径默认相对于WORKSPACE根目录,而非BUILD文件或源码文件的相对位置),调整步骤如下:

  • 第一步:引入静态资源复制工具(如果项目未引入过copy_to_directory,先在BUILD.bazel最顶部添加加载声明)
load("@aspect_bazel_lib//lib:copy_to_directory.bzl", "copy_to_directory")
  • 第二步:显式声明private-keys目录下的所有文件为Bazel需要追踪的源,在现有SOURCES定义下方添加如下配置:
PRIVATE_KEYS = glob(["private-keys/**/*"])
  • 第三步:定义目录复制任务,将private-keys完整复制到build输出目录的对应位置,添加如下目标:
copy_to_directory(
    name = "copy_private_keys",
    srcs = PRIVATE_KEYS,
    root_dir = "private-keys",
    out = "build/private-keys",
)
  • 第四步:将复制任务加入到镜像的依赖中,确保运行/打包时会先执行复制操作,修改nodejs_image的data字段,添加刚才定义的复制目标:
nodejs_image(
    name = "my-service",
    data = [
        ":compile_ts",
        ":copy_private_keys", # 新增这行
        "@npm//source-map-support",
    ] + _mappings,
    # 其余原有配置保持不变
)
  • 额外说明:当前贴出的配置里重复定义了两次名为compile_ts的ts_project目标,属于笔误,请删除重复的那一段。

调整完成后重新执行构建命令,private-keys目录就会被自动复制到build目录下,运行时就能正常读取对应密钥文件了。

内容的提问来源于stack exchange,提问作者Susitha Ravinda Senarath

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 12:30:01