2

我正在尝试使用 workflow_dispatch 事件以编程方式运行 github 工作流。

master 分支上有两个工作流。发布矩阵和发布单曲。

单个工作流程看起来像这样,并且工作正常。

发布-single.yaml

name: Release Single

on:
  workflow_dispatch:
    inputs:
      type:
        description: 'Type'
        required: true
      version:
        description: 'Version'
        required: true
      label:
        description: 'Label'
        required: false
      tag:
        description: 'Tag'
        required: true

jobs:
  [...]

它显示在 UI 中并且可以手动触发:

在此处输入图像描述

矩阵工作流有一个创建 workflow_dispatch 事件的步骤(我尝试了不同的解决方案,如下所示):

发布矩阵.yaml

  - uses: actions/github-script@v4
    with:
      github-token: ${{ github.token }}
      debug: true
      script: |
        const workflow = await github.actions.createWorkflowDispatch({
            owner: "owner_name",
            repo: "repo_name",
            workflow_id: "release-single.yaml",
            ref: "${{ github.ref }}",
            inputs: {
              type: "${{ matrix.type }}",
              version: "${{ matrix.version }}",
              label: "${{ matrix.label }}",
              tag: "${{ matrix.tag }}"
            }
        });
        console.log(workflow);

  - uses: benc-uk/workflow-dispatch@v1.1.0
    with:
      workflow: Release Single
      repo: ${{ github.repository }}
      token: ${{ github.token }}
      inputs: '{ "type": "${{ matrix.type }}", "version": "${{ matrix.version }}", "label": "${{ matrix.label }}", "tag": "${{ matrix.tag }}" }'

当矩阵工作流运行时,它实际上成功地执行了这些步骤(两种解决方案都以 204 响应,正如文档所述),但 github UI 中没有显示任何工作流运行。

使用操作/github-script 和 octokit 的结果 在此处输入图像描述

结果使用 benc-uk/workflow-dispatch 在此处输入图像描述

终于来到我的问题:我错过了什么或做错了吗?这可能是一个错误吗?

4

1 回答 1

1

您必须由实际的 github 用户使用个人访问令牌。尽管使用${{ github.token }}204 Created 响应,但实际上它并没有运行工作流。相反,当传递个人访问令牌时,它会给出完全相同的 204 响应,并且工作流会按预期运行。

感谢本杰明的深层链接:https ://docs.github.com/en/actions/reference/events-that-trigger-workflows#triggering-new-workflows-using-a-personal-access-token

使用个人访问令牌的缺点是,工作流总是由实际用户触发。

在此处输入图像描述

或者,可以创建一个 github 应用程序并生成一个访问令牌。然后它看起来像这样:

在此处输入图像描述

于 2021-09-16T07:16:16.820 回答