Github Page

레이블이 DevOps-Mkdocs인 게시물을 표시합니다. 모든 게시물 표시
레이블이 DevOps-Mkdocs인 게시물을 표시합니다. 모든 게시물 표시

1/02/2026

Github Pages/Mkdocs/ReadMe 정리2

1. Mkdocs 와 Github 문서정리 

아무리 생각을 해보도 Github Pages로는 Mkdocs가 가장 적절한 것으로 판단이 되어진다.
여러 개를 써봤지만, 이렇게 깔끔하게 내 취향을 좋게 맞춰주는게 많지 않을 듯하다.

Why
Markdown 문서 기반으로 Web hosting이 쉽게 해주기 때문이다.

Limitations
다만 기술 문서 관점에서 다시 평가하면,
reStructuredText(.rst) 중심의 Sphinx가 더 적합한 선택으로 보인다 (Sphinx도 Markdown 지원함)
Doxygen + Breathe + Exhale 의 조합이 가장 낫을 듯하다. 
여기에 Call Flow도 넣으면 더 좋고 (이외에 PDF, ePUB 등) 

  • Github 와 Mkdocs
현재 Github의 Markdown과 Mkdocs가 가장 적절하게 운영할 수 있는 것 같으며, 최근 변화에도 그런 것 같다.   

  • ReadTheDoc 사용 (Sphinx 와 mkdocs)
현재도 ReadTheDoc를 무료로 사용하고 있으며, 이 사이트는 Sphinx 와 Mkdocs 둘 다 지원

  • Readme 와 ReadtheDocs 가격비교 
ReadTheDoc 괜찮지만, 아래의 Readme도 한번 사용해봐야 겠다. 무료로 써 본 다음에 결정 

Readme 가격 
무료로 쓰려고 했으나, 실패

ReadtheDocs 가격 
현재도 사용중이며, 다만 서버가 간혹 문제가 발생하는 경우가 발생하지만 무료로 이것만으로도 만족^^



1.1  Mkdocs 의 설치 

mkdocs는 구글로 검색을 하면 쉽게 다 알 수 있으며, 작성 방법도 너무 쉬우므로, 
아래와 같이 각 Link만 연결하도록 한다. 

Mkdocs 관련설명


  • Mkdocs 의 Plugin (Mkdocs 문서 to PDF)

  • Mkdoc 의 기본 Manual 
mkdocs의 기본 Manaul 이므로 당연히 필독!

  • Mkdocs Material Manual
Material 세련되게 사용하고 싶다면, 아래의 사이트는 전체 다 세부적으로 읽어보는 것을 추천 
다만, 일반 Markdown 방식과 호환 안되는 경우가 있으므로 Material Theme 용으로만 사용. 
Material Convention (Symbol) 알아두고, 각 아이콘을 기억 
Github Action 기반의 Github Pages 설정 (개선을 하시면 더 좋고)
세부설정-Material Setup 부분 반드시 확인 
(색상/Fonts/Lanuage/logo, Google Analytics 등 )
세부설정-Icon 과 좀 더 세련된 박스 제공 
세부설정-markdown table도 더 세련되게 
세부설정-icon/emoji도 좀 더 세련되게 
세부설정-Material Plugins 기능들 (다양함, Blogs처럼 사용가능)

  • Python 기본설치 
Python 기반으로 기본설치 
$ pip install mkdocs                           // Python mkdocs 설치 
$ pip install pymdown-extensions               // markdown extension 


Mkdocs 설정관련내용 (Python 설치 및 설정)
쉽게 설명을 해주고, 자주 업데이트 해주셔서 감사하다. 

  • mkdocs theme 설치 
$ pip install mkdocs-material                  // mkdocs theme
$ pip install mkdocs-material-extensions       // mkdocs theme
$ pip install mkdocs-rtd-dropdown              // mkdocs theme 

  • Mkdocs 의 Themes
