개인 GitHub 페이지

GitHub 프로필과 공개 저장소·언어 사용량 통계를 한 화면에 모아 보여 주는 정적 사이트입니다. 저장소 데이터는 GitHub Actions 가 매주 GraphQL API 로 받아 갱신합니다.

연표로 돌아가기
문제
저장소 데이터를 손으로 갱신하던 탓에 마지막 수집인 2022년 5월 이후로 화면이 계정 현황과 어긋나 있었습니다. 같은 해부터 그대로였던 의존성 잠금 파일(Gemfile.lock)에는 Dependabot 보안 경고 42건이 열려 있었습니다.
담당
2017년 첫 판부터 이력서 형식(2018년), 저장소 목록(2020년), 언어 통계(2022년), 전면 개편(2026년)까지 직접 맡았고, 데이터 수집 스크립트와 자동 갱신 워크플로도 작성했습니다.
설계 판단
조회 대상을 인증된 사용자(viewer)에서 이름으로 지정한 계정(user)으로 바꿔, GitHub Actions 가 자동으로 발급하는 토큰만으로 공개 데이터를 받게 했습니다. 외부 CDN 을 제거하고 아이콘을 문서 안 SVG 로 바꿔 콘텐츠 보안 정책(CSP)을 적용했습니다.
검증 기준
GitHub Pages 용 gem(github-pages 232)으로 로컬 빌드해 산출물을 점검했고, 원본·설정 파일이 배포되지 않는지와 본문 명도 대비가 4.5:1 이상인지 확인했습니다.
결과 범위
2026년 9월부터 매주 월요일 06:00(한국 시간)에 데이터를 다시 받아 바뀐 것이 있을 때만 커밋하고, 그 푸시로 페이지가 다시 빌드됩니다. Ruby 의존성은 매주, Actions 버전은 매월 Dependabot 이 확인합니다.

개인 GitHub 활동을 한 화면에 모아 보여 주는 정적 페이지입니다. 2017년에 만들어 지금까지 형태를 바꿔 가며 유지하고 있습니다.

공개 저장소 목록과 언어 사용량 통계를 API 로 받아 빌드 시점 데이터로 저장하고, 화면은 그 데이터를 읽기만 합니다.

정적 호스팅에서 그대로 돌아가는 구조라 유지 비용이 거의 들지 않습니다.

변경 이력은 2017년 11월 첫 판에서 시작해 2018년 이력서 형식, 2020년 저장소 목록, 2022년 4~5월 언어 통계와 새 레이아웃·모바일 배치·TypeScript 전환으로 이어졌습니다. 그 뒤 2026년 9월 전면 개편까지는 의존성 갱신 외에 내용 변경이 없었습니다.

데이터 원천은 세 갈래로 나뉩니다. 프로필은 빌드할 때 받는 계정 정보, 저장소와 언어 통계는 수집 스크립트가 만든 정적 JSON, 한국어 이름과 소속은 설정 파일입니다. 한쪽만 갱신하면 화면이 어긋나므로 출처를 분리해 두었습니다. 언어 통계는 공개 소유 저장소의 언어별 바이트 수를 합산해 정렬한 값입니다.

의존성 잠금 파일이 사이트 생성 gem 묶음 하나만 고정하고 있어 개별 gem 을 직접 올릴 수 없었습니다. 그래서 수동 실행 워크플로로 허용 범위 안의 최신 패치 버전으로 잠금 파일을 다시 풀게 했고, 2022년부터 멈춰 있던 묶음 버전을 갱신한 2026년 9월 4일에 열려 있던 경고 42건이 한꺼번에 해소됐습니다.

공개 빌드 산출물의 파일 목록을 훑어 아무도 링크하지 않는데 주소로는 열리던 파일 세 종을 찾아 막았습니다. 2022년 메타데이터 덤프 파일은 지우고, 쓰지 않는 테마 스타일시트는 테마를 꺼서 빼고, 저장소 루트의 지침 마크다운이 페이지로 렌더되는 것은 제외 설정으로 막았습니다. 외부 기여자가 쓴 커밋 메시지의 꺾쇠 표기가 태그로 해석되어 글자가 사라지던 것을 실제 공개 사이트에서 확인해 모든 출력을 이스케이프했습니다.

호스팅 빌더가 최신 Sass 가 아니라 오래된 Ruby Sass 3.7 이라 min()·max() 같은 CSS 함수가 내장 함수로 잡혀 빌드가 깨집니다. 그래서 같은 gem 조합(github-pages 232)을 로컬에 구성해 정식 빌드로 확인합니다. 접근성은 단일 제목, 주 영역, 건너뛰기 링크, 포커스 표시를 갖추고, 커밋 목록은 스크립트 없이 동작하는 접기 요소로 바꾸었으며, 시스템 설정을 따르는 라이트·다크 테마를 첫 화면을 그리기 전에 적용해 깜빡임을 없앴습니다.

데이터 수집 워크플로는 도입 뒤 수동 실행 1회와 매주 월요일 정기 실행 5회(2026년 10월 11일까지)가 모두 성공했고, 이어지는 페이지 빌드도 확인한 10회 모두 성공했습니다.

구조와 흐름

빌드 흐름

빌드 시점GitHub GraphQL API저장소 · 언어 통계JSON정적 생성Jekyll · TypeScriptGitHub Pages
JekyllTypeScriptGitHub GraphQL
soma0sd.github.io