이전 글 참고⭐
2024.07.12 - [개발/GitHub] - Profile Readme 꾸미기 - 블로그 최신 글 추가하기 (1)
Profile Readme 꾸미기 - 블로그 최신 글 추가하기 (1)
항상 뭐든지 시작 전에 끝을 봐야 한다고 생각해 시작을 안 하는 병이 있다.그렇게 GitHub Profile Readme를 꾸며야지 해놓고 방치한지 어언 2년...도저히 미룰 수 없어 조금씩 꾸미자는 생각으로 오랜
jjrdd.tistory.com
저번에 워크플로우를 실행시킬 때 마다 readme에 누적되는 오류가 있었는데 오늘 수정해보겠다!
수정 과정
우선 기존의 readme에서 내가 수정하고 하는 부분만 추출하기 위해 주석을 작성해둔다.
시작 부분에 <!-- BLOG-POST-LIST:START -->, 끝 부분에 <!-- BLOG_POST_LIST:END -->를 작성해두었다.
저번에 작성했던 update-readme.yml에서 5개의 최신 블로그 글을 작성하는 부분을 수정해야한다.
아까 readme에 추가했던 주석과 똑같이 시작과 끝 부분에 출력하는 부분을 추가해야 한다.
그래야 수정 후에도 주석이 남아 있어 여러 번 실행되어도 문제 없다!
(앗 근데 지금 보니까 제목은 굳이 여러번 바꿀 필요가 없잖아? 나중에 수정해야지😅)
그 후 기존 readme와 새로 작성한 readme를 결합하는 부분을 수정해야 한다.
원본 텍스트를 변경하기 위해 sed -i를 사용한다.
<!-- BLOG-POST-LIST:START -->와 <!-- BLOG-POST-LIST:END --> 사이의 범위를 지정 후
시작 주석(<!-- BLOG-POST-LIST:START -->)이 나타나면, latest-post.md 파일의 내용을 해당 위치에 삽입한다.
그 후 범위 내 모든 줄을 삭제합니다.
echo "<!-- BLOG-POST-LIST:START -->" > latest-post.md
echo "### Latest Blog Posts" >> latest-post.md
for ((i=1; i<=5; i++)); do
TITLE=$(echo "$XML_DATA" | xmllint --xpath "string(/rss/channel/item[$i]/title)" - 2>/dev/null || echo "No title")
LINK=$(echo "$XML_DATA" | xmllint --xpath "string(/rss/channel/item[$i]/link)" - 2>/dev/null || echo "No link")
echo "- [$TITLE]($LINK)" >> latest-post.md
done
echo "<!-- BLOG-POST-LIST:END -->" >> latest-post.md
sed -i '/<!-- BLOG-POST-LIST:START -->/,/<!-- BLOG-POST-LIST:END -->/ {
/<!-- BLOG-POST-LIST:START -->/ {
r latest-post.md
}
d
}' README.md
최종 코드
name: Update README with Latest Blog Post
on:
workflow_dispatch:
jobs:
update-readme:
name: Update README
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v2
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y curl jq libxml2-utils
- name: Extract latest blog post
run: |
RSS_FEED="http://jjrdd.tistory.com/rss"
XML_DATA=$(curl -s $RSS_FEED)
if [[ $? -ne 0 ]]; then
echo "Failed to download RSS feed"
exit 1
fi
echo "<!-- BLOG-POST-LIST:START -->" > latest-post.md # 범위 시작 주석
echo "### Latest Blog Posts" >> latest-post.md
for ((i=1; i<=5; i++)); do
TITLE=$(echo "$XML_DATA" | xmllint --xpath "string(/rss/channel/item[$i]/title)" - 2>/dev/null || echo "No title")
LINK=$(echo "$XML_DATA" | xmllint --xpath "string(/rss/channel/item[$i]/link)" - 2>/dev/null || echo "No link")
echo "- [$TITLE]($LINK)" >> latest-post.md
done
echo "<!-- BLOG-POST-LIST:END -->" >> latest-post.md # 범위 끝 주석
sed -i '/<!-- BLOG-POST-LIST:START -->/,/<!-- BLOG-POST-LIST:END -->/ { # 범위를 찾고
/<!-- BLOG-POST-LIST:START -->/ { # 시작 주석이 나타나면
r latest-post.md # latest-post.md를 해당 위치에 삽입
}
d # 범위 내 모든 줄 삭제
}' README.md
- name: Commit and Push Changes
run: |
git config --global user.name 'JoHyeonJi0408'
git config --global user.email '1692074@hansung.ac.kr'
git add README.md
git commit -m "Update README with latest blog post"
git push
'개발 > GitHub' 카테고리의 다른 글
Profile Readme 꾸미기 - 블로그 최신 글 추가하기 (3) (3) | 2024.07.22 |
---|---|
Profile Readme 꾸미기 - 블로그 최신 글 추가하기 (1) (1) | 2024.07.12 |