
개발자로서 깃허브(GitHub)와 블로그는 단순히 기록을 남기는 공간이 아닙니다. 그것들은 자신의 성장과 성실성을 보여주는 중요한 수단으로도 쓰입니다. 하지만 이 두 채널을 꾸준히 관리하는 것은 결코 쉬운 일이 아니며, 특히 프로젝트에 몰두할 때에는 둘 중 한쪽이 소홀해지기 쉽습니다.
그래서 깃허브 프로필을 통해 최근 블로그 활동을 보여주는 기능을 추가하고자 합니다. 이를 위해 깃허브 프로필의 README.md 파일에 블로그 게시글을 자동으로 불러오고, 새로운 게시글이 작성되면 깃허브에 커밋(commit)하여 최신 상태를 유지하는 방법을 적용했습니다. 이렇게 하여 깃허브와 블로그를 하나의 일관된 포트폴리오로 활용할 수 있기를 기대합니다.
이 방식을 더 발전시켜 깃허브 프로필을 하위 마크다운 페이지로 나누고, 블로그 활동, 프로젝트 정보, 이력서 등을 체계적으로 정리한다면, 이를 통해 CV 페이지를 완전히 대체할 수 있을 것입니다. 깃허브의 CI/CD기능을 활용하여 나의 모든 활동을 일관된 흐름으로 연결함으로써 자신을 더욱 효과적으로 표현하고, 관리의 효율성도 높일 수 있는 것이죠.
1. Python으로 블로그 피드(RSS) 크롤링
RSS(Really Simple Syndication, Rich Site Summary)는 뉴스나 블로그와 같이 새로운 컨텐츠 업데이트가 잦은 사이트에서 쓰이는 컨텐츠 표현 방식입니다. 이를 통해 구독자는 각 사이트에 방문하지 않고도 업데이트된 내용을 빠르게 확인할 수 있습니다.
1-1. feedparser 모듈 설치 및 피드 파싱
먼저 RSS 파싱용 모듈인 feedparser를 설치해야 합니다:
python -m pip install feedparser
import feedparser
URL = "https://def-init.tistory.com/rss"
RSS_FEED = feedparser.parse(URL)
1-2. Markdown 작성
프로필에 표시될 소개 문구와 블로그 게시글 목록을 작성합니다:
markdown_text = """
#### Hi there 👋
#### 📚Latest Blog Posts
"""
1-3. 피드 엔트리 반복 처리
앞서 정의한 feed의 entries를 반복하여 원하는 개수만큼 게시글을 노출합니다:
for i in feed['entries'][:5]:
markdown_text += f"[{i['title']}]({i['link']}) <br>"
with open("README.md", mode="w", encoding="utf-8") as f:
f.write(markdown_text)
1-4. requirements.txt 작성
feedparser
git action에서 pip install feedparser 한줄을 추가할 수도 있지만, 앞으로 기능추가를 고려하여 별도의 requirements.txt를 통해 라이브러리를 관리합니다.
위 내용을 활용하여 개인만의 python-app.py파일을 만들고(파일명은 자유롭게 생성가능), profile repository에 저장합니다.
2. GitHub Actions 통한 Workflow 생성
GitHub Actions는 빌드, 테스트, 배포 파이프라인을 자동화할 수 있는 CI(Continuous Integration, 지속 통합) 및 CD(Continuous Deployment, 지속 배포) 플랫폼입니다. 등록된 워크플로우(workflow)의 자동화를 돕습니다.
2-1. Python 애플리케이션 구성
해당 레포지토리의 Actions 탭으로 이동하여 'New workflow'를 선택하고 'Python application'으로 설정합니다.
2-2. python-app.yml 파일 작성
위 과정을 잘 수행했다면 자동으로 채워진 작성 양식을 확인할 수 있습니다. 사용되는 버전 정보(uses, python-version)는 그대로 두고, 나머지 정보는 아래와 같이 수정합니다:
# This workflow will install Python dependencies, run tests and lint with a single version of Python
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python
name: Python application
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
schedule:
- cron: "0 19 */1 * *"
permissions:
contents: write
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python 3.10
uses: actions/setup-python@v3
with:
python-version: "3.10"
- name: Install dependencies
run: |
python -m pip install --upgrade pip
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
- name: Run Update Python Script
run: |
python python-app.py
- name: Update README.md file
run: |
git pull
git add .
git diff
git config --local user.email "깃허브 아이디"
git config --local user.name "깃허브 닉네임"
git commit -m "자동 커밋 메세지"
git push
기본으로 만들어진 정보와 비교하며 작성합니다. 현재 설정된 cron은 한국 시간으로 매일 오전 4시에 워크플로우를 실행하도록 수정했습니다("0 19 */1 * *" == 매일 오전 4시). GitHub는 UTC 기준이므로, 오후 7시로 설정하여 한국시간 오전 4시에 업데이트 됩니다. 이 값을 변경해 원하는 주기로 업데이트되도록 설정할 수 있습니다(crontab.guru 참고)
작성 마친 다음 'Commit changes...' 버튼을 눌러 .github/workflows 폴더 하위에 python-app.yml 파일을 생성합니다. 이때 파일명은 자유롭게 지을 수 있습니다.
'일상' 카테고리의 다른 글
기술블로그를 벨로그에서 티스토리로 바꾼 이유 (0) | 2024.08.21 |
---|
개발새발라이프
hi there🙌