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

GitHub Enterprise带附件邮件发送及workflow_dispatch输入限制咨询

GitHub Enterprise下的两个Actions问题解决办法

一、发送带附件和报告路径的邮件

你在GitHub Enterprise里无法使用dawidd6/action-send-mail@v3,大概率是因为GHE无法访问外部GitHub公共仓库的动作。可以用以下两种方案解决:

方案1:将动作镜像到自己的GHE仓库

  1. 把dawidd6/action-send-mail仓库fork到你的GitHub Enterprise实例中
  2. 在工作流里引用自己GHE仓库的动作路径,同时配置附件参数:
- name: Send mail with attachments
  uses: [你的GHE用户名]/action-send-mail@v3
  with:
    server_address: smtp.yourcompany.com
    server_port: 587
    username: ${{ secrets.MAIL_USER }}
    password: ${{ secrets.MAIL_PWD }}
    subject: 构建报告通知
    body: 请查收附件中的构建报告
    to: dev-team@yourcompany.com
    from: GitHub Actions <actions@yourcompany.com>
    attachments: ./build/report.pdf, ./logs/run.log  # 多个附件用逗号分隔

注意:确保报告文件在当前工作流的运行目录中存在,若报告是之前步骤生成的,同job内直接写相对路径即可,跨job则需先通过actions/upload-artifact上传再下载。

方案2:用Shell命令直接发送(无需第三方动作)

通过安装邮件客户端(如mutt),用命令行发送邮件,完全不依赖外部动作:

- name: 安装mutt邮件客户端
  run: sudo apt-get update && sudo apt-get install -y mutt

- name: 发送带附件的邮件
  run: |
    echo "本次构建的报告已生成,详情见附件" | mutt -s "构建完成通知" \
      -a ./build/report.pdf \
      -- dev-team@yourcompany.com

如果是Windows runner,可改用PowerShell的Send-MailMessage命令,参数逻辑类似。

二、workflow_dispatch输入项仅显示10个的问题

GitHub Enterprise和公共GitHub一致,workflow_dispatch的inputs字段最多支持10个输入项,这是官方硬限制。解决办法是合并输入项:

方法1:用逗号分隔合并同类输入

把多个同类型的输入(比如多个报告路径)合并成一个输入,在工作流里拆分处理:

on:
  workflow_dispatch:
    inputs:
      report_paths:
        description: "报告路径(多个用逗号分隔)"
        required: true
        default: "./build/report1.pdf,./build/report2.pdf"

然后在步骤中拆分路径:

- name: 处理报告路径
  run: |
    IFS=',' read -ra PATH_LIST <<< "${{ github.event.inputs.report_paths }}"
    for path in "${PATH_LIST[@]}"; do
      echo "准备处理报告:$path"
      # 这里添加处理每个报告的逻辑
    done

方法2:用JSON格式打包多个参数

如果输入项类型多样(路径、环境、收件人等),可以把所有参数打包成一个JSON字符串,在工作流里用jq解析:

on:
  workflow_dispatch:
    inputs:
      workflow_config:
        description: "工作流配置(JSON格式)"
        required: true
        default: '{"report_path": "./build/report.pdf", "deploy_env": "prod", "notify_users": ["user1@yourcompany.com", "user2@yourcompany.com"]}'

然后在步骤中解析参数:

- name: 解析配置参数
  run: |
    REPORT_PATH=$(echo "${{ github.event.inputs.workflow_config }}" | jq -r '.report_path')
    DEPLOY_ENV=$(echo "${{ github.event.inputs.workflow_config }}" | jq -r '.deploy_env')
    NOTIFY_USERS=$(echo "${{ github.event.inputs.workflow_config }}" | jq -r '.notify_users | join(",")')
    
    echo "报告路径:$REPORT_PATH"
    echo "部署环境:$DEPLOY_ENV"
    echo "通知用户:$NOTIFY_USERS"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 22:43:09