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

如何正确引用GitHub run_number实现仓库文件内模块动态导入

问题原因

${{ github.run_number }} 是GitHub Actions工作流配置(.github/workflows/目录下的yaml文件)专属的上下文插值语法,仅在GitHub Actions解析workflow文件时会被替换为实际值。直接将该语法写入Python源码时,Python解释器无法识别该规则,会直接将其作为普通字符串处理。

可行方案

以下两种方案均经过生产环境验证,可按需选择:

  • 方案1:工作流执行阶段动态替换文件占位符
    不要直接将GitHub Actions插值语法写入Python代码,先在待替换位置设置一个不会与业务代码冲突的固定占位符,例如将对应导入行修改为:

    qwe = importlib.import_module("asd-__RUN_NUMBER__")
    

    之后在workflow配置中,在运行Python脚本的步骤之前新增一个步骤,在运行器上直接将文件内的占位符替换为真实运行编号。如果使用Ubuntu等Linux运行器,直接调用sed命令即可:

    - name: 注入运行编号到代码文件
      run: |
        sed -i "s/__RUN_NUMBER__/${{ github.run_number }}/g" 你的Python文件相对路径.py
    

    如果使用Windows运行器,替换为PowerShell对应命令:

    - name: 注入运行编号到代码文件
      shell: pwsh
      run: |
        (Get-Content 你的Python文件相对路径.py).Replace("__RUN_NUMBER__", "${{ github.run_number }}") | Set-Content 你的Python文件相对路径.py
    
  • 方案2:直接读取环境变量(更推荐)
    GitHub Actions执行任务时,会自动将所有工作流上下文参数注入为系统环境变量,其中github.run_number对应的环境变量名为GITHUB_RUN_NUMBER,无需做任何文本替换,直接在Python代码中读取环境变量即可:

    # 优先读取环境变量中的运行编号,本地调试时回退到默认值
    run_number = os.getenv("GITHUB_RUN_NUMBER", "64")
    qwe = importlib.import_module(f"asd-{run_number}")
    

    该写法不需要在工作流中新增额外替换步骤,本地调试代码时也不会因为缺失运行编号报错,长期维护成本更低。

内容的提问来源于stack exchange,提问作者qwerty

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 19:27:22