✔️ 결과물 부터 보여주자면,
백준 문제를 맞추면, 자동으로 백준허브가 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
발생했던 오류들에 대한 포스팅은 다른 글에 정리해두었다.
'Coding Test' 카테고리의 다른 글
[Coding Test] 이전에 풀었던 문제 백준허브에 업로드하기 - 백준허브 코드 업로드 (0) | 2024.11.17 |
---|