새 PR을 열기 전에, 변경 사항을 미리 보는 것이 좋다. 미리보기를 사용하면 빌드 오류나 마크다운 형식 문제를 알아낼 수 있다.
website의 컨테이너 이미지를 빌드하거나 Hugo를 로컬에서 실행할 수 있다. 컨테이너 이미지 빌드는 느리지만 Hugo 단축코드를 표시하므로, 디버깅에 유용할 수 있다.
CONTAINER_ENGINE 환경 변수를 설정한다.로컬에서 이미지를 빌드한다.
Hugo 도구 자체에 대한 변경을 테스트하는 경우에만 이 단계가 필요하다.
# 터미널에서 실행 (필요에 따라)
make container-image
로컬 리포지터리에서 서브모듈 의존성을 가져온다.
# 터미널에서 실행
make module-init
컨테이너에서 Hugo를 시작한다.
# 터미널에서 실행
make container-serve
웹 브라우저에서 http://localhost:1313 으로 이동한다. Hugo는
변경 사항을 보고 필요에 따라 사이트를 다시 빌드한다.
로컬의 Hugo 인스턴스를 중지하려면, 터미널로 돌아가서 Ctrl+C 를 입력하거나,
터미널 창을 닫는다.
또는, 컴퓨터에 hugo 명령을 설치하여 사용한다.
website/netlify.toml에 지정된 Hugo (확장 에디션)과
Node 버전을 설치한다.
모든 의존성을 설치한다.
npm ci
터미널에서, 쿠버네티스 website 리포지터리로 이동한 뒤 Hugo 서버를 실행한다.
cd <path_to_your_repo>/website
make serve
만약 윈도우 환경을 사용하거나 make 명령어를 실행할 수 없는 경우, 다음 명령을 대신 사용한다.
hugo server --buildFuture
웹 브라우저에서 http://localhost:1313 으로 이동한다. Hugo는
변경 사항을 보고 필요에 따라 사이트를 다시 빌드한다.
로컬의 Hugo 인스턴스를 중지하려면, 터미널로 돌아가서 Ctrl+C 를 입력하거나,
터미널 창을 닫는다.
기술적인 이유로 Hugo는 두 가지 바이너리로 제공된다. 현재
웹사이트는 Hugo Extended 버전만을 기반으로 실행된다. 릴리스 페이지에서
이름에 extended가 포함된 아카이브를 찾는다. 확인하려면 hugo version을 실행하여
extended라는 단어가 있는지 확인한다.
macOS에서 make serve를 실행했을 때 다음과 같은 오류가 발생하는 경우,
ERROR 2020/08/01 19:09:18 Error: listen tcp 127.0.0.1:1313: socket: too many open files
make: *** [serve] Error 1
열린 파일에 대한 현재 제한값을 확인한다.
launchctl limit maxfiles
그 다음, 아래 명령을 실행한다(https://gist.github.com/tombigel/d503800a282fcadbee14b537735d202c에서 가져옴).
#!/bin/sh
# These are the original gist links, linking to my gists now.
# curl -O https://gist.githubusercontent.com/a2ikm/761c2ab02b7b3935679e55af5d81786a/raw/ab644cb92f216c019a2f032bbf25e258b01d87f9/limit.maxfiles.plist
# curl -O https://gist.githubusercontent.com/a2ikm/761c2ab02b7b3935679e55af5d81786a/raw/ab644cb92f216c019a2f032bbf25e258b01d87f9/limit.maxproc.plist
curl -O https://gist.githubusercontent.com/tombigel/d503800a282fcadbee14b537735d202c/raw/ed73cacf82906fdde59976a0c8248cce8b44f906/limit.maxfiles.plist
curl -O https://gist.githubusercontent.com/tombigel/d503800a282fcadbee14b537735d202c/raw/ed73cacf82906fdde59976a0c8248cce8b44f906/limit.maxproc.plist
sudo mv limit.maxfiles.plist /Library/LaunchDaemons
sudo mv limit.maxproc.plist /Library/LaunchDaemons
sudo chown root:wheel /Library/LaunchDaemons/limit.maxfiles.plist
sudo chown root:wheel /Library/LaunchDaemons/limit.maxproc.plist
sudo launchctl load -w /Library/LaunchDaemons/limit.maxfiles.plist
이 방법은 Catalina와 Mojave macOS 모두에서 동작한다.
make container-serve를 실행했을 때 이 오류가 발생한다면, Makefile의
$IMAGE_VERSION에 정의된
특정 파일에 로컬 변경이 이루어졌기 때문일 수 있다.
웹사이트 이미지 버전에는 해시가 포함되며, 이 해시는
해당 파일의 내용을 기반으로 생성된다. 예를 들어, 이러한 파일에 대한 해시가 1b9242684415이면
웹사이트 이미지는 k8s-website-hugo:v0.133.0-1b9242684415라는 이름을 갖는다.
make container-serve를 실행하면 쿠버네티스 웹사이트의 GCR에서
해당 이미지를 가져오려고 시도한다. 현재 버전이 아닌 경우, 이 이미지가
존재하지 않는다는 오류가 표시된다.
이러한 파일을 변경하고 웹사이트를 미리 봐야 한다면,
미리 빌드된 이미지를 가져오는 대신 로컬 이미지를 빌드해야 한다.
이를 위해 make container-image를 실행한다.
로컬에서 웹사이트를 실행하거나 변경 사항을 미리 보는 과정에서 다른 문제가 발생하면,
kubernetes/website GitHub 리포지터리에 자유롭게
이슈를 생성한다.