velog와 github 연동 : 벨로그 글쓰고 잔디심기 🌱

mori·2024년 2월 13일
7
post-thumbnail

🚩 고생한 후 결론
아래 내용과 참고 url을 토대로 진행하면 간편하고 빠르게 연동이 가능합니다!
다만, 따라한 후 마지막 성공 부분에 기재한 권한 부분 에 대해서 반드시 확인하시고
권한부분까지 수정 완료하면 벨로그와 깃허브 연동 완전 성공 🧚‍♀️

1. 깃허브에 레포지토리 생성

중요! Public repository로 생성하기!

2. 폴더링 및 파일 생성

3. "update_blog.yml"파일에 github action 작성

  • 매일 자정 또는 해당 레포지토리가 push 될 때 파이썬 스크립트를 실행하는 코드

📛 코드 속 벨로그 주소 확인!!! 📛

name: Update Blog Posts
  

on:
  push:
      branches:
        - master  # 또는 워크플로우를 트리거하고 싶은 브랜치 이름
  schedule:
    - cron: '0 0 * * *'  # 매일 자정에 실행

jobs:
  update_blog:
    runs-on: ubuntu-latest

    steps:
    - name: Checkout
      uses: actions/checkout@v2

    - name: Push changes
      run: |
        git config --global user.name 'github-actions[bot]'
        git config --global user.email 'github-actions[bot]@users.noreply.github.com'
        git push https://${{ secrets.GH_PAT }}@github.com/rimgosu/velog.git

    - name: Set up Python
      uses: actions/setup-python@v2
      with:
        python-version: '3.x'

    - name: Install dependencies
      run: |
        pip install feedparser gitpython

    - name: Run script
      run: python scripts/update_blog.py

4. "update_blog.py"파일에 파이썬 스크립트 작성

📛 코드 속 벨로그 아이디 확인!!! 📛

import feedparser
import git
import os

# 벨로그 RSS 피드 URL
# example : rss_url = 'https://api.velog.io/rss/@soozi'
rss_url = 'https://api.velog.io/rss/@[벨로그 아이디]'

# 깃허브 레포지토리 경로
repo_path = '.'

# 'velog-posts' 폴더 경로
posts_dir = os.path.join(repo_path, 'velog-posts')

# 'velog-posts' 폴더가 없다면 생성
if not os.path.exists(posts_dir):
    os.makedirs(posts_dir)

# 레포지토리 로드
repo = git.Repo(repo_path)

# RSS 피드 파싱
feed = feedparser.parse(rss_url)

# 각 글을 파일로 저장하고 커밋
for entry in feed.entries:
    # 파일 이름에서 유효하지 않은 문자 제거 또는 대체
    file_name = entry.title
    file_name = file_name.replace('/', '-')  # 슬래시를 대시로 대체
    file_name = file_name.replace('\\', '-')  # 백슬래시를 대시로 대체
    # 필요에 따라 추가 문자 대체
    file_name += '.md'
    file_path = os.path.join(posts_dir, file_name)

    # 파일이 이미 존재하지 않으면 생성
    if not os.path.exists(file_path):
        with open(file_path, 'w', encoding='utf-8') as file:
            file.write(entry.description)  # 글 내용을 파일에 작성

        # 깃허브 커밋
        repo.git.add(file_path)
        repo.git.commit('-m', f'Add post: {entry.title}')

# 변경 사항을 깃허브에 푸시
repo.git.push()

5. PAT 권한 받기

  • github 계정 - Settings - Developer Settings - Personal access tokens (classic) - Generate New Token - 'Note'에는 토큰의 이름 쓰고 repo, workflow 클릭 - Generate new token

  • 받은 토큰 복사 (한 번 밖에 볼 수 없으니 반드시 복!사!해!)
  • 위에서 생성한 레포지토리 - Settings - Actions secrets and variables - Actions - New Repository Secret

  • Name : 원하는 이름 작성 / Secret : [2번에서 발급받은 토큰]

  • 내가 fail한 이유.... (미안한고야...깃허브야...)
  • 해결방법(GH_PAT_MORI로 이름 변경)

6. 커밋 또는 자정까지 웨이링하기

7. 😿잔디심기 실패

깜찍하게 실패한 이유

  • 깃허브가 친절하게 "응~ 너 실패~" 메일을 보내주었습니다 😊
    Update Blog Posts: All jobs have failed

  • 당장 들어가서 확인해보니 레포지토리 주소를 잘못 적었다고 말해줍니다! (쏘친절..고마워...)
    수정하고 다음날 다시 확인해보겠습니다...나는 다시 웨이링할꼬아...

