실패한 경우 GitHub Actions 워크플로 다시 시작
때로는 시간 초과이거나 테스트할 사이트에서 잘못 구성된 것일 수 있습니다. 도구를 테스트하기 위해 많은 변경을 수행하므로 이 문제는 정확히 내 doctor 빌드/테스트/릴리스 GitHub Actions 작업 흐름의 경우입니다. 예약된 실행 중에 때때로 발생합니다. 내 환경에서 워크플로가 실패합니다. 해결 방법은 워크플로를 다시 시작하고 새로 시작해야 한다고 지정하는 것입니다.
이 프로세스는 무언가doctor가 지원합니다. 내가 해야 할 일은 워크플로를 수동으로 다시 시작하는 것뿐이었습니다. 더 쉽게 하기 위해 이 프로세스를 자동화하고 싶었습니다.
워크플로 다시 시작
workflow_dispatch
이벤트 트리거를 사용하여 GitHub Actions 워크플로를 다시 시작할 수 있습니다.먼저
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
Reference
이 문제에 관하여(실패한 경우 GitHub Actions 워크플로 다시 시작), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/estruyf/restart-your-github-actions-workflow-when-something-failed-452d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)