GitHub Actions에서 PR에 동일한 종류의 주석을 Upsert로 추가하는 방법
만약, 코멘트 내용을 의식하지 않고 PR synchronize 이벤트 등 트리거로 워크플로우가 달릴 때마다 코멘트를 투고하는 것과 같은 유사한 코멘트가 몇개나 투고되어 버려 PR을 더럽혀 버리게 되는 것이 상상할 수 있을까 생각한다. 에서 이것을 Insert가 아니라 Upsert 하려면 GitHub API - Review Comments 로 코멘트 일람을 취득해, 같은 코멘트에 대해서 Update 하면 된다. 저자도 처음 그걸로 하려고 했다. 그렇지만, GitHub Marketplace를 들여다보면 이미 하고 싶은 것을 실현해 주는 멋진 Action이 발견되었다. 그것이 Sticky Pull Request Comment 그러므로, 이하, 이 Action 을 사용해 PR 코멘트를 Upsert 하는 방법을 간단히 설명한다.
1. 주석 문자열을 직접 전달하는 방법
marocchino/sticky-pull-request-comment@v1
액션의 message
input에 캐릭터 라인을 건네준다. 여기에서는 이전의 step로 코멘트 캐릭터 라인을 작성해 set-output
그리고 그 후의 step에 공유하고 있다. 또, header
에 건네주는 캐릭터 라인에 의해 그 코멘트를 식별한다. 같은 header의 코멘트이면, 2회째 이후는 Upsert로 갱신된다. 만약 별도의 코멘트로 나누고 싶으면, header의 내용을 바꿀 필요가 있다. - name: "Make PR comment body"
id: make-pr-comment
run: |
now=$(date "+%s")
pr-comment-body="It's ${now}"
echo ::set-output name=result::${pr-comment-body}
- name: "PR comment on Updating CFn Change Set"
uses: marocchino/sticky-pull-request-comment@v1
with:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
header: header-of-comment
message: ${{ steps.make-pr-comment.outputs.result }}
2. 코멘트 캐릭터 라인을 파일로부터 건네주는 방법
1과 달리 2는 주석 문자열을 파일에서 전달하는 접근법입니다. 크기가 큰 문자열이나, JSON이나 YAML등의 문자열을 Pretty-print, 즉 취득했을 때의 상태를 유지해 성형 표시시키고 싶은 경우에는 파일로부터 건네주는 것이 좋을까 생각한다.
marocchino/sticky-pull-request-comment@v1
액션의 path
input 에 파일의 패스 건네준다.다음 샘플은 AWS CloudFormation의 Change Set describe 내용(JSON)을 파일에 떨어뜨리고 다음 단계에서 PR comment로 게시하고 있다.
- name: "Make PR comment body"
id: make-pr-comment
run: |
pr_comment_body=''
changeset_output=$(aws cloudformation describe-change-set --change-set-name ${changeset_id})
pr_comment_body=$(cat << EOF
${pr_comment_body}
<details><summary><code>${changeset_name}</code></summary>
\`\`\`json
${changeset_output}
\`\`\`
</details>
EOF
pr_comment_body_file=/tmp/pr_comment_body.txt
cat << EOF > ${pr_comment_body_file}
<strong>CFn Change Set</strong>
${pr_comment_body}
EOF
echo ::set-output name=result::${pr_comment_body_file}
- name: "PR comment"
if: steps.make-pr-comment.outputs.result
uses: marocchino/sticky-pull-request-comment@v1
with:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
header: header-of-comment
path: ${{ steps.make-pr-comment.outputs.result }}
실행 결과 샘플
라고 하는 것으로, 결론은, GitHub API - Review Comments 로 코멘트 일람을 취득해, 같은 코멘트를 찾아 Update해도 되지만, Sticky Pull Request Comment 를 사용하면 편하게에 할 수 있어・・・였습니다.
Reference
이 문제에 관하여(GitHub Actions에서 PR에 동일한 종류의 주석을 Upsert로 추가하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yokawasa/items/f7fee20fd4a4220f25f8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)