[英]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.