본문으로 이동

소스에서 빌드

Wikven
이 문서는 Building from source 문서를 번역한 것이며 번역은 100% 완료했습니다.

이 문서가 필요한 경우는 드뭅니다. 설치는 미리 빌드된 바이너리와 이미지를 제공하며, 완성된 사이트에 이르는 길로는 어느 쪽이든 이쪽보다 짧습니다. 직접 고친 내용을 실행하거나, 아직 어떤 릴리스에도 담기지 않은 커밋을 실행할 때 소스에서 빌드하십시오.

아무것도 빌드하지 않고 배포 전 커밋을 실행하려면 나이틀리 빌드가 있습니다. 날짜가 붙은 nightly-YYYY-MM-DD 이미지 태그와, 바이너리의 나이틀리 릴리스입니다.

두 산출물 모두 Docker가 빌드합니다. 바이너리도 마찬가지여서 -- 그 안에 내장되는 정적 PHP는 컨테이너 안에서 컴파일됩니다 -- 호스트에 필요한 것은 git과 Docker뿐입니다.

이미지

저장소를 복제하고 빌드하십시오:

git clone https://github.com/chaotic-ground/wikven.git
cd wikven
docker build -t wikven .

이렇게 하면 로컬 wikven 이미지가 남고, 시작하기가 게시된 이미지를 실행하는 방식 그대로 실행하면 됩니다. 다른 것은 이름뿐입니다.

바이너리

단독 실행 바이너리는 이미지의 트리를 그대로 내장하므로, 같은 체크아웃에서 이미지를 먼저 빌드하십시오. 그런 다음:

docker build -f binary.Dockerfile --target export -o type=local,dest=out .

out/wikven이 실행 파일입니다. --target export는 binary.Dockerfile의 마지막 스테이지에서 멈추는데, 그 스테이지에는 컴파일된 바이너리 말고는 아무것도 없습니다. -o는 그 스테이지를 이미지로 적재하는 대신 디렉터리에 씁니다.

이미지를 빌드할 때보다 훨씬 오래 걸립니다. 정적 PHP를 소스에서 컴파일하고, 내장된 트리를 감싸 FrankenPHP를 링크하기 때문입니다. 릴리스 바이너리를 만드는 워크플로는 이 단계에 한 시간을 허용합니다.

나오는 결과물은 빌드한 아키텍처용이며, 어디에 두든 그 자리에서 실행됩니다:

WIKVEN_WORKDIR=. ./out/wikven build

PATH에 설치하는 방법과, 있으면 함께 쓰는 호스트 프로그램은 단독 실행 바이너리에서 다룹니다.

GitHub 요청 제한

정적 PHP 빌드는 컴파일할 라이브러리를 api.github.com을 통해 찾는데, 토큰을 보내지 않는 주소에는 시간당 60번만 응답합니다. 회사 네트워크라면 그 뒤에 있는 모두가 그 몫을 나눠 씁니다. 여기서 멈춘 빌드에는 토큰이 필요하고, 이미 로그인해 둔 계정의 토큰은 GitHub CLI가 출력해 줍니다:

GITHUB_TOKEN=$(gh auth token) docker build -f binary.Dockerfile --target export \
  --secret id=github-token,env=GITHUB_TOKEN -o type=local,dest=out .

빌드 시크릿으로 전달되므로 이미지의 어떤 레이어에도 기록되지 않습니다.


Wikven을 빌드하는 데 그치지 않고 직접 손보려면, 개발이 구성 요소가 무엇이고 빌드가 그것들로 무엇을 하는지 설명합니다.