[트러블슈팅] GitHub Actions와 RSS로 블로그 자동화 문제 해결

JEONGYUJIN·2025년 1월 15일
1

GitHub Actions를 활용해 Velog와 Tistory 블로그의 최신 글을 GitHub 프로필 README에 자동으로 업데이트하는 시스템을 구축했습니다.
하지만 과정 중 다양한 문제를 마주했는데요, 이번 글에서는 제가 경험한 트러블슈팅 사례와 해결 방법을 정리해 보았습니다.

트러블 ... 메이커..

목차

  1. 403 Permission Denied 오류
  2. GitHub Actions가 실행되지 않음
  3. npm install 실패
  4. README.md가 반복 커밋됨
  5. RSS 피드 URL 404 오류
  6. Branch Protection Rules 문제

1. 403 Permission Denied 오류

문제 상황

GitHub Actions에서 다음 오류가 발생:

remote: Permission to <username>/<repo>.git denied to github-actions[bot].
fatal: unable to access 'https://github.com/<username>/<repo>/': The requested URL returned error: 403

원인

  1. GITHUB_TOKEN이 제대로 설정되지 않음.
  2. 브랜치 보호 규칙 또는 푸시 권한 부족.

해결 방법

  1. GitHub Settings > Actions > General에서 Workflow permissionsRead and write permissions로 설정.
  2. Personal Access Token(PAT)을 생성하여 GitHub Secrets에 추가.
  3. YAML 파일 수정:
git push https://x-access-token:${{ secrets.GH_GITHUB_TOKEN }}@github.com/<username>/<repo>.git

2. GitHub Actions가 실행되지 않음

문제 상황

YAML 파일 작성 후에도 Actions가 실행되지 않음.

원인

  1. YAML 파일이 잘못된 위치에 저장됨.
  2. YAML 문법 오류.

해결 방법

  1. YAML 파일 위치 확인:
    .github/workflows/update-readme.yml
  2. 문법 오류가 없는지 확인:
on:
  schedule:
    - cron: "0 */1 * * *" # 매 시간 정각 실행
  push:
    branches:
      - main
  1. Actions 탭에서 워크플로우가 활성화되었는지 확인.

3. npm install 실패

문제 상황

Actions 실행 중 Install dependencies 단계에서 실패:

npm ERR! JSON.parse Unexpected token "/" in JSON at position ...

원인

  1. package.json 파일에 잘못된 JSON 형식.
  2. 의존성 정의 누락.

해결 방법

  1. package.json 파일에서 주석 제거 및 올바른 JSON 형식으로 수정:
{
  "name": "project-name",
  "version": "1.0.0",
  "type": "module",
  "scripts": {
    "start": "node readmeUpdate.js"
  },
  "dependencies": {
    "rss-parser": "^3.13.0"
  }
}
  1. Actions에 npm install 명령어 추가:
- name: Install dependencies
  run: npm install

4. README.md가 반복 커밋됨

문제 상황

README.md 내용에 변경 사항이 없는데도 Actions가 매번 커밋을 생성.

원인

  1. RSS 데이터의 URL이 http://https://로 혼용됨.
  2. 기존 README와 비교 시 불필요한 변경으로 인식.

해결 방법

RSS 피드에서 가져온 링크를 https://로 통일:

link = link.startsWith('http://') ? 'https://' + link.slice(7) : link;

5. RSS 피드 URL 404 오류

문제 상황

readmeUpdate.js 실행 중 다음과 같은 오류 발생:

Error: Status code 404

원인

  1. Velog RSS URL 형식 변경.
  2. 잘못된 RSS 주소 사용.

해결 방법

  1. 올바른 RSS 주소 확인:
    • Tistory: https://<블로그 주소>/rss
    • Velog: https://v2.velog.io/rss/@<username>
  2. readmeUpdate.js에서 URL 수정:
const velogFeed = await parser.parseURL("https://v2.velog.io/rss/@yujin_jeong");

6. Branch Protection Rules 문제

문제 상황

GitHub Actions에서 푸시 권한이 막힘.

원인

  1. 브랜치 보호 규칙이 활성화되어 있음.

해결 방법

  1. Settings > Branches > Branch Protection Rules로 이동.
  2. 활성화된 보호 규칙을 비활성화하거나, Actions 봇 계정을 예외로 추가.

결론

GitHub Actions를 활용한 자동화는 제대로 설정하기 위해서는 여러 가지 오류를 해결해야 합니다...!

혹시 추가적인 문제가 있다면 댓글로 알려주세요! 😊


profile
일단 하고 보자 (펠리컨적 마인드 ㅠㅠ)

0개의 댓글