触发除主分支之外的所有分支的 GitHub Actions,其中唯一的工作流程定义文件是

Rob*_*ger 6 github-actions

我正在尝试构建一个存储库,它允许我为我正在分叉的项目的不同版本构建 Docker 映像。存储库应具有以下布局:

  • main定义工作流的分支,带有触发器,例如:
    on:
       push:
         branches-ignore:
           - main
    
    Run Code Online (Sandbox Code Playgroud) 该工作流程从任何分支构建软件(基本上是mvn clean packagedocker build并且docker push适用于软件的所有版本)
  • 许多software-1.2.3不包含任何.github/workflow文件的分支(将此文件复制到每个分支并在那里维护会很麻烦)

从我迄今为止的研究来看,GitHub Actions 似乎仅在存在工作流定义时运行。但是,我想知道是否有一种方法可以使用网络钩子或其他方法来欺骗系统执行我想要的操作。

我的下一个最佳选择可能是使用workflow_dispatch

Vil*_*989 0

on: push !main行不通,因为 !main 分支需要有这个工作流程。

手动运行工作流程是最容易实施的解决方案。

on:
  workflow_dispatch:
    inputs:
      BRANCH_OF_FORK:
        description: 'branch name, on which this pipeline should run'
        required: true
jobs:
  doSomething:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
        ref: ${{ github.event.inputs.BRANCH_OF_FORK }}

      - run: docker build something something
Run Code Online (Sandbox Code Playgroud)

有一个on:fork事件可用于触发运行,但它只能触发该特定分支的 fork 事件,该分支on:fork的工作流程中包含代码。

可以在没有 on-fork 事件的 cron 作业上运行工作流程,但您必须以编程方式选择正确的分支。

steps:
 - id: branch-selector
   run: |
     git clone ${{ github.event.repo.url }} .

     all_branches=`git branch --all | grep -v " main\$" | grep -v "/main\$"`
     correct_branch=`pick_correct_branch.py $all_branches`
     git checkout -b $correct_branch

  - run: docker build something something
Run Code Online (Sandbox Code Playgroud)

pick_correct_branch.py留给读者作为练习来实现。