

백준문제를 풀고 github에 올리는 것이 여러 모로 도움이 될 거란 걸 알았으나 항상 귀찮아서 문제만 풀고 github에 한꺼번에 올려야지란 생각만 한 채 올리지 않는 경우가 대부분이었다. 이를 해결하기 위해 백준허브라는 플러그인을 사용해보자. 나아가 Readme 파일도 자동으로 업로드되도록 만들었다.
백준허브 플러그인
크롬 확장프로그램으로 백준허브 프로그램이 있었다. 해당 플로그인을 크롬에 추가하고 사용하면 백준에서 문제를 제출할 때 자동적으로 github에 내가 작성한 소스코드가 올라가게 된다.
설치 후 사용 방법은 개발자님이 작성해두신 사용방법을 보고 따라했다.
백준허브 사용 방법
백전허브의 사용자 매뉴얼입니다.
velog.io
위와 같이 백준허브를 통해 깔끔하게 내가 백준에서 제출한 문제들이 업로드 된것을 볼 수 있다.
백준허브 플러그인
백준허브 플러그인은 각각 개별적인 문제에 대한 Readme 파일은 자동으로 작성해주지만 전체 백준 풀이에 대한 Readme 파일도 자동으로 작성해주고 싶었다. 이를 위해 아래의 블로그 내용을 참고했다.
백준 문제 업로드 자동화하기(feat. readme 자동화)
백준이나 프로그래머스 문제를 풀면서, 내 코드들을 따로 깃허브에 올릴려고 하니 손이 너무 많이 가서 시간낭비가 컸다. 그래서 이번기회에 깃허브 업로드를 자동화 한번 해보자! 싶어서 찾아
velog.io
위 블로그대로 upload.py 파일을 작성했으나 다음과 같은오류가 발생했는데
remote: Permission to Byesol/Boj.git denied to github-actions[bot].
fatal: unable to access 'https://github.com/Byesol/Boj/': The requested URL returned error: 403
이는 GitHub Actions 워크플로우가 리포지토리에 변경 사항을 푸시하려고 시도하지만 GitHub Actions 봇에게 필요한 권한이 없다는 것을 나타낸다.
따라서 permissions 섹션을 추가하여 contents: write 권한을 부여한 것이며, git push 명령어를 실행할 때 GITHUB_TOKEN을 환경 변수로 설정했다. 그에 따른 코드는 아래와 같다.
name: Update readme # GitHub Actions 탭에서 확인할 수 있는 액션 이름
on: # jobs가 실행되어야 하는 상황 정의
push:
branches: [ "main" ] # main 브랜치에 push가 발생했을 때
pull_request:
permissions:
contents: write
jobs: # 실제 실행될 내용
build:
runs-on: ubuntu-latest # 빌드 환경
steps:
- uses: actions/checkout@v3 # checkout
- name: Set up Python 3.10
uses: actions/setup-python@v3 # setup-python
with:
python-version: "3.10" # 3.10버전 파이썬 사용
- name: Install dependencies # 1) 스크립트에 필요한 dependency 설치
run: |
python -m pip install --upgrade pip
pip install python-leetcode
- name: Run update.py # 2) update.py 실행
run: |
python update.py
- name: Commit changes # 3) 추가된 파일 commit
run: |
git config --global user.name 'Byesol' # 유저명
git config --global user.email 'bsj5967@naver.com' # 유저 이메일
git add -A
git commit -am "auto update README.md" # 커밋 메시지
- name: Push changes # 4) 메인에 푸시
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
git push
결과적으로 전체 repository에 대한 readme 파일이 정상적으로 생성되고 있음을 볼 수 있다.
