簡體   English   中英

如何根據整個 github 操作工作流的成功或失敗設置 github 分支保護規則?

[英]How do I set a github branch protection rule based on the success or failure of an entire github actions workflow?

我正在嘗試根據 github 操作工作流的成功或失敗設置 github 分支保護規則。

您可以在此處查看工作流程:

https://github.com/apostrophecms/apostrophe/blob/main/.github/workflows/main.yml

工作流通過了,我什至有一個工作徽章,但我無法設置一個分支保護規則,要求它作為狀態檢查通過。

可以根據矩陣中的任何一個單獨構建設置分支保護規則,但我不想單獨設置所有這些並在我的矩陣規則更改時跟蹤它們。

正如您從屏幕截圖中看到的,我無法選擇作業的名稱“build”(盡管我可以選擇任何子構建),而且我也無法選擇“tests”,作業的名稱整個工作流程(如果我使用大寫字母 t,它不會改變)。

我錯過了什么? 謝謝你的幫助!

屏幕截圖一:我可以選擇一個子構建,但不能選擇整個構建作業。

我可以選擇一個子構建,但不能選擇整個構建作業

屏幕截圖二:我根本無法選擇整個“測試”工作流程的名稱。

我根本無法選擇整個“測試”工作流程的名稱

在這種情況下,您只有一個帶有矩陣的作業。 這意味着您將以 9 種可能性結束(3 個節點選項 × 3 個 MongoDB 選項)。 其中每一項都被視為單獨的狀態檢查,並且可以單獨強制啟用或禁用。 這樣您就可以添加新選項,而無需預先強制執行。

如果您希望這些工作中的每一個都通過,那么您需要選擇 9 個工作中的每一個並根據需要標記它們。

有一個技巧可以在工作流中添加一個步驟,以將矩陣中的所有作業收集到一張支票:

  tests:
    runs-on: ubuntu-latest
    needs: build
    if: always()
    steps:
      - name: All tests ok
        if: ${{ !(contains(needs.*.result, 'failure')) }}
        run: exit 0
      - name: Some tests failed
        if: ${{ contains(needs.*.result, 'failure') }}
        run: exit 1

if: always()必須收集失敗的任務,否則 PR 永遠不會得到適當的狀態檢查。 此外,這是您支付的額外步驟(如果您使用付費計划)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM