Github Actions - Issues Comment
이슈와 Pull Request 모두 Comment를 추가할 수 있는데 둘다 모두 이슈형 리소스이기 때문에 두 곳에서 달린 일반 댓글들이 모두 issue_comment이벤트로 들어오게 된다.
이때 issue_comment의 경우는 아래 세개 Activity types에 대해서 트리거 되고 issue와 동일하게 default branch에 workflow가 있을 경우에만 workflow가 실행된다.
이 issue_comment의 경우는 사용방법이 조금 다른데 먼저 기본적으로 name과 이벤트를 등록해보자면
여기 까지는 그냥 아는 것과 같이 작성을 해도 무방하다
이제 jobs 부분이 조금 다른데 말했다 싶이 pull request의 comment인지 issue에 대한 comment인지를 분기처리를 해줘야만 각각의 이슈에 맞는 job을 실행시켜준다.
먼저 우선 각각의 job을 생성해주고(pr과 issue 둘다)
이제 각각의 job의 명칭 아래에 if 를 걸고
이제 이 내부에 조건을 추가해주면 되는데 먼저 issue의 경우는 github 컨텍스트의 event 페이로드 안에 있는 issue 객체의 pull_request 필드를 확인하면 해당 이벤트가 pull_request에 들어 있는지를 확인할 수 있다.
이 형태는 아래와 같은 형태로 되어 있어서 그 내부값이 null인지를 파악하면 pr에서온 이슈 comment인지 issue에서온 comment인지 확인할 수 있게 된다.
github.event = {
"action": "created" | "edited" | "deleted",
"issue": {
"number": 123,
"title": "...",
"body": "...",
// PR의 본문 스레드에서 달린 댓글이면 이 필드가 "존재"
"pull_request": {
"url": "...",
"html_url": "...",
"diff_url": "...",
"patch_url": "..."
}
},
// ← 실제 댓글 내용은 여기!
"comment": {
"id": 456789,
"user": { "login": "alice" },
"body": "이게 댓글 본문입니다",
"created_at": "...",
"updated_at": "..."
},
"repository": { ... },
"sender": { ... }
}
이제 이 분기를 확인할 때 ${{}}의 내부에 github.event.issue.pull_request를 넣어주고 != 로 null 과 비교해주면 PR 댓글에 대해서 job을 실행하고
그 반대는 ==로 비교해주면 된다
이러고 commit & push 해보고
이제 이슈에 comment를 달아보자.
그러면 comment에 의해서 workflow가 trigger된걸 볼 수 있고 내부를 보면
pr에서 활성화 되지 않고 issue의 job에서만 활성화 된걸 볼 수 있다.
만약 pr에서 comment를 붙이면
pr의 job만 활성화 된걸 볼 수 있다.