🏃🏻 들어가며
이력서와 포트폴리오를 업데이트하며, 기존에 제작했던 Github Profile README 의 구성도 업데이트를 하게 되었습니다.
"README 를 꾸미는데 사용할 도구로 괜찮은게 없을까" 찾는 과정에서 다양한 템플릿을 지원하는 lowlighter/metrics 를 발견하게 되었고, 이를 사용해 README 업데이트 작업을 진행하였습니다.
이 과정에서 티스토리 RSS 를 활용해 lowlighter/metrics 의 "블로그 포스팅 리스트" 템플릿을 설정하는 과정에서 발생한 406 에러에 대한 해결 과정을 담고 있는 포스팅 입니다.
⚒️ lowlighter/metrics 작업
lowlighter/metrics 템플릿은 하나의 svg 파일을 생성하거나 여러개의 svg 파일을 생성하여 README 에 배치할 수 있습니다.
저는 필요한 템플릿을 모두 구성하고 하나의 svg 파일을 생성하여 정상적으로 동작하는지 테스트 후 템플릿 배치 변경을 위해 여러개의 svg 파일을 생성하여 재배치하는 방향으로 진행하고자 하였습니다.
1차 : Github Action 제작
기본적인 템플릿 제작은 별도의 Generator 페이지 가 있어 손쉽게 템플릿 구성과 그에 필요한 Github Action 코드를 만들 수 있었습니다.
# Generator 페이지에서 생성된 Github Action 코드
# Visit <https://github.com/lowlighter/metrics#-documentation> for full reference
name: Metrics
on:
# Schedule updates (each hour)
schedule: [{cron: "0 * * * *"}]
# Lines below let you run workflow manually and on each commit
workflow_dispatch:
push: {branches: ["master", "main"]}
jobs:
github-metrics:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: lowlighter/metrics@latest
with:
token: ${{ secrets.METRICS_TOKEN }}
# Options
user: tlowac
template: classic
base: header, activity, community, repositories
base_hireable: yes
config_display: large
config_padding: 1, 8 + 10%
config_timezone: Asia/Seoul
plugin_activity: yes
plugin_activity_days: 14
plugin_activity_filter: all
plugin_activity_limit: 5
plugin_activity_load: 298
plugin_activity_visibility: all
plugin_followup: yes
plugin_followup_archived: yes
plugin_followup_indepth: yes
plugin_followup_sections: repositories
plugin_languages: yes
plugin_languages_analysis_timeout: 15
plugin_languages_analysis_timeout_repositories: 7.5
plugin_languages_categories: markup, programming
plugin_languages_colors: github
plugin_languages_limit: 8
plugin_languages_recent_categories: markup, programming
plugin_languages_recent_days: 14
plugin_languages_recent_load: 300
plugin_languages_sections: most-used
plugin_languages_threshold: 0%
plugin_rss: yes
plugin_rss_limit: 4
plugin_rss_source: https://helicopter55.tistory.com/rss
2차 : README.md 수정
앞서 제작한 Github Action 이 실행되고 Profile Repo 의 Root 경로에는 github-metrics.svg 가 결과물로 생성되게 됩니다.
( 별도의 파일명을 사용할 수 있으며, 템플릿을 쪼개서 각각의 파일을 만들어 사용할 수도 있습니다. )
이렇게 생성된 github-metrics.svg 를 README.md 에 불러와 사용하면 됩니다.
<p align="center">
<img src="/github-metrics.svg" alt="Metrics" width="400">
</p>
3차 : 결과물 확인
생성된 lowlighter/metrics 템플릿이 정상적으로 Github Profile README 에 반영된것을 확인 할 수 있었습니다.
💥 이슈 발생
여기까지 확인을 했다면 사실상 Github Action 을 쪼개고 템플릿 배치만 수정하여 README 를 업데이트하면 작업이 끝날것으로 예상을 했습니다. 하지만, 항상 한번에 끝나는건 없는것 같습니다 :)
1차 : 에러 로그 확인 Unexpected error > 406 Error - Not Acceptable
README 에서 “RSS feed” 템플릿에서 “Unexpected error” 가 발생한것을 발견하였습니다.
Gihub Action 은 “Passed” 로 표시되어 있더라도 로그상에서 티스토리 블로그의 rss 데이터를 불러오는 과정에서 에러가 발생하는것을 확인 할 수 있었습니다.
✅ 이슈 해결
1차(실패) : 블로그 포스팅 리스트 표시를 위한 Github Action 변경
예전에 gautamkrishnar/blog-post-workflow 를 사용하여 Github Action 을 구성했을때 티스토리 rss 데이터가 정상적으로 불러와졌던 기억이 있어 블로그 포스팅 템플릿만 대체할 생각으로 주석 처리해놓았던 코드를 되살려 Github Action 을 실행 해보았습니다.
하지만, 기대와는 다르게 여기서도 동일하게 406 Error - Not Acceptable 에러가 발생했습니다.
2차 : 찾게된 알맞은 검색 키워드
여러가지 키워드를 사용해 검색하는 과정에서 발견한 대부분의 글들은 Java + Spring 에서 발생하는 xml 파싱 406 에러에 대한 내용이었습니다. 명확한 해결책을 찾을 수 없어 삽질을 반복하고 있을때 gautamkrishnar/blog-post-workflow 프로젝트의 이슈를 발견하게 되었습니다.
3차 : gautamkrishnar/blog-post-workflow 406 Error 이슈 히스토리
당시에 제가 맞딱뜨린 이슈의 상황과 해당 이슈가 거의 유사했고 감사하게도 해당 이슈에 대한 히스토리와 동작이 되는 코드를 확인 할 수 있었습니다.
https://github.com/gautamkrishnar/blog-post-workflow/issues/19
accept-header 에 대한 문제 제기
로컬 환경에서 accept-header 를 “text/xml” 로 변경하여 테스트를 했을때 정상 동작
해당 사항을 반영하여 accept_header 를 수정할 수 있게 변경하였다.
실제로 해당 issue 에 연결된 PR 과 merge 된 코드를 확인해보았습니다.
Github Action 상에서 accept_header 를 입력할 수 있게 수정된것을 확인할 수 있었습니다.
4차 : 티스토리 RSS Response Header 의 Content-Type 확인
실제 티스토리 블로그의 RSS 의 Response Headers 를 확인해보았을때 "Content-Type : text/xml;charset=UTF-8" 인것을 확인할 수 있어 방향성에 대한 어느정도 확신을 갖게 되었습니다.
5차 : accept_header : "text/xml" 옵션 추가
- 기존 : lowlighter/metrics
- 변경 : gautamkrishnar/blog-post-workflow
블로그 포스팅 리스트 표시를 위한 Github Action 을 변경하고 accept_header : “text/xml” 와 user_agent 를 추가하고 실행해 보았습니다.
그 결과 Github Action 도 정상적으로 동작하고 블로그 포스팅 리스트도 노출되는것을 확인하였습니다! XD
🚀 결과물!
마무리하며
Github Action 을 lowlighter/metrics에서gautamkrishnar/blog-post-workflow 로 변경하고 accept_header 을 수정하며 문제를 해결 할 수 있었습니다.
이 과정에서 lowlighter/metrics 에서도 accept_header 를 수정할 수 있는지 확인해보았는데 아쉽게도 해당 기능은 지원하지 않는것 같았습니다. 나중에 기회가 되면 해당 issue 로 contribution 하는것도 고려해 보아야겠습니다 :)
긴글을 끝까지 읽어주셔서 감사합니다.
이만 글을 줄입니다.
'99% 에러잡기 시리즈 > Git & Github' 카테고리의 다른 글
[Git 99% 에러잡기] [rejected] master -> master (non-fast-forward) error: failed to push some refs to ' ' (2) | 2020.07.14 |
---|
댓글