ci: improve line break check ci to change file automatically
line break ci๊ฐ ์๋์ผ๋ก ํ์ผ์ ๊ฐํ ๋ฌธ์๋ฅผ ์ถ๊ฐํ๊ณ ์ปค๋ฐํ๋๋ก ๋ณ๊ฒฝํฉ๋๋ค.
ํ ์คํธ ๋ ํฌ๋ฅผ ๋ง๋ค์ด์ ํด๋น ๋ณ๊ฒฝ์ด ์ฑ๊ณตํ ์ฌ๋ก ๋จ๊น๋๋ค.
- .github/ ํ์ ๋๋ ํ ๋ฆฌ๊ฐ ํ์ผ ๋ช ์ปจ๋ฒค์ ci์ ๊ฑธ๋ ค์ ์ด๊ฒ์ ์ ์ธํ๋๋ก ๋ณ๊ฒฝํ๋ ์์ ๋ ์ถ๊ฐํฉ๋๋ค
@khg0712 ์๋ ํ์ธ์! ๋ณํฉ์ ์ ํด๋น ๋ณ๊ฒฝ ๊ด๋ จํ์ฌ ์ด์์ง๋ถ๋ค๊ณผ ํจ๊ป ๋ ผ์ํด๋ณด์์ต๋๋ค!. ์ ํฌ ์๊ฐ์๋ ์ด๋ฌํ ์ํฌํ๋ก์ฐ์ ๋ณ๊ฒฝ ์ฐธ์ฌ์๋ค์ ๊ฒฝํ์ ์ด๋ค ์ํฅ์ ์ฃผ๋์ง์ ๋ํด์ ๊ณ ๋ฏผ์ด ์ข ๋ ํ์ํ ๊ฒ ๊ฐ์ต๋๋ค. ์ ํฌ ์๊ฐ์ผ๋ก๋ ๋จ์ํ ์ฒดํฌ ์์ค์ด ์๋๋ผ ์ฐธ์ฌ์๋ฅผ ๋์ ์์ ์ง์ commit์ ํ ๊ฒฝ์ฐ, ์ฐธ์ฌ์๋ฅผ ์ด๋ฅผ ๋ชจ๋ฅธ ์ฒด๋ก ๋ก์ปฌ์์ ๋ค๋ฅธ commit์ ํ์ ๊ฒฝ์ฐ, conflict๋ก ์ด์ด์ง ๊ฐ๋ฅ์ฑ์ด ๋๋ค๊ณ ์ฌ๊ฒจ์ง๋๋ฐ ํน์ ์ด ๋ถ๋ถ์ ๋ํด์ ๊ณ ๋ คํด๋ณด์ จ์๊น์?
@khg0712 ์๋ ํ์ธ์! ๋ณํฉ์ ์ ํด๋น ๋ณ๊ฒฝ ๊ด๋ จํ์ฌ ์ด์์ง๋ถ๋ค๊ณผ ํจ๊ป ๋ ผ์ํด๋ณด์์ต๋๋ค!. ์ ํฌ ์๊ฐ์๋ ์ด๋ฌํ ์ํฌํ๋ก์ฐ์ ๋ณ๊ฒฝ ์ฐธ์ฌ์๋ค์ ๊ฒฝํ์ ์ด๋ค ์ํฅ์ ์ฃผ๋์ง์ ๋ํด์ ๊ณ ๋ฏผ์ด ์ข ๋ ํ์ํ ๊ฒ ๊ฐ์ต๋๋ค. ์ ํฌ ์๊ฐ์ผ๋ก๋ ๋จ์ํ ์ฒดํฌ ์์ค์ด ์๋๋ผ ์ฐธ์ฌ์๋ฅผ ๋์ ์์ ์ง์ commit์ ํ ๊ฒฝ์ฐ, ์ฐธ์ฌ์๋ฅผ ์ด๋ฅผ ๋ชจ๋ฅธ ์ฒด๋ก ๋ก์ปฌ์์ ๋ค๋ฅธ commit์ ํ์ ๊ฒฝ์ฐ, conflict๋ก ์ด์ด์ง ๊ฐ๋ฅ์ฑ์ด ๋๋ค๊ณ ์ฌ๊ฒจ์ง๋๋ฐ ํน์ ์ด ๋ถ๋ถ์ ๋ํด์ ๊ณ ๋ คํด๋ณด์ จ์๊น์?
์ง๋๊ฐ๋ค ์์ด๋์ด๊ฐ ๋ ์ฌ๋ผ์ ๊ฐ๋จํ๊ฒ ๊ณต์ ๋ง ๋๋ ค์~
ํ์ฌ์ฒ๋ผ CI๊ฐ ๋จ์ ์คํจ๋ง ํ์ง ์๊ณ ํ์ผ ๋ ๊ฐํ ๋๋ฝ ์ PR์ ์ฝ๋ฉํธ๋ฅผ ๋จ๊ธฐ๋ ๋ฐฉ์์ผ๋ก ๊ฐ์ ํ๋ฉด Conflict๋ ๋ฐฉ์ง๋๊ณ , ๊ฐํ์ด ์์ ๊ฒฝ์ฐ ์๋ฆผ์ ์ฃผ์ด ์ฐธ์ฌ์ ๊ฒฝํ์ ์กฐ๊ธ ๋ ๋ถ๋๋ฝ๊ฒ ๋ง๋ค ์ ์์ง ์์๊น ํฉ๋๋ค ๐ค
- create a review comment for a pull request ๋ฅผ ์ฐธ๊ณ
- API๋ฅผ ํธ์ถํ ๋
suggestion์body์ ๋จ๊ธฐ๋ฉด ๋ฆฌ๋ทฐ๋ฅผ ๋ณด๊ณ ์์ฝ๊ฒ ์ฆ๊ฐ ๋ฐ์ํ๋๊ฒ๋ ๊ฐ๋ฅํ์ง ์์๊น ์ถ์ด์ ใ ใ
์๋ฅผ ๋ค์ด, ์๋์ ๊ฐ์ด ํ์ผ์ ๋ง์ง๋ง ์ค ๋ฒํธ๋ฅผ ๊ตฌํ๊ณ , ํด๋น ์ค์ ์ฝ๋ฉํธ๋ฅผ ๋ฌ์์ฃผ๋ ๋ฐฉ์์ผ๋ก ํ ์๋ ์์ง ์์๊น ์ถ์์ด์! (์ค์ ์ ํํ๊ฒ ๋์ํ๋ ์ฝ๋์ธ์ง ํ์ธ์ ํ์ง ์์์ ์๋ ์ฝ๋๋ก ๋ด์ฃผ์ธ์!)
- name: Check for missing end line breaks
env:
...
run: |
...
echo "## ์ค๋ฐ๊ฟ ๋๋ฝ ํ์ผ" >> $GITHUB_STEP_SUMMARY
for file in $files; do
if [ -f "$file" ]; then
if [ -s "$file" ] && [ "$(tail -c 1 "$file" | wc -l)" -eq 0 ]; then
echo "โ ์ค๋ฐ๊ฟ ๋๋ฝ: $file"
echo "- $file" >> $GITHUB_STEP_SUMMARY
success=false
# ๋ง์ง๋ง ์ค ๋ฒํธ ๊ตฌํ๊ธฐ
last_line=$(wc -l < "$file")
[ "$last_line" -eq 0 ] && last_line=1
# ์ฝ๋ฉํธ payload ๊ตฌ์ฑ
payload=$(jq -n \
--arg body "โ ํ์ผ ๋์ ์ค๋ฐ๊ฟ์ด ์์ต๋๋ค." \
--arg commit_id "${{ github.event.pull_request.head.sha }}"
--arg path "$file" \
--argjson line "$last_line" \
'{body: $body, commit_id: $commit_id, path: $path, line: $line, side: "RIGHT"}')
curl --silent --fail --show-error \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer $GITHUB_TOKEN" \
-H "X-GitHub-Api-Version: 2022-11-28" \
-d "$payload" \
"https://api.github.com/repos/${{ github.repository }}/pulls/${PR_NUMBER}/comments" \
|| echo "โ ๏ธ GitHub ์ฝ๋ฉํธ ๋ฑ๋ก ์คํจ (๊ถํ ๋ฌธ์ ๋๋ ์๋ชป๋ commit_id)"
else
...
์ฐ๋ค๋ณด๋ ์ด ๋ฐฉ์์ ์ฌ์ฉํ ๋ ๋ช ๊ฐ์ง ์ ๊ฒฝ์จ์ผํ๋ ๋ถ๋ถ์ด ์๋๋ผ๊ณ ์..!
- API ํธ์ถ์ด ๋น๋ฒํ๋ฉด GitHub API rate limit์ ๊ฑธ๋ฆด ์ ์๋ค
- ๋งค๋ฒ workflow๊ฐ ๋ ๋๋ง๋ค ๊ฐ์ ํ์ผ์ ๊ฐ์ ์ฝ๋ฉํธ๊ฐ ๊ณ์ ๋ฌ๋ฆด ์ ์์ต๋๋ค ๐
- PR ์ฝ๋ฉํธ๋ฅผ ์ฐ๋ ค๋ฉด workflow ๊ถํ์ write ๊ถํ์ด ํ์ํ ๊ฒ ๊ฐ์์.
์ ๋ ์์ด๋์ด๋ง ์ ๊ณตํ๊ณ ๊ฐ๋ณด๊ฒ ์ต๋๋ค..! ์ ๊ฐ ์๋ชป ์ดํดํ ๋ถ๋ถ์ด ์๊ฑฐ๋, ๊ถ๊ธํ ๋ถ๋ถ์ด ์์ผ๋ฉด ์ฝ๋ฉํธ๋ก ๋จ๊ฒจ์ฃผ์ธ์! ํ์ดํ ์ ๋๋ค~! ๐ช
์ ๊ฐ ์๊ฐํ๋ ๊ธฐ์กด PR ์ํฌ ํ๋ก์ฐ์ ๋ถํธํ ๋ถ๋ถ์ ๋ค์๊ณผ ๊ฐ์ ํ๋ฆ์ผ๋ก ๋๊ปด์ก์ต๋๋ค.
- WIKI์ ์ฐธ์ฌ์๊ฐ ์์์ผ ํ๋ ์ ๋ณด๊ฐ ๋ง์๋ฐ ํ์ผ ๊ฐํ๊ด๋ จ ๊ท์น์ ์ฐธ์ฌ์๊ฐ ์์ง ์๋๋ผ๋ ์์คํ ์ ์ผ๋ก ์๋ํํ๋ฉด ๋ ์ข๊ฒ ๋ค.
- ๋จ์ํ ์ฝ๋ฉํธ๋ Ci ์คํจ๋ก ์๋ ค์ค๋ ์ฐธ์ฌ์๊ฐ ์ธ์งํ ์๋ ์๊ฒ ์ผ๋ ์ฌ์ฉ์๊ฐ ํด๋น ์๋ฆผ์ ๋ํด ํ๋ก์ ์ ํด์ผ ํ๊ณ ๋น๋๊ธฐ ์ํต์ด ๊ธฐ๋ฐ์ธ ์ปค๋ฎค๋ํฐ์์ ์ด๋ฐ ์ํฌํ๋ก์ฐ๋ ํ๋ฆ์ ๋ ๋๋ฆฌ๊ฒ ๋ง๋ค ์ ์์ด๋ณด์ธ๋ค.
- ํ์ผ N๊ฐ์ ๋ํด์ ์๋์ผ๋ก ํ์ผ ๊ฐํ์ ์ถ๊ฐํ๋ ๊ฒ์ด ์๊ฐ๋ณด๋ค ๋ถํธํ๋ฐ ํด๋น ์์ ์ด ๋ณต์กํ ํ์ผ๋ณ๊ฒฝ์ด ์๋๊ธฐ ๋๋ฌธ์ ์๋ํํ๋ฉด ํธ๋ฆฌํ๊ฒ ๋ค.
๋ง์ฝ ๋ก์ปฌ ๋ณ๊ฒฝ๊ณผ ๋ฆฌ๋ชจํธ ์์ค์ ์ฐจ์ด๋ก ์ธํด ์ปจํ๋ฆญ์ด ๋๋ ๊ฒ์ด ๊ฑฑ์ ๋์ ๋ค๋ฉด ci์์๋ ํ์ผ ์ปจ๋ฒค์ ๊ฒ์ฌ๋ง ํ๊ณ ์ด๋ฐ ์๋ํ๋ pre-commit hook์ด๋ pre-push ํ ์์ ์ฒ๋ฆฌํ๋ฉด ํด๋น ๋ฌธ์ ๋ ์์ด์ง ๊ฒ ๊ฐ์ต๋๋ค.
์ ์์ ์ ์ฐธ์ฌ์๋ค์ ์ธ์ง ๋ถํ๋ฅผ ์ค์ด๊ณ ์๋ํ๊ฐ๋ฅํ ์์ญ์ ์๋ํํ๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค ์์ต๋๋ค.
@khg0712 ์๋ ๊ฐํ ์ถ๊ฐ๊ฐ ์ฐธ์ฌ์ ํธ์์ ๋์์ด ๋๋ค๋ ์ ์ถฉ๋ถํ ๊ณต๊ฐํฉ๋๋ค. ๊ด๋ จ ๋ฌธ์ ์ธ์งํ์๊ณ PR ์์ฑํด์ฃผ์ ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค! ๋ค๋ง, CI๊ฐ ์ง์ ์ปค๋ฐ์ด๋ ํธ์๋ฅผ ์ํํ๋ ๊ตฌ์กฐ๋ ์ง์ํ๋ ๊ฒ์ด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค!. ํด๊ณ ๋์ด ์ฃผ์ ๋์์ฒ๋ผ pre-commit hook์ด๋ pre-push ๋จ๊ณ๋ก ์ฎ๊ธฐ๋ ๋ฐฉํฅ์ด ๋ ์ ์ ํด ๋ณด์ ๋๋ค!