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

GitHub Actions通过API创建Release时变量替换失败求助

解决GitHub Workflow中curl命令的变量替换问题

问题原因

你遇到的bad substitution错误,源于两个核心问题:

  1. GitHub Secrets引用语法错误:必须使用Workflow上下文变量的${{ secrets.GITHUB_TOKEN }}格式,而非${ secrets.GITHUB_TOKEN }——后者的空格和单大括号会被shell判定为无效变量名,触发替换错误。
  2. 多行run命令写法不规范:原写法的转义换行容易引发解析异常,改用|定义多行脚本更稳妥。

修正后的Workflow配置

name: make release

on: 
  workflow_dispatch:

jobs:
  try-to-create-a-tag:
    runs-on: ubuntu-latest
      
    steps:
      - name: Create release
        run: |
          curl \
            -X POST \
            -H "Accept:application/vnd.github+json" \
            -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
            https://api.github.com/repos/.../releases \
            -d '{"tag_name":"tag_test11","target_commitish":"main","name":"tag_test11","body":"Description of the release","draft":false,"prerelease":false,"generate_release_notes":false}'

关键修正说明

  • 用run: |定义多行shell脚本,避免每行转义带来的解析风险,同时提升代码可读性。
  • 通过${{ secrets.GITHUB_TOKEN }}正确引用GitHub Secrets,这是Workflow上下文变量的标准语法,shell会自动替换为实际的token值。
  • Authorization头中token后添加空格,符合GitHub API的规范认证格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 08:45:28