일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- CKA
- kotlin spring
- 기록으로 실력을 쌓자
- 정보처리기사 실기 기출문제
- minikube
- kotlin coroutine
- kotlin querydsl
- MySQL
- PETERICA
- 공부
- APM
- CloudWatch
- 코틀린 코루틴의 정석
- AI
- mysql 튜닝
- Linux
- Java
- AWS EKS
- IntelliJ
- 티스토리챌린지
- 오블완
- CKA 기출문제
- Kubernetes
- 정보처리기사 실기
- Pinpoint
- kotlin
- Elasticsearch
- 정보처리기사실기 기출문제
- aws
- Spring
- Today
- Total
피터의 개발이야기
[github] GitHub Action으로 티스토리 블로그 코롤링하여 커밋하기 본문
ㅁ 들어가며
ㅇ 티스토리의 글을 올리면 Git에도 반영되어 잔디밭을 조성하는 방법을 알게 되었다.
ㅇ Github Action을 이용하여 하루에 한번 티스토리의 RSS를 기반으로 Github에 커밋이 된다.
ㅇ 티스토리의 RSS와 Github와 연동하는 방법을 정리하였다.
ㅇ 참조: [github] GitHub Action 이용해서 티스토리 게시글 깃허브에 업로드하기
ㅁ 블러그 RSS 추출
# feedparser 라이브러리 추가
$ pip install feedparser
import feedparser
feed = feedparser.parse("https://peterica.tistory.com/rss")
for i in feed['entries']:
print(i['link'], i['title'])
ㅇ Jupyter nodebook을 이용하여 테스트 수행하였다.
ㅁ 블러그 내용 가공
import feedparser,datetime
# rss 추출
feed = feedparser.parse("https://peterica.tistory.com/rss")
for i in feed['entries']:
# date formation
date = datetime.datetime.strptime(i['published'], "%a, %d %b %Y %H:%M:%S %z").strftime("%Y.%m.%d %H:%M")
print(date, i['link'], i['title'])
ㅇ 게시시간, 링크, 제목으로 가공하였다.
ㅁ README.md 만들기
import feedparser,datetime
# rss 추출
feed = feedparser.parse("https://peterica.tistory.com/rss")
# README 양식
markdown_text = """
### 🐱 github stats
<div id="main" align="center">
<img src="https://github-readme-stats.vercel.app/api?username=peterica&count_private=true&show_icons=true&theme=radical"
style="height: auto; margin-left: 20px; margin-right: 20px; padding: 10px;"/>
<!-- <img src="https://github-readme-stats.vercel.app/api/top-langs/?username=qpyu66&layout=compact"
style="height: auto; margin-left: 20px; margin-right: 20px; padding: 10px;"/> -->
</div>
### 💁♀️ About Me
<p align="center">
<a href="https://peterica.tistory.com/"><img src="https://img.shields.io/badge/Blog-FF5722?style=flat-square&logo=Blogger&logoColor=white"/></a>
<a href="mailto:ilovefran.ofm@gmail.com"><img src="https://img.shields.io/badge/Gmail-d14836?style=flat-square&logo=Gmail&logoColor=white&link=ilovefran.ofm@gmail.com"/></a>
</p>
<br>
### 📕 Latest Blog Posts
""" # list of blog posts will be appended here
for i in feed['entries'][:5]:
markdown_text += f"<a href =\"{i['link']}\"> {i['title']} </a> <br>"
#print(i['link'], i['title'])
#print(markdown_text)
f = open("README.md",mode="w", encoding="utf-8")
f.write(markdown_text)
f.close()
ㅇ README.md를 작성하기 위한 readme_update.py 생성하였다.
ㅇ 생성된 README.md
ㅁ Git push
ㅇ tistory-crawling에 커밋을 하였다.
ㅁ Githut Action Workflow 생성
ㅇ Github의 Actions 탭으로 이동한다.
ㅇ set up a workflow yourself를 클릭한다.
ㅇ main.yml에 아래의 텍스트를 편집하여 붙여 넣었다.
ㅇ 작성 완료 후 Comit changes를 클릭한다.
# This is a basic workflow to help you get started with Actions
name: Readme Update
# Controls when the workflow will run
on:
# Triggers the workflow on push or pull request events but only for the master branch
push:
branches: [ master ]
pull_request:
branches: [ master ]
schedule:
- cron: "0 0 */1 * *"
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# This workflow contains a single job called "build"
build:
# The type of runner that the job will run on
runs-on: ubuntu-latest
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v3
- 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
pip install feedparser
- name: Update README
run: |
python readme_update.py
- name: Commit README
run: |
git add .
git config --local user.email "@gmail.com"
git config --local user.name "Peter Seo"
git commit -m "Update README.md"
git push
ㅇ workflow 작동을 위해 main.yml을 만들었다.
ㅁ Git Action build 에러 확인
ㅇ 403 Permission 오류가 발생하였다.
ㅁ workflow 권한 수정
ㅇ GIT > Settings > Actions - General -> Workflow permisions로 이동
ㅇ Read and write permisions를 선택 후 저장한다.
ㅁ 빌드 오류확인
error: failed to push some refs to 'https://github.com/peterica/tistory-crawling'
hint: Updates were rejected because the remote contains work that you do not
hint: have locally. This is usually caused by another repository pushing to
hint: the same ref. If you want to integrate the remote changes, use
hint: 'git pull' before pushing again.
ㅇ Git push 오류 해결을 위해 검색을 하였다.
ㅇ 이곳에서 해결책을 찾아서 다시 시도하였다.
- name: Commit README
run: |
git add .
git config --local user.email "ilovefran.ofm@gmail.com"
git config --local user.name "Peter Seo"
git commit -m "Update README.md"
git push origin +master <==== 이부분 수정
ㅇ workflow main.yml을 수정하였다.
ㅇ job을 재시작 하였고, 문제가 되었던 Job: Commit README가 정상 작동하였다.
ㅇ 결과는 이곳에서 확인.
ㅁ 함께 보면 좋은 사이트
ㅇ Tistory-Nodejs를-활용한-티스토리-글-작성-시-Github에-commit-하는-방법
ㅇ [github] Git Action 이용해서 티스토리 게시글 깃허브에 업로드하기
ㅇ Git push 오류 해결 (Updates were rejected because the tip of your current branch is behind its remote..)
'Programming > GitHub' 카테고리의 다른 글
[Git] Git 사용법: 간단한 정리 (0) | 2024.09.06 |
---|---|
[Git] GitHub Actions 노드 버전 문제 해결하기, node20 업그레이드 방법 (0) | 2024.07.25 |
[Git] 깃허브(Github) 프로필 README 추가방법 (0) | 2024.02.13 |
[Github] Repository 합치기 (0) | 2024.02.13 |
[git] 체리픽 Cherry-pick, feature 로그 깔끔하게 merge하기 (0) | 2024.02.10 |