GitHub复合Action YAML解析错误排查及自定义文件名调用咨询
问题排查与解答
一、YAML解析错误「While parsing a block mapping, did not find expected key」排查
1. 调用端workflow YAML语法错误
原文件存在两个核心语法问题:
- 缺少
on关键字:workflow_dispatch必须隶属于on块,而非直接作为顶级属性 workflow_dispatch缩进错误,它应与name同级,而非作为name的子项
修正后的调用端workflow:
--- name: RECYCLE_dev on: workflow_dispatch: inputs: ENVIRONMENT: type: choice options: - dev - qa - citest - cso - prod jobs: SEND_NOTIFICATION: runs-on: 'windows-latest' steps: - name: Send email notification uses: mybank/betech/emailnotification@mm365 with: envName: "${{ inputs.ENVIRONMENT }}" EmailList: "knowyrtech@mybank.com" comments: "These comments are passed to composite actions"
2. 复合Action的action.yml字符串解析错误
报错指向的第40-41行,是PowerShell命令的引号嵌套混乱导致YAML解析失败:原命令中-sAccordingToEnvironment '"Recycle completed for "${{inputs.envName}}" environment"'的多层引号嵌套触发了YAML的解析歧义。
修正后的run步骤:
runs: using: composite steps: - name: Trigger Email Notification run: | set-location "${{ github.workspace }}\betech\scripts" Write-Host "./ApprovalActions.ps1 -sEnv ""${{inputs.envName}}"" -sApprovers ""${{ inputs.EmailList }}"" -sAccordingToEnvironment ""Recycle completed for ${{inputs.envName}} environment""" ./ApprovalActions.ps1 -sEnv "${{inputs.envName}}" -sApprovers "${{ inputs.EmailList }}" -sAccordingToEnvironment "Recycle completed for ${{inputs.envName}} environment"
注:在YAML多行字符串中,用双引号转义内部双引号,同时简化参数的引号结构,避免解析冲突
二、能否调用非action.yml命名的复合Action?
可以。GitHub Actions支持指定自定义命名的Action清单文件,只需在uses字段中明确标注文件路径及名称:
- 引用仓库中自定义命名的Action:
uses: mybank/betech/emailnotification/custom-action.yml@mm365 - 引用同一仓库内本地的自定义Action:
uses: ./path/to/your-custom-action.yml
内容的提问来源于stack exchange,提问作者Ashar
相关产品推荐
相关产品推荐

