실패한 경우 GitHub Actions 워크플로 다시 시작

때때로 GitHub Actions 워크플로가 실패하는 경우가 있습니다. 이런 일이 발생하면 다시 시작하기 전에 정확히 무엇이 잘못되었는지 확인하는 것이 적절합니다.

때로는 시간 초과이거나 테스트할 사이트에서 잘못 구성된 것일 수 있습니다. 도구를 테스트하기 위해 많은 변경을 수행하므로 이 문제는 정확히 내 doctor 빌드/테스트/릴리스 GitHub Actions 작업 흐름의 경우입니다. 예약된 실행 중에 때때로 발생합니다. 내 환경에서 워크플로가 실패합니다. 해결 방법은 워크플로를 다시 시작하고 새로 시작해야 한다고 지정하는 것입니다.

이 프로세스는 무언가doctor가 지원합니다. 내가 해야 할 일은 워크플로를 수동으로 다시 시작하는 것뿐이었습니다. 더 쉽게 하기 위해 이 프로세스를 자동화하고 싶었습니다.

워크플로 다시 시작


workflow_dispatch 이벤트 트리거를 사용하여 GitHub Actions 워크플로를 다시 시작할 수 있습니다.

Info: Events that trigger workflows



먼저 workflow_dispatch 이벤트 트리거를 GitHub Actions 워크플로에 추가해야 합니다.

Info: Check out the doctor flow here: release.yml on GitHub



해당 트리거가 설정되면 장애가 발생하여 흐름을 다시 시작하는 작업을 실행할 작업을 구현하기만 하면 됩니다. 작업 자체는 워크플로를 트리거하는 GitHub API에 대한 API 호출에 지나지 않습니다.

API URL은 https://api.github.com/repos/{user}/{repo}/actions/workflows/{workflow-id}/dispatches입니다.

Important: you can find the workflow its ID by navigating to the following URL https://api.github.com/repos/estruyf/doctor/actions/workflows.





다시 시작 프로세스 자체의 경우 워크플로가 일정을 통해 실행되고 내 빌드 중 하나에서 실패했을 때만 트리거되는 작업을 사용합니다.

##################################
### Run when a schedule failed ###
##################################
restart_when_failed:
  name: Restarts the scheduled run when it failed
  runs-on: ubuntu-latest
  if: github.event_name == 'schedule' && failure()
  needs: [build, build_pwsh, build_cmd]
  steps:
    - name: Retry the workflow
      run: |
        curl -i \
        -X POST \
        -H "Accept: application/vnd.github.v3+json" \
        -H "Authorization: token ${{ secrets.ACTIONS_PAT }}" \
        https://api.github.com/repos/estruyf/doctor/actions/workflows/6155745/dispatches \
        -d '{"ref": "${{ github.ref }}" }'


코드 블록에는 두 개의 변수가 사용 중입니다. 하나는 실행 중인 분기 참조입니다. 오른쪽 분기에서 흐름을 다시 시작하려면 이 값이 필요합니다.

다른 하나는 secrets.ACTIONS_PAT입니다. 이 비밀은 workflow 범위의 개인 액세스 토큰입니다.



프로젝트 비밀에서 PAT를 구성합니다. 일단 설정되면 이제 흐름이 자동으로 다시 시작될 수 있습니다.



이것이 프로세스를 완전히 자동화하는 데 도움이 되기를 바랍니다.

원래 게시된 문서eliostruyf.com

좋은 웹페이지 즐겨찾기