본문 바로가기
Coding Test

[Coding Test] Git Actions 이용해서 Readme 작성 자동화 (Feat. 백준 허브)

by CSEGR 2024. 11. 17.
728x90

✔️ 결과물 부터 보여주자면,

백준 문제를 맞추면, 자동으로 백준허브가 Git에 코드를 올려준다. 

푼 문제가 푸시될 때마다 Git Action을 사용해서 README도 동시에 꾸며준다!!

 

티어별로 보기좋게 테이블로 저장된다 !


 

 ((( 이 글을 참고하여 작성된 글입니다 ! )))

 

🚿 깃허브 잔디에 물 주기(feat.백준 문제 업로드 자동화)

🥺 알고리즘 문제가 깃허브에 자동 커밋 후 리드미로 관리된다고??

velog.io


✔️ 백준허브로 Git 자동커밋

백준 허브로 백준에서 푼 문제를 git에 자동으로 올려주는 Extension을 사용했다.!!

 

 

오래전에 설정해둬서 아직 안까신 분들은 다른 블로그에서 "백준허브 사용법"을 찾아보신 후 참고 바랍니다 !

 

 

옆에 초록색 체크 표시가 뜨면, 백준 허브 커밋 완료!!

 

✔️ GitHub Actions  ?

깃허브에 특정 동작이 발생할 때 마다 workflow에 미리 지정된 'Action'이 자동으로 수행되는 기능이다. 

 

✔️ GitHub Action - Workflow yml 파일 작성

 

0. 해당 레파지토리 > Actions 선택

 

1. "set up a workflow yourself" 선택

 

 

2. yml 파일명 써주기

 

3. yml 파일 작성 - user.name 과 user.email 고쳐주기

name: Update readme # GitHub Actions 탭에서 표시되는 워크플로 이름

on: # jobs가 실행되는 조건 정의
  push:
    branches: [ "main" ] # main 브랜치에 push가 발생했을 때
  pull_request: # pull request 시에도 실행

jobs: # 실제 작업 내용
  build:
    runs-on: ubuntu-latest # 실행 환경 설정
    steps:
    - uses: actions/checkout@v3 # 코드 체크아웃
    - name: Set up Python 3.10 
      uses: actions/setup-python@v3 # Python 설정
      with:
        python-version: "3.10" # Python 3.10 버전 사용
    - name: Install dependencies # 1) 필요한 라이브러리 설치
      run: |
        python -m pip install --upgrade pip
        pip install python-leetcode 
    - name: Run update.py # 2) update.py 실행
      run: |
        python .github/workflows/update.py
    - name: Commit changes # 3) 변경된 파일을 커밋
      run: |
        git config --global user.name 'parkgyul' # Git 사용자 이름 설정
        git config --global user.email 'haha0888@naver.com' # Git 사용자 이메일 설정
        git add -A # 모든 변경 사항 추가
        git commit -am "auto update README.md" # 커밋 메시지와 함께 커밋 생성
    - name: Push changes # 4) 변경 사항을 원격 저장소에 푸시
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # GitHub 인증 토큰 설정
      run: |
        git remote set-url origin https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/parkgyul/Coding_Test.git
        git push # 변경 사항 푸시

 

 

4. update.py 작성 - 실질적으로 리드미 업데이트를 시킬 코드 작성 !!!

 

4-1. workflows 파일로 이동 > Add file 선택 > Create new file 선택

 

 

4-2 update.py 이름 설정

 

4-3 update.py 작성

import os
from urllib import parse

HEADER="""# 
# 백준 문제 풀이 목록

"""

def main():
    content = ""
    content += HEADER
    
    directories = [];
    solveds = [];

    for root, dirs, files in os.walk("."):
        dirs.sort()
        if root == '.':
            for dir in ('.git', '.github'):
                try:
                    dirs.remove(dir)
                except ValueError:
                    pass
            continue

        category = os.path.basename(root)
        
        if category == 'images':
            continue
        
        directory = os.path.basename(os.path.dirname(root))
        
        if directory == '.':
            continue
            
        if directory not in directories:
            if directory in ["백준"]:
                content += "## 📚 {}\n".format(directory)
            else:
                content += "### 🚀 {}\n".format(directory)
                content += "| 문제번호 | 링크 |\n"
                content += "| ----- | ----- |\n"
            directories.append(directory)

        for file in files:
            if category not in solveds:
                content += "|{}|[링크]({})|\n".format(category, parse.quote(os.path.join(root, file)))
                solveds.append(category)
                print("category : " + category)

    with open("README.md", "w") as fd:
        fd.write(content)
        
if __name__ == "__main__":
    main()

 

그 다음 백준허브로 코드를 올리면, GitAction이 자동으로 수행된다!!!

✔️ GitAction 성공적으로 된다면?

체크 표시와 함께 readme 가 쓰여진걸 확인할 수 있다 !!!

 

✔️ GitAction 오류..?

2024.11.17 - [오류노트] - [오류노트] Git Action 오류 - No such file or repository & Permission denied 403 에러

 

[오류노트] Git Action 오류 - No such file or repository & Permission denied 403 에러

✔️ 오류가 발생한 환경  [Coding Test] Git Actions 이용해서 Readme 작성 자동화 (Feat. 백준 허브)✔️ 결과물 부터 보여주자면,백준 문제를 맞추면, 자동으로 백준허브가 Git에 코드를 올려준다. 푼

cse-gr.tistory.com

발생했던 오류들에 대한 포스팅은 다른 글에 정리해두었다. 

 

728x90