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

如何在GitHub Actions中通过环境变量传递.pem密钥避免YAML解析问题

解决GitHub Actions传递PEM密钥作为环境变量的YAML解析错误

问题根源在于PEM密钥包含换行符和---开头/结尾的行,YAML解析器会把---误判为文档分隔符,即使使用双引号包裹也无法完全规避多行内容的解析问题。以下是几种可行的解决方法:

方法1:使用YAML块标量语法保留多行格式

直接在环境变量赋值时使用YAML的|块标量符号,它会完整保留密钥的换行和格式,避免解析错误:

- name: Do Certain Step
  run: |
    # 直接通过$GITHUBAPP_KEY调用环境变量即可
    Insert fancy command here
  env:
    GITHUBAPP_KEY: |
      ${{ secrets.GITHUBAPP_KEY }}

方法2:对PEM密钥进行Base64编码后传递

  1. 本地将PEM密钥文件编码为Base64字符串:
    base64 -i your-private-key.pem > encoded-key.txt
    
  2. 将encoded-key.txt中的内容存入GitHub Secrets(命名为GITHUBAPP_KEY_B64)
  3. 工作流中解码后使用:
    - name: Do Certain Step
      run: |
        # 解码并写入文件
        echo "$GITHUBAPP_KEY_B64" | base64 -d > private-key.pem
        # 赋予文件必要权限
        chmod 600 private-key.pem
        # 执行后续命令
        Insert fancy command here
      env:
        GITHUBAPP_KEY_B64: ${{ secrets.GITHUBAPP_KEY_B64 }}
    

方法3:直接将密钥写入文件(绕过环境变量传递)

如果你的命令需要读取密钥文件而非环境变量,可以直接在run步骤中将密钥写入文件,避免环境变量的解析问题:

- name: Do Certain Step
  run: |
    # 将密钥写入文件
    echo "${{ secrets.GITHUBAPP_KEY }}" > private-key.pem
    # 设置文件权限(避免权限过高报错)
    chmod 600 private-key.pem
    # 执行依赖密钥文件的命令
    Insert fancy command here

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 14:05:01