Github์ README ๋ธ๋ก๊ทธ ์ต์ ๊ธ ์๋ํํ๊ธฐ
Github์ README์ ๋ธ๋ก๊ทธ ์ต์ ๊ธ์ ์๋์ผ๋ก ์ฌ๋ ค์ฃผ๋ ์์ ์ ์งํํ ๊ฒ์ด๋ค.
๊ณผ์ ์ด ๋งค์ฐ ๊ฐ๋จํ๊ธฐ ๋๋ฌธ์ ๋น ๋ฅด๊ฒ README๋ฅผ ๊พธ๋ฐ ์ ์๋ค.
1. RSS ํผ๋๋ฅผ ๊ฐ์ ธ์ค๋ Python ์ฝ๋ ์์ฑ
pip install feedparser
๋จผ์ feedparser ๋ชจ๋์ด ํ์ํ๊ธฐ ๋๋ฌธ์ ๋ค์ด๋ฐ์์ค๋ค.
๋ด RSS ํผ๋ URL ํ์ธ
https://dev-wnstjd.tistory.com/rss
์์ ์ ๋ธ๋ก๊ทธ URL / rss ๋ฅผ ๋ถ์ฌ์ฃผ๋ฉด ๋๋ค.
ํฐ์คํ ๋ฆฌ ๋ธ๋ก๊ทธ๋ ์ด๋ ๊ฒ ํ๋ฉด ๋๊ณ ๊นํ๋ธ ๋ธ๋ก๊ทธ๋ ๋ฒจ๋ก๊ทธ ๊ฐ์ ๊ฒฝ์ฐ๋ ๋ค๋ฅผ ์ ์๋ค.
2. Python ์ฝ๋ ์์ฑ
๋จผ์ ์์ ์ README ์ ์ฅ์์ main.py ํ์ผ์ ํ๋ ๋ง๋ ๋ค.
import feedparser
import time
URL="https://dev-wnstjd.tistory.com/rss" # URL = "๋ด๋ธ๋ก๊ทธ ์ฃผ์/rss"
RSS_FEED = feedparser.parse(URL)
MAX_POST = 5
# ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฐ๋์ง ์์ Markdown text ์
๋ ฅ
markdown_text = """
<div class='blog' align='left'>
<h2> ๐ BLOG ๐ </h2>
[![Tistory's Badge](https://github-readme-tistory-card.vercel.app/api/badge?name=์ค์ฑ`s๋ธ๋ก๊ทธ&theme=kakao)](https://dev-wnstjd.tistory.com)
</div>
<hr>
<div class='tech-stack' align='left'>
<h2> ๐ TECH STACK ๐ </h2>
<span stye="">
<img src="https://img.shields.io/badge/python-3776AB?style=for-the-badge&logo=python&logoColor=white"> 
<img src="https://img.shields.io/badge/node.js-339933?style=for-the-badge&logo=Node.js&logoColor=white"> 
<img src="https://img.shields.io/badge/mysql-4479A1?style=for-the-badge&logo=mysql&logoColor=white"> 
<img src="https://img.shields.io/badge/github-181717?style=for-the-badge&logo=github&logoColor=white"> 
<img src="https://img.shields.io/badge/javascript-F7DF1E?style=for-the-badge&logo=javascript&logoColor=black"> 
<img src="https://img.shields.io/badge/amazonaws-232F3E?style=for-the-badge&logo=amazonaws&logoColor=white"> 
</span>
<hr>
## โ
Latest Tistory Posting<div class=blog-post text-align='left'>
"""
for idx, feed in enumerate(RSS_FEED['entries']):
if idx > MAX_POST:
break
else:
feed_date = feed['published_parsed']
markdown_text += f" - [{feed_date.tm_mon}/{feed_date.tm_mday} - {feed['title']}]({feed['link']})\n"
markdown_text += """
</div>
</div>
"""
print(markdown_text)
f = open("README.md", mode="w", encoding="utf-8")
f.write(markdown_text)
f.close()
๋ ๊ฐ์ ๊ฒฝ์ฐ๋ ์๋ HTML ์ด ์์๋ค. ๊ทธ๋์ ์๋์ ์ด ๋ถ๋ถ์ ์ถ๊ฐํด์คฌ๋ค. div๋ก ๋ซ์์ฃผ์ง ์์ผ๋ฉด ์์ Markdown_text๊ฐ ์คํ๋์ง ์์๋ค. ์ ๊ทธ๋ฐ์ง๋ ์ฐพ์๋ดค๋๋ฐ ์ ์ ์๋ค..
markdown_text๋ ์์ ์ ์๋ README ํ์ผ์ ์๋ ์์ค๋ฅผ ๋ฃ์ผ๋ฉด ๋๋ค.
markdown_text += """
</div>
</div>
"""
Python ์ฝ๋๋ฅผ ๋ถ์ํด์ฃผ๋ ๊ธ์ ๋ง๊ธฐ ๋๋ฌธ์ ์ฐพ์๋ณด๊ธธ ๋ฐ๋๋ค.
์ด๋ ๊ฒ ํ์ผ์ ๋ง๋ค๊ณ ํ ๊ฐ์ง๋ง ๋ ์ค์ ํด์ฃผ๋ฉด ๋์ด๋ค.
3. Github Actions๋ก ์ผ์ ์๊ฐ๋ง๋ค ์ ๋ฐ์ดํธ ํ๋๋ก ์ค์
Github Actions์ New workflow๋ฅผ ํด๋ฆญํ๊ณ Python application configure ๋ฅผ ์ค์ ํ๋ค.
์ด๊ณณ์ ์๋ ์ฝ๋๋ฅผ ๋ณต์ฌ๋ฅผ ํด์ ๋ถ์ฌ ๋ฃ์ผ๋ฉด ๋๋ค.
๋๋ ๋ค๋ฅธ ๋ธ๋ก๊ทธ์์ ๋ถ์ฌ๋ฃ๊ธฐ๋ ํ๋๋ฐ ํธ์์์ ์ค๋ฅ๊ฐ ๋์ ํ์ธ์ ํด๋ดค๋๋ cron ๋ถ๋ถ์์ indent๋ฅผ ๋ง์ถ์ง ์์์ ์ค๋ฅ๊ฐ ๋ฌ๋ค. ์ฃผ์ ํ๋๋ก ํ์.
# This workflow will install Python dependencies, run tests and lint with a single version of Python
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions
name: Python application
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
schedule:
- cron: "0 0 */1 * *"
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Python 3.9
uses: actions/setup-python@v2
with:
python-version: 3.9
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install feedparser
- name: Run Update Python Script
run: |
python main.py
- name: Update README.md file
run: |
git pull
git add .
git diff
git config --local user.email "wnstjd9701@naver.com"
git config --local user.name "wnstjd9701"
git commit -m "Update README.md"
git push
๋ง์ง๋ง git config ์๋ ์์ ์ ๊นํ๋ธ ์ด๋ฉ์ผ ์ฃผ์ / ๊นํ๋ธ ์์ด๋๋ฅผ ์ ๋ ฅํ๋ฉด ๋๋ค.
๊ทธ ํ ์์ ์ README๋ฅผ ํ์ธํด ๋ณด๋ฉด ์ ์ ์ฉ์ด ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
- Github Action์ ๋ํด ๋ ์์๋ณด๊ธฐ
Github Action ์ ์ ์ฉํ๋ค๊ฐ python-application.yml์์ syntax error๊ฐ ๋ฐ์ํ๋ค. ์๋ฌ๋ฅผ ํ์ธํ๋๋ Cron ๋ถ๋ถ์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์๋ค. ์ค๋ฅ๊ฐ ์ด๋์ ์๋ชป๋๊ฑด์ง ๊ตฌ๊ธ๋ง์ ํด๋ณด๋ค๊ฐ ์ธ๋ดํธ๊ฐ ๋ง์ง ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค. ๊ทธ ๋ค๋ก ๋ธ๋ก๊ทธ ๊ธ์ ์ฌ๋ ธ๋๋ฐ ๋ฐ๋ก ๋ฐ์์ด ์๋์ ์ฌ๋ฌ๊ฐ์ง๋ฅผ ์ฐพ์๋ณธ ๊ฒฐ๊ณผ Cron์ ์ญํ ์ด ๋ฐ๋ก ์ผ๋ง์ ํ๋ฒ์ฉ ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ ๊ฒ์ธ์ง ์ ํ๋ ์ฝ๋์๋ค. ๋ค๋ฅธ ๋ธ๋ก๊ทธ์์ ๋งค์๊ฐ 5๋ถ ๊ฐ๊ฒฉ์ผ๋ก ์ ์ฉํ๋ ์ฝ๋๋ฅผ ๋ฃ์๋๋ ๋ syntax ์๋ฌ๊ฐ ๋ฐ์ํด์ ์๋์ ์๊ฐ์ค์ ์ผ๋ก ๋์์๋ค. ๊ทธ๋ฆฌ๊ณ ๋ ์ฐพ์๋ณด๋ค๊ฐ ์๊ฐ์ ๊ณ์ฐํด์ฃผ๋ ์ฌ์ด๋ฅดํ ์ฐพ๊ฒ ๋์๋ค.
์์ ์ cron ์ ๋ฃ์ผ๋ฉด ๋ฐ๋ก ์ฃผ๊ธฐ๋ฅผ ์๋ ค์ค๋ค.
๋ ๊ฐ์ ๊ฒฝ์ฐ๋ ๋งค์ผ 12์am์ update๊ฐ ๋๋๊ฒ์ด๋ค. (UTC์ด๋ฏ๋ก ํ๊ตญ์๊ฐ 9์์ด๋ค)
์ค๋ ์ ์ฉํ์ผ๋ ๋ด์ผ ์ค์ 9์์ ํ์ธ์ ํด๋ณด๋๋ก ํด์ผ๊ฒ ๋ค.
https://crontab.guru/#0_0_*/1_*_*
** ๋ณต๋ถํ๋ค๊ฐ ํ์ผ์ด๋ฆ์ด ๋ฌ๋ผ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ ์ ๋ ์๋ค..
ํ์ธ ์ ํ๊ณ ์คํํ์..
'โจ Settings > ๐ป Github' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๊นํ๋ธ ์๊ฒฉ ๋ธ๋์น์ ๋ก์ปฌ ๋ธ๋์น ๋๊ธฐํ (0) | 2023.05.20 |
---|---|
โจ ๋ธ๋ก๊ทธ Github ์๋ ๊พธ๋ฏธ๊ธฐ (0) | 2022.10.29 |