bookdown 저작을 시작하는 가장 좋은 방법 중의 하나는 rstudio/bookdown-demo 템플릿으로 시작하는 것이다. 즉, Use this template을 클릭하여 본인 GitHub 저장소에 원하는 이름으로 가져온다. 이 작업을 통해 GitHub 저장소를 하나 만들게 되었고 이를 로컬 작업 컴퓨터로 가져와서 다양한 저작작업을 수행하게 되고, GitHub Action을 통해 CI/CD작업을 자동화시킬 수 있고 마지막으로 Netlify 설정을 통해서 Production으로 책을 온전한 저작물로 서비스가 가능하게 된다.
2.2 로컬 컴퓨터 작업
rstudio/bookdown-demo 템플릿을 본인 GitHub 계정으로 저장소 명칭을 부여해서 가져온다. 이를 통해 로컬 컴퓨터에서 작업할 수 있는 기반을 구축한다. 보통 git clone 명령어를 통해 로컬 컴퓨터 적당한 디렉토리로 가져오게 된다.
index.Rmd R 마크다운 파일을 열고, RStudio build 탭에 Build Book을 클릭한다. 혹은 윈도우의 경우 Ctrl + Shift + B 단축키로 원하는 방식대로 책이 저작되는지를 확인한다.
2.3 GitHub Repo를 Netlify 등록
Netlify 웹사이트에 bookdown으로 저작한 책을 배포하기 위해서는 먼저 Netlify 웹사이트에 GitHub 저장소를 연결시켜야 된다. GitHub 계정으로 Netlify에 가입하게 되면 Netlify에서 GitHub 저장소가 보이게 되고, 필요한 저장소만 Netlify로 가져와서 연결 등록작업을 수행한다.
2.4 Netlify 정보 생성
Netlify 입장에서 GitHub 저장소를 인식하기 위해서 Netlify에서 발급한 OAuth Key와 APP ID 두개 정보가 필요하다. 이를 위해서 다음과 같이 API ID는 연결시킨 GitHub 저장소 Site Settings 메뉴를 통해 갈 수가 있다. API ID 키값을 얻은 후에 Netlify OAuth Key도 User Settings → Applications → New access token → Generate token 순으로 생성시킬 수 있다.
2.5 GitHub Secrets 등록
Netlify 웹사이트에서 발급받은 본인을 인증할 수 있는 OAuth Access Token / NETLIFY_AUTH_TOKEN 과 GitHub 저장소 API ID / NETLIFY_SITE_ID 를 GitHub 저장소 Secrets에 등록시킨다. 이를 통해서 Netlify 웹사이트와 GitHub 저장소가 비로소 연결이 된다.
2.6_book 배포 디렉토리
bookdown 빌드(CTRL + Alt + B)를 할 경우 작업 결과물이 _book 디렉토로리 publish 된다. _book 디렉토리를 Publish directory에 명시적으로 설정한다.
2.7 GitHub workflow 생성
r-lib/actions에 다양한 R 개발물을 활용할 수 있는데 use_github_action("bookdown.yaml") 명령어를 통해 bookdown 중심 CI/CD를 구성할 수 있다.
bookdown과 별개로 책 저작과정에서 설치되는 다양한 팩키지를 renv::snapshot() 명령어를 통해 자동으로 통합과 배포를 하여 책을 netlify로 Production 시킬 수 있게 된다.
renv::snapshot()
3 책 저작 후 자동 출판
평소와 다름없이 bookdown 저작에 집중하고 나서 이를 GitHub에 git add, git commit -m, git push를 통해 올리게 되면 GitHub Actions가 돌아 이를 netlify로 넘기고 자동으로 netlify에서 정의한 https://book-penguin.netlify.app/ 웹사이트에 배포가 된다.