코딩 테스트 문제를 제공하는 사이트 중 국내에서는 백준, 프로그래머스 등은 BaekjoonHub를 통해 문제를 푸는 데로 연동이 됩니다. 해외의 대표적인 사이트인 LeetCode도 LeetHub라는 것이 존재하지만 버전이 다르다보니 어떤 것을 쓰는 것이 적절한지 확신이 없어서 GitHub Action을 찾아보게 됐습니다.
Marketplace에서 필요한 기능을 제공하는 GitHub Action을 찾을 수 있습니다. 사용하는 방법은 여기서 알려준 방법으로 진행하면 됩니다.
1. LeetCode 홈페이지에서 필요 정보 추출
로그인이 된 상태에서 홈에서 개발자 도구(F12)로 네트워크 탭에서 웹 페이지가 서버와 주고받는 네트워크 요청을 살펴봅니다. 저같은 경우 왼쪽에서 session에서 확인했고, Request Headers에서 쿠키(Cookie :) 항목 안에 csrftoken과 LEETCODE_SESSION 라는 값을 찾아서 저장해둡니다. (;는 제외)
2. Secrets 생성하기
해당 GitHub 저장소의 Settings > Secrets and variables > Actions로 이동합니다. 하단에 살펴보면 New repository secret 버튼이 있는데 이를 클릭해 위에서 저장한 csrftoken과 LEETCODE_SESSION을 각각 저장합니다. (저같은 경우는 LEETCODE_CSRF_TOKEN과 LEETCODE_SESSION으로 저장했습니다)
3. 설정 및 yaml 파일 작성
해당 레포지토리에서 Settings > Actions > General 로 인동한 후 Workflow permissions(하단)에서 Read and write permissions로 설정합니다. 그리고 .github/worflows에 아래와 같은 sync_leetcode.yml 파일을 만듭니다.
name: Sync Leetcode
on:
workflow_dispatch:
schedule:
- cron: '0 8 * * *' # cron 표현식으로 이렇게 하면 매일 오전 8시에 업데이트. 작은 따옴표 사용!
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Sync
uses: joshcai/leetcode-sync@v1.7
with:
github-token: ${{ github.token }}
leetcode-csrf-token: ${{ secrets.LEETCODE_CSRF_TOKEN }}
leetcode-session: ${{ secrets.LEETCODE_SESSION }}
destination-folder: my-folder # commit될 폴더명
verbose: true
commit-header: "[LeetCode Sync]"
만약 .github/workflows에 파일이 없다면 아래와 같은 명령어를 통해 만들어서 수정해주면 됩니다.
mkdir -p .github/workflows
touch .github/workflows/sync_leetcode.yml
4. Sync
이렇게 작성하면 원하는 시간대마다 자동으로 업데이트를 하게 됩니다. 만약 즉각적인 확인을 원한다면 해당 레포지토리의 Actions 탭에서 클릭을 통해 실행할 수 있습니다.
'Git & GitHub' 카테고리의 다른 글
[Git] Commit 유지하면서 다른 Repository 합치기 (0) | 2024.12.23 |
---|---|
[Git] Github에서 생성한 레포지토리 로컬에 가져오기 | PAT 인증, Authentication failed 해결 (0) | 2024.09.16 |
[Git] 으로 이진탐색으로 버그 찾기 | git bisect 활용 (0) | 2024.08.28 |
[Git] 깃 관련 학습할 수 있는 소스 모음 (0) | 2021.12.05 |
[Git] 깃 개념, 단어 정리 (repository, commit, branch, fork, push, pull, fetch, pull request) (0) | 2021.11.14 |