Github Actions - re-run
re-run
re-run은 같은 커밋(SHA), 같은 워크플로우 정의로 실패, 취소(혹은 조건에 의해 스킵)된 잡을 다시 돌려보는 것이다.
워크플로우를 새로 돌리는게 아니라 같은 Run ID로 시도 번호만 증가하게 된다.
먼저 re-run하기 위해서 워크플로우를 하나 생성해보자.
그리고 push 이벤트에 반응 하는 workflow를 만들어주자.
이제 job을 만들텐데 job은 현재 워크플로우가 보고 있는 커밋을 기준으로 데이터를 가져오는 checkout을 사용해주도록 하자
이때는 run이 아니라 uses를 사용하고
use에 actions/checkout@v4를 사용한다.
이건 내 저장소의 파일들을 러너가 활동하는 환경(빌드 머신)으로 내려받는다라는 명령어이다.
깃허브 액션이 실행될 때 러너가 활동하는 환경은 아예 아무것도 없는 컴퓨터라고 생각하면 된다.
이 때 actions/checkout@v4를 해야 코드, Dockerfile, tests, package.json 같은 파일들이 실제 디스크에 생기게 된다.
이러고 다음 steps에서 이렇게 README.md 파일이 러너에 떨어진다는 가정하게 읽을 수 있게
cat 명령어로 파일을 읽어보자.
이제 commit 하고 push 한 다음에
일단 정상적으로
workflow가 실행된건 볼 수 있다.
이제 상단에 Re-run all jobs라는 항목을 눌러보면
아래 팝업이 나오고
여기서 Re-run jobs를 누르면
이렇게 같은 workflow의 회차에서 계속 재시도를 진행한다
만약에 README.md파일을 수정하고
commit 하고 push 하면
다시 workflow가 돌아가고
그 결과가 달라진것을 볼 수 있다.
그리고 보면 commit을 해서 레포지터리의 README.md의 파일 내용은 달라졌으나 이전에 했던 workflow의 실행을 다시 re-run 한다면
그전에 README.md의 데이터를 가지고 돌리는 것을 볼 수 있다.
이는 checkout 을 하는건 그 때 그 당시의 커밋을 기준으로 workflow를 돌리기 때문에 해당 워크 플로우를 re-run하는 경우는 새로 커밋하는 데이터와는 부딛히지 않는다.