상위 이외에 다양한 Themes 이 존재하므로 설치해서 사용 
현재 material만 꾸준히 Update되고 있으며, 이것을 사용하는게 맞을 것 같지만, 이상하게 더 readthedocs가 더 끌린다. 

  • 기타 Plug 설치 
$ pip install mkdocs-mermaid2-plugin           // mermaid2 
$ pip install mkdocs-with-pdf                  // mkdoc to pdf

PDF의 경우, 현재 한글이 완벽히 지원되지 않음 주의! 
PDF의 경우, 현재 Browser에서 직접 인쇄를 이용하여 인쇄하는게 가장 낫을 듯 싶다. 

1.2  mkdocs File 구성 

Github 쉽게 공유되어지며, 아래와 같이 구성한다. 

$ tree
docs
└── index.md    


1.3  mkdocs 관련설정 

참고만 하고, 실제는 좀 더 세련되게~~ 사용해야지 (Google Analytics도 사용하고)

mkdocs.yml (theme: marterial)




mkdocs 의 material mkdocs.yml 예제 

mkdocs 의 material의 세부변경사항 이해 


mkdocs 의 theme 
readthedocs 와 rtd-dropdown 
  
mkdocs 의 theme 종류 

  • mkdocs 의 Chart/Images, Tables, and Graph 
MkDocs GLightbox 
plantuml-markdown
mermaid2 
charts 
Markdown blockdiag 
drawio-exporter 

mkdocs 의 pdf 와 epub

docgen 


2. GitHub Pages 자동연동 

Github Action 으로 쉽게 Github Pages에 연동이 가능하므로, 다양하게 사용이 가능하다.
Google Analytics 본인 직접 설정도 가능하다.
언어도 2개 이상도 다 지원가능하며, 다양하게 사용가능하다.
다만 언어를 2개 사용하면, 골치 아픈게 2개의 언어로 다 따로 작성을 해야해서~ 

  • 나만의 Profile 완성 
세부내용은 상위와 많이 다르나, Marterial Manual을 보면서 수정을 하면, 쉽게 할 수 있다고 생각한다.

8/11/2023

Mkdoc 와 Github 문서정리

1. Mkdocs 

이전에 Sphinx 와 Mkdocs 기반으로 환경을 구축하여 간단하게 테스트를 한적이 있는데, 
Mkdocs만으로 쉽게 Github의 Markdown 문서를 관리하는 법을 간단히 소개한다. 

이유는 Mkdocs는 Markdown 으로만 사용하기 때문에 Github와 더 잘 어울린다. 
다만 아쉬운것은 Sphinx에 비해 Plugin이 좀 떨어질 뿐이다. 

  • ReadTheDoc (Mkdocs/Sphinx 둘 다 지원)
ReadTheDoc 사용법 및 Sphinx 와 Mkdocs 비교 (Doxygen 기본 사용법)

  • Mermaid.JS 사용예제
Github에서는 이미 Markdown에 mermaid를 제공하지만, 아래와 같이 Mermaid.js로 해도됨


  • 기본설치 및 테스트 진행
가급적 Linux 기반으로 설치하도록 하며, Window에서는 WSL를 통해서 하자  
$ pip install mkdocs
$ sudo apt install mkdocs 
$ mkdocs new mkdocs-project
$ cd mkdocs-project
$ ls docs mkdocs.yml $ cat mkdocs.yml #설정확인 site_name: My Docs $ mkdocs serve # 에러발생하여 아래 Package Version 변경으로 해결 INFO - Building documentation... INFO - Cleaning site directory INFO - Documentation built in 0.08 seconds INFO - [16:11:08] Watching paths for changes: 'docs', 'mkdocs.yml' INFO - [16:11:08] Serving on http://127.0.0.1:8000/ INFO - [16:11:11] Browser connected: http://127.0.0.1:8000/ INFO - Shutting down... $ mkdocs build # site에 webpapage 와 xml 생성확인 $ mkdocs build INFO - Cleaning site directory INFO - Building documentation to directory: /home/jhlee/project/mkdocs-project/site INFO - Documentation built in 0.03 seconds



