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

无法将Workflow输入变量传递至Action的问题求助

解决GitHub Action邮件步骤无法获取workflow_dispatch输入参数的问题

以下是三种可靠的解决方案,任选其一即可:

方法1:直接引用github.event.inputs上下文

你之前的邮件步骤存在语法错误,修正后可直接使用${{ github.event.inputs.site_name }}。注意用双引号或多行字符串包裹body内容,避免解析异常:

- name: Send mail
  if: always()
  uses: dawidd6/action-send-mail@v3
  with:
    server_address: smtp_server.mydomain.com
    subject: ${{ github.repository }} deployment status ${{ job.status }}
    to: me.mydomain.com
    from: repo@mydomain.com
    body: "${{ github.event.inputs.site_name }} has status of ${{ job.status }}"

若需多行内容,改用管道符定义:

body: |
  部署站点:${{ github.event.inputs.site_name }}
  部署结果:${{ job.status }}

方法2:通过步骤输出变量传递

在部署步骤中将参数写入步骤输出,后续邮件步骤读取该输出:

steps:
  - run: |
      site_name="${{ github.event.inputs.site_name }}"
      ansible-playbook playbook1.yml -e "site_name=$site_name"
      ansible-playbook playbook2.yml -e "site_name=$site_name"
      ansible-playbook playbook3.yml -e "site_name=$site_name"
      # 将参数写入步骤输出
      echo "site_name=$site_name" >> $GITHUB_OUTPUT
    id: site_deployment
    shell: bash
  - name: Send mail
    if: always()
    uses: dawidd6/action-send-mail@v3
    with:
      server_address: smtp_server.mydomain.com
      subject: ${{ github.repository }} deployment status ${{ job.status }}
      to: me.mydomain.com
      from: repo@mydomain.com
      body: "${{ steps.site_deployment.outputs.site_name }} has status of ${{ job.status }}"

方法3:使用Job级环境变量

将输入参数设为整个Job的环境变量,所有步骤均可直接访问:

jobs:
  deploy_new_website:
    runs-on: self-hosted
    # 定义Job级环境变量
    env:
      SITE_NAME: ${{ github.event.inputs.site_name }}
    steps:
      - run: |
          # 直接使用环境变量
          ansible-playbook playbook1.yml -e "site_name=$SITE_NAME"
          ansible-playbook playbook2.yml -e "site_name=$SITE_NAME"
          ansible-playbook playbook3.yml -e "site_name=$SITE_NAME"
        id: site_deployment
        shell: bash
      - name: Send mail
        if: always()
        uses: dawidd6/action-send-mail@v3
        with:
          server_address: smtp_server.mydomain.com
          subject: ${{ github.repository }} deployment status ${{ job.status }}
          to: me.mydomain.com
          from: repo@mydomain.com
          body: "${{ env.SITE_NAME }} has status of ${{ job.status }}"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 16:35:34