如何在除master以外的分支上运行GitHub Action?

84

我在GitHub上有一个仓库,想要创建一个Action来构建Docker镜像并将其推送到DockerHub。我知道如何做,但如果我在除master外的分支中创建Action,则GitHub不会运行它。

这是已知的问题(工作流文件只能从主分支中获取?)。

有什么解决办法吗?


相关链接:https://github.com/orgs/community/discussions/25746#discussioncomment-3249051 - undefined
4个回答

37
根据官方的GitHub Actions文档(触发工作流):
以下步骤会触发工作流程运行:
1. 仓库中发生事件,导致事件Webhook具有关联的提交SHA和Git引用。 2. 在相关的提交SHA或Git引用处搜索您的存储库中的.github/workflows目录以查找工作流文件。这些工作流文件必须存在于该提交SHA或Git引用中才能被考虑。 例如,如果事件发生在特定的存储库分支上,则工作流文件必须存在于该分支上的存储库中。 3. 检查该提交SHA和Git引用的工作流文件,并为任何具有与触发事件匹配的on:值的工作流程触发新的工作流程运行。 工作流在您的存储库代码上以相同的提交SHA和Git引用运行。当工作流运行时,GitHub会在运行环境中设置GITHUB_SHA(提交SHA)和GITHUB_REF(Git引用)环境变量。有关更多信息,请参见“使用环境变量”。
因此,为了测试工作流程,我们需要在创建的分支中执行 git 操作(例如进行 push)。

16
如果事件发生在特定的代码库分支上,则工作流程文件必须存在于该分支的代码库中。 - lenz

9
on:
  push:
    branches:
      - "YOUR-TEST-BRANCH"
  pull_request:
    branches:
      - "main" 
    paths:
      - ".github/workflows/test.yaml"

4

根据我的经验(通过试错得出)

  1. 在 .github/workflows 文件夹中创建一个空的 YAML 文件
  2. 创建一个 PR 将该文件移动到您的分支
  3. 在您的分支中,您现在可以进行必要的编辑以使 GH Action 运行起来。注意:除了更新 YAML 外,您还需要进行一些更改才能实际地触发工作流程(我使用以下触发器,注意不包括 '.github' 路径触发器)。
on:
  push:
    paths:
      - 'path/to/your/code/**'

在 .github/workflows 文件夹中创建一个空的 YAML 文件。这对于没有直接检入默认分支权限的人来说是行不通的(当默认分支受保护时,这种情况大多数情况下都是如此)。 - sjethvani
11
请创建一个 Pull Request 将这个文件移动到你的分支上,这句话很难理解。无论是否使用 PR,都不能在分支之间移动文件。 - MEMark
不需要创建一个PR,你可以在主/主分支中创建一个空的工作流程,然后在另一个分支中编辑相同的工作流程。然后当你运行时,你可以选择在哪个分支上运行它。 - Martino

-2

如果你也将 workflow_dispatch: 添加为一个触发器,会有帮助吗?

在这种情况下,你将能够在选定的分支上手动运行工作流程,从 GitHub>Actions 标签页中进行。


2
在将PR合并到主分支之前,这是无效的,这就失去了意义。 - undefined
1
这正是问题所在:工作流在主分支之前不会显示在操作选项卡上。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接