1.1 Mkdocs PDF 배포 

아래와 같이  mkdocs-with-pdf를 별도 설치진행 
$ pip install mkdocs-with-pdf 

$ vi mkdocs.yml  #plugins 추가 pdf 
site_name: My Docs
plugins:
    - with-pdf

$ mkdocs build  # PDF 파일 과 HTML 파일 생성  
INFO     -  Cleaning site directory
INFO     -  Building documentation to directory: /home/jhlee/project/mkdocs-project/site
INFO     -  Number headings up to level 3.
INFO     -  Generate a table of contents up to heading level 2.
INFO     -  Generate a cover page with "default_cover.html.j2".
INFO     -  Converting  alignment(workaround).
INFO     -  Rendering for PDF.
INFO     -  Output a PDF to "/home/jhlee/project/mkdocs-project/site/pdf/document.pdf".
INFO     -  Converting 1 articles to PDF took 0.7s
INFO     -  Documentation built in 0.70 seconds

$ tree      # tree 명령어로 전체구성 다시 확인 
.
├── docs                # docs 밑에, Markdown 구성하여 문서 구성 , 이는 Github에서 호환사용가능
│   └── index.md          # 기본 문서확인
├── mkdocs.yml             # 상위 설정확인
└── site                # mkdocs build 결과 (HTML, PDF)             
    ├── 404.html
    ├── css
    │   ├── base.css
    │   ├── bootstrap.min.css
    │   └── font-awesome.min.css
    ├── fonts
    │   ├── fontawesome-webfont.eot
    │   ├── fontawesome-webfont.svg
    │   ├── fontawesome-webfont.ttf
    │   ├── fontawesome-webfont.woff
    │   └── fontawesome-webfont.woff2
    ├── img
    │   ├── favicon.ico
    │   └── grid.png
    ├── index.html
    ├── js
    │   ├── base.js
    │   ├── bootstrap.min.js
    │   └── jquery-1.10.2.min.js
    ├── pdf
    │   └── document.pdf
    ├── sitemap.xml
    └── sitemap.xml.gz


mkdocs-with-pdf


1.2 CHM (Window HTML 설명서)

chm파일은 Window에 주로 API 설명서를 구성하기 위해서 예전에 많이 사용했다. 

  • chm 파일 viewer 설치  (WSL 설치가능, Linux 지원)
sudo apt-get install xchm 

상위를 실행시키면 쉽게 Viewer 확인 


  • HTML -> CHM 파일 생성 방법 링크 
다 확인해보지 않고 링크만


1.3 mkdocs 문제사항 정리 

Linux에서는 거의 발견못했는데, 주로 Window 기반의 WSL에서 실행했을 경우 발생하였다.  
원인을 보면, 버전의 호환성문제로 각 버전을 맞춰 재설치를 진행

  • mkdocs serve 에러문제 
 AttributeError: 'zipimport.zipimporter' object has no attribute 'exec_module'
$ pip install markdown==3.2.2  # 

 AttributeError: 'EntryPoints' object has no attribute 'get
$ pip install importlib-metadata==4.13.0   # (5.0.0->4.13.0)

  • mkdocs build (plugin)에러문제 
Window에서 실행할 경우 발생 
 OSError: cannot load library 'gobject-2.0-0': error 0x7e.  Additionally, ctypes.util.find_library() did not manage to locate a library called 'gobject-2.0-0' 

보통 Doxygen을 사용하면, chm file을 많이 사용하는데, Linux에서도 아래와 같이 볼수는 있다.


2. mkdocs 쉬운구성환경 

  • Mkdocs 사용방법정보 
모든정보가 다 이곳에 있어, 간단히 여기서 정리끝날꺼 같다.   