8. 😿잔디심기 실패_2

깜찍하게 실패한 이유

9. 😿잔디심기 실패_3

깜찍하게 실패한 이유 (점점 분노 차오르는 중 🔥🔥🔥)

  • 깃허브가 다시한번 친절하게 "응~ 너 실패~" 메일을 보내주었습니다 😊
    Update Blog Posts: All jobs have failed

  • Run git credential-manager reject https://github.com
    git credential-manager reject https://github.com
    git config --global user.name 'github-actions[bot]'
    git config --global user.email 'github-actions[bot]@users.noreply.github.com'
    git push https://***github.com/sooozi/velog_mori.git
    shell: /usr/bin/bash -e {0}
    git: 'credential-manager' is not a git command. See 'git --help'.
    Error: Process completed with exit code 1.

새로운 오류 발견!!! 이번에는 지피티 너를 믿는당

  • 해결방법
    이 오류는 Git이 credential-manager를 인식하지 못하는 것으로 보입니다. Git Credential Manager는 Windows에서 자동으로 설치되지만 macOS 또는 Linux에서는 일반적으로 포함되어 있지 않습니다. 윈도우에서 Git Credential Manager가 기본적으로 설치되어 있지만 여전히 해당 오류가 발생한다면 몇 가지 문제가 있을 수 있습니다. 여러 가지 방법을 시도하여 문제를 해결할 수 있습니다.
  1. Git Credential Manager 다시 설치: 먼저 시스템에서 Git Credential Manager를 제거하고 다시 설치하는 것이 좋습니다. Git Credential Manager를 재설치하면 문제를 해결할 수 있습니다.
  2. 환경 변수 확인: 때로는 시스템 환경 변수가 Git Credential Manager를 찾지 못할 수 있습니다. 이 경우 시스템 환경 변수에 Git 및 Git Credential Manager가 설치된 경로를 추가해야 합니다. 예를 들어, C:\Program Files\Git\mingw64\libexec\git-core와 같은 경로를 추가할 수 있습니다.
  3. Git 업데이트: Git 및 Git Credential Manager의 최신 버전을 설치하여 문제를 해결할 수도 있습니다. Git 및 Git Credential Manager가 최신 상태인지 확인하고 업데이트해 보세요.
  4. Git for Windows 재설치: Git for Windows를 완전히 제거하고 다시 설치하여 문제를 해결할 수도 있습니다. 이렇게 하면 시스템에서 Git과 관련된 모든 구성 요소를 완전히 재설정할 수 있습니다.
  5. 관리자 권한으로 실행: Git 명령을 관리자 권한으로 실행하여 문제를 해결할 수 있습니다. 명령 프롬프트나 PowerShell을 관리자 권한으로 실행한 다음 명령을 실행해 보세요.

이러한 방법 중 하나로 문제를 해결할 수 있어야 합니다. 계속해서 문제가 지속되면 추가적인 디버깅이 필요할 수 있습니다.

=> Git Credential Manager를 설치하고 설정해보자!!!!



10. 😻잔디심기 실패_4 그리고 아이 엠 '성공'이여요

깜찍하게 실패한 이유와 성공 후기 (감덩 대폭발 👼👼👼)


  • 왜 이렇게 계속 실패한거야?
    =>remote: Permission to sooozi/velog_mori.git denied to github-actions[bot].
    =>sooozi/velog_mori.git에 대한 권한이 github-actions[bot]에 거부되었습니다
    ==> github-actions[bot] 권한이 없어서 계속 오류가 나고 있었던 것!

  • 해결방법
    나 이외에 모든 사용자에게 권한을 줘버리자!

=> 참고
https://stackoverflow.com/questions/72851548/permission-denied-to-github-actionsbot
https://github.com/ad-m/github-push-action/issues/96






✅ 참고
https://velog.io/@rimgosu/velog-글-작성-시-자동으로-github에-커밋하기
https://stackoverflow.com/questions/72851548/permission-denied-to-github-actionsbot
https://github.com/ad-m/github-push-action/issues/96

profile
지식을 나눠요 📓

4개의 댓글

comment-user-thumbnail
2024년 3월 9일

넘 어려버보여요 ;;

1개의 답글
comment-user-thumbnail
2024년 6월 25일

와 깃헙 벨로그 연동 하려고 구글 검색해서 상단에 뜬 거 들어온건데 모리님꺼였어여 ㅋㅋㅋ
말투보고 와 되게 숮찡같네 했는데...... 숮찡 감별사된고야

1개의 답글