Github Actions:如何运行通过工作流程_事件事件在非主分支上创建的工作流程?

时间:2020-08-11 16:08:00

标签: github-actions

有人可以帮助我了解Github动作标签的行为吗?作为Actions在第三方仓库上工作的新手,我希望能够在分支上创建一个动作,并在 workflow_dispatch 事件上执行它。我没有成功完成此操作,但是发现了以下内容:

  • “操作”选项卡将根据与上次执行的工作流相关的分支更改在其上找到工作流和操作代码的分支。例如如果使用运行工作流按钮从“操作”选项卡中执行了某些工作流,并且“ 使用工作流来自” 下拉菜单设置为某个分支,分支-A,则< “操作”标签左侧的em>“工作流程” 面板将取自Branch-A的 .github / 版本。
  • 此工作流程具有工作流程_调度事件触发器。文本不会随分支更改。它似乎取自 master 。或者,它可以从最后一组结果中获取。我尚未对此进行测试,因为这两种方法均无济于事。

解决方法是在push事件上执行,虽然可以,但是考虑到Github的高标准设计,这似乎不成立。

以上听起来是否a)关于权利,b)您以哪种方式看待它,而不是最佳行为?还是有更好的方法来构建和测试动作?

2 个答案:

答案 0 :(得分:4)

您可以使用 Github CLI 从命令行在功能分支中运行仍在开发中的工作流。 documentation 说:

<块引用>

在存储库默认分支以外的分支上运行工作流 分支,使用 --ref 标志。

gh workflow run workflow --ref branch-name

要添加输入参数,请像这样运行:

gh workflow run workflow --ref branch-name -f myparameter=myvalue

答案 1 :(得分:3)

  • a) 看起来像你描述的那样工作
  • b) 当您在非主分支上运行工作流并且在此分支上工作流名称更改为新内容时,文本似乎发生了变化...

这个工作流名称的变化真的很奇怪。我找不到任何描述此行为的文档。

测试工作流程

在测试之前需要做的一件事是将具有相同文件名的虚拟工作流实际添加到 main/master。没有此工作流将不会出现在操作选项卡中。

如何测试:

  1. 创建新的测试存储库。
  2. 推送虚拟 Readme.md 和一些虚拟 .github/workflows/workflow.yml 进行测试:
name: Test run v1

on:
  workflow_dispatch:

jobs:
  test:
    runs-on: ubuntu-18.04
    steps:
      - name: Show environment v1
        run: env | grep ^GITHUB
      - name: Show ref v1
        run: echo "===============> Version from $GITHUB_REF"
  1. 推送到主
  2. 运行操作

测试分支运行:

  1. test-branch 创建新分支 main
  2. 修改工作流文件 .github/workflows/workflow.yml
name: Test run v2

on:
  workflow_dispatch:

jobs:
  test:
    runs-on: ubuntu-18.04
    steps:
      - name: Show environment v2
        run: env | grep ^GITHUB
      - name: Show ref v2
        run: echo "===============> Version from $GITHUB_REF"
  1. 提交并推送到 test-branch
  2. 转到 Actions,选择 Test run v1 并在 Use workflow from 设置为 test-branch 的情况下运行工作流。

您应该看到与 main 工作流版本不同的步骤名称和不同的 GITHUB_REF

奇怪的是,在 test-branch 上运行工作流后,我以前的工作流(从 main 分支)以某种方式更改了名称。

enter image description here

相关问题