Github 와 연동 예제 


현재 나의 경우, Sphinx 보다는 mkdocs가 좀 더 Github와 Markdown으로 잘되어 이게 더 편한 것 같다. 
설정이야, 본인 theme 부터 변경해서 차근차근사용하면 될꺼 같다. 

6/04/2021

ReadTheDoc 의 Doc Host (Mkdoc/Sphinx)

1. RST 파일 과 Markdown

기술문서작성 흐름이 RST or Markdown 기반으로 손쉽게 작성가능하도록 변경되어져 가며,
이를 지원하는 Python Package들이 존재하는 것을 그동안 알지 못했다. 
ESP-IDF 개발환경에 관련된 문서를 분석하면서 많은 부분을 알게되었는데, 쉽게 문서작업하는 방법과 
Python 기반의 Doxygen 연결부분을 알게되었지만, 
ESP-IDF의 경우, Espressif에서 독자적으로 많이 고쳐가면서 구현한걸로 보인다. 

ESP32/ESP-IDF Sphinx 의 구성 

점점 아래의 Markup Language기반으로 기술문서가 변화되어져가며, 이는 호환성과 문서의 간결성이 중요해질 것 같다. 
다양한 보조도구들이 등장하는데, 이들도 쉬운작성법과 호환성 및 Open Source를 기반으로 하기 때문에 많이 사용되어지는 것 같다.
 
RST 파일 (Sphinx 사용)

Markdown 


1.1 Python 기반의 기술문서작성(Sphinx 와 Mkdocs) 

현재 Python 기반으로 구성된 Program은 Sphinx 와 Mkdocs기반으로 크게 두 갈래로 방향이 나뉘어 작성되어지며 가는 것으로 보인다. 
대체적 보면, Sphinx 기반으로 많이 선택해서 사용하는 것으로 보이는데, 다양한 기능 과 확장성 때문이라고 생각되어진다.

RST 과 Markdown 지원으로 문서작성가능하지만, 기반이 RST기반으로 사용한다. 
둘다 Markup Language이므로 쉽게 도표 및 테이블이 쉽게작성 가능하며, 다양한 확장패키지들을 제공하고 있어, 기능확장되어
점점 더 많은 패키지들을 제공하고 있으므로, 아래의 링크로 확인가능 

Sphinx기반으로 문서작성법
재미있는 것은 Sphinx의 Theme도 ReadTheDoc에서 제공해주고 있는데, 이 기반으로 사용하면 좋은 것 같다. 
ESP32의 경우도 이 Theme을 기반으로 별도 수정해서 사용하고 있지만, 변경해서 사용하고 있다. 


Sphinx Extension

Sphinx Extension 중 유용할 것 같은것들 

반드시 다른 ReadTheDoc Github 내부사이트의 Python requirements.txt 확인 


Markdown 기반으로 문서작성 가능하며, 다루기는 이게 더 편할걸로 생각되어진다. 
하지만, 아직 확장패키지까지 다 설치를 해보지 못하여 완벽한 비교는 못하겠지만, Sphinx 만큼의 확장패키지를 제공못하는 걸로 생각되어진다. 

Mkdocs 기반으로 문서작성법 
Python 설치해보고 기본테스트만 해봄 

만약 Sphinx와 Mkdocs를 설치해서 테스트하고자 하면, virtualenv(venv)를 사용하거나 conda를 이용하여 하도록하자.

  • Sphinx 와 Mkdocs 비교 
솔직히 RST과 Markdown의 큰 차이성은 아직 잘 모르겠으나, RST가 좀 더 많은 기능을 가진것으로 보인다.  
예를들면 RST 파일의 toctree 구성이 될 것 같다. 
두개 다 비슷한 문법으로 사용되어진다고 생각되어지지만, 다르다고 하니, 
차차 문서를 직접 작성할 경우에, 다른점들을 비교해가면서 알아보도록하자. 

