簡體   English   中英

如何在 GitHub Actions 中失敗時重新運行 docker 容器,但工作流仍然通過?

[英]How to rerun a docker container on failure in GitHub Actions, but still have the workflow pass?

我有一個測試套件,它有點不穩定,有時會失敗,但如果重新運行它會通過。 只要在 GitHub 上的存儲庫上發生推送,就會運行此測試。

到目前為止,通過讓我的工作流程的一部分檢查第一次嘗試是否失敗,然后再次運行相同的命令,我已經讓測試自動運行第二次。 這是一個工作流文件,說明了我的意思:

  jobs:
    run_tests:
      steps:

        - name: Run Test
        id: first-attempt
        run: docker run test

        - name: Retry again on failure
        id: second-attempt
        if: ${{ failure() }}
        run: docker run test

如您所見,它運行第一次嘗試,如果失敗,則再次運行。 這是可行的,但問題是如果第二次嘗試成功,測試狀態仍然是“失敗”,因為第一次嘗試失敗。

所以我想知道是否有更優雅的方法來解決這個問題,比如“重試”選項。 或者至少,如果有一種方法可以在第二次嘗試通過時將操作的狀態顯式設置為“成功”。 也許通過執行以下操作:

        - name: Check on failures
        if: steps.first_attempt.outcome != 'fail' && steps.second_attempt.outcome != 'success'
        set_status: "Success"

謝謝你的幫助

看起來雷楊的答案大部分是正確的,但需要添加使用if: steps.first_attempt.outcome != 'success'而不是if: always()

 jobs:
   run_tests:
     steps:

       - name: Run Test
       id: first-attempt
       run: docker run test
       continue-on-error: true

       - name: Retry again on failure
       id: second-attempt
       if: steps.first_attempt.outcome != 'success'
       run: docker run test

感謝您的幫助

暫無
暫無

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

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