1.2 Sphinx 와 Doxygen 기능확장 

Doxygen기반으로 구축하며 문서작성을 한다면,  소스에 각 함수의 설명들을 쉽게 문서화가 가능하므로 
Sphinx와 Doxygen을 연결하여 사용가능하다. 
현재 대부분 이런형식으로 기술문서들이 구성되어 사용되어지는 것 같으며, Sphinx에서 Doxygen을 이용한다면,  
Breathe를 반드시 설치한 후 사용해야하며,  이 Breathe 역할은 Doxygen 부분을 연결해주는 것이라고 한다.  
아래의 링크처럼 최종적으로 모든것이 Cmake에서 관리되도록 구성하여 최종관리를 한다. 
 
  • Sphinx/Breathe/Doxygen/Cmake 기반의 문서구성 
Cmake기반으로 가장잘 설명된 좋은 예제 인것 같으며, Doxygen도 사용할 경우 괜찮을 것 같다. 


  • Sphinx 기반의 ESP32 Doxygen 분석 
처음에 Github의 Page에서 *rst를 인식해서 Web Host 하는 줄 알았다. 
ReadTheDoc 기반으로 구성되어진다는 것을 알게되었으며, 모든 것이 쉽게 풀리게되었다. 
앞으로 가급적 ReadTheDoc를 이용하도록 하겠다. 


물론 Doxygen까지 필요 없다면, 쉽게 Mkdocs구성도 괜찮을 걸로 생각되어진다. 


2. ReadTheDocs 의 Host 사용법

이 사이트는 이전에 Sphinx 기반으로 문서작성법을 알아보다가 알게된 사이트이며, 상위 Sphinx와 Mkdocs를 둘다 지원한다. 
Git사이트의 Web host 전문사이트라고 생각하면 되겠으며, Github에서 Page를 HTML기반으로 설정하면 되겠지만, 너무 불편하다.
그리고, Github의 Page Web Host는 한계가 있는것 같다. 

  • ReadTheDocs의 Doc Host 기능 
  1. Git(Github/Gitlab) 사이트에서 작성된 Sphinx or Mkdocs 기반으로 문서작성 
  2. Git 사이트에서 작성된 문서를 ReadTheDocImport  
  3. .readthedocs.yml 설정기반으로 기본 Python 환경설정
  4. Git사이트의 Python의 requirements.txt 부분 확인 (ReadTheDoc는 가상환경에 설치)
  5. Sphinx or Mkdocs 기반으로 빌드하여, HTML로 환경구축
  6. Build에 문제없다면, 이를 Web Host 진행완료 

  • ReadTheDoc의 기본사용법과 특징 

  • ReadTheDocs (Sphinx/Mkdocs)
Sphinx 와 Mkdocs 둘자 지원가능 

  • .readthedoc.yml 
Git 사이트내에 반드시 존재해야하며, 이 설정값 기반으로 Python 환경구축하므로 반드시필요 

  • Github 의 Page 사용법 
만약 ReadtheDocs를 사용하지 않고 Github에서 host하고자 하면, HTML로 만들어서 이곳에서 설정 이부분 이전에 설명 



2.1 ReadTheDocs 의 사이트종류 

ReadTheDocs 사이트는 두개로 나뉘어지며, Community 와 Business Version으로 나뉘어지며, 사이트도 다르다 

  • Community ReadTheDocs 
무료로 사용가능하며 Custom Domain 지원가능도 가능하며, 오픈소스들위해서 무료로 제공해주고 있다
다만 광고를 봐야하며, 광고를 삭제하고자 하면 돈을 지불해야함 

  • Business ReadTheDocs
Business 용으로 유료버전으로 기능을 제공을하는데, 현재 사용해보지는 못해서 아래 지원기능만 링크 

Business ReadTheDocs 특징과 설명 
Google의 G Suit와 도 연결해서 사용가능한것 같다 

  • ReadTheDocs의 Custom domain 설정 
아래와 같이 쉽게 ReadTheDoc Community 에서 쉽게 Host가 가능하며, Community도 Custom Domain을 지원한다.


2.2 ReadTheDocs 와 Github 연결방법

나의 경우, Github 와 ReadTheDocs Comminity로 연결하여 아래와 같이 구성하였다. 

사용법은 어렵지 않으며, 우선 가입후 Github/Gitlab등 Git사이트와 연결을 하도록하자. 
이부분은 WebHook부분을 보면될 것이며, Github기반으로 가입하면 별도의 설정은 필요없다. 

  • ReadTheDocs 사이트
본인설정확인 
 
  • Github의 Setting Webhook 확인 



Integrations 부분은 설정만 확인했지만, Github에서 Automation 기능은 아직 설정해보지 못함
(Github application을 별도로 설치진행해야 할 것 같음)

ReadTheDocs Host 관련문서 및 Github와 연결방법  



2.3 ReadTheDocs의 Build 방법  

  • ReadTheDoc의 Build Example 
Build를 진행하면 시간이 상당히 많이 걸리며, 아래와 같이 쉽게 Build 과정을 볼수 있다.



Build가 Fail이 되면 관련부분 을 분석해서 보도록하며, 상위 설정파일(.readthedoc.yml) 같이 봐야하며, 
ReadTheDoc Server에서도 VirtualEnv기반으로 구성하며, 관련설치부분을 자세히 보도록하자.


Build가 된후 ViewDoc를 보면 되며, 관련링크로 Host가 진행됨 



사용후 가장 좋은 점 바로 수정 Github에서 수정가능하며, 이를 Github에서 확인이 가능하다. 


3. ReadTheDocs의 나의 Host예제   

상위와 같이 쉽게 빌드하여, 나도 아래와 같이 쉽게 ReadTheDocs를 이용하고 있으며, 
아래와 같이 간단하게 Examples들을 링크한다. 

  • Github 기반의 ReadTheDoc Host TEST Example 1
ReadTheDocs에서 제공해주는 Github Template을 가져와서 이를 Build후 Web Host 진행

ReadTheDoc의 WebHost Ex.1

ReadTheDoc의 Github 

  • Github 기반의 ReadTheDoc Host TEST Exampe 2 
현재 ReadTheDocs 관련문서도 Github기반으로 작성되어있으므로, 이를 Github에서 Fork를 하고 가져와서 
이를 ReadTheDocs로 가져온 후 Build 후 Web Host 진행 

ReadTheDoc의 WebHost Ex.2 

ReadTheDoc의 Github 


3.1 ReadTheDoc를 이용한 다른사이트의 예 

여러 사이트를 보면, Doxygen은 옵션으로 많이 사용하며, Doxygen 필요성도 크게 의문도 들기도한다. 
함수의 API의 설명과 관계도를 자세히 보고자 한다면 필요하겠다 (특히 , C++, Java)

나의 개인생각으로는 Doxygen까지 필요 없다면, Mkdocs를 이용해도 괜찮을 것 같다. 
다만, 다른 사이트들을 보면 거의 Sphinx 위주로 구성되어 작성되어지는 것을 볼 수 있다. 
개인생각으로는 확장성때문일 걸로 생각되어진다. 


ReadTheDoc Hosting 설정(Sphinx) 

  • Godot Docs (Github 연결)
추후 사용할 시 반드시 참고해야하며, 메뉴와 설정이 다양하게 구성되었으며, Sphinx 이용 

  • ESP-IDF (Github 연결)
ESP-IDF로 자세히 Manual을 사용하며, Sphinx 기반으로 작성 

  • Verilog-To-Routing (Github 연결)
오직 문서 구성과 방식 보며, 간단하며, 역시 Sphinx 기반으로 작성 


기타