GitHub Enterprise Server용 사전 수신 환경은 Linux chroot
환경입니다. 사전 수신 후크는 모든 푸시 이벤트에서 실행되므로 빠르고 간단해야 합니다. 이러한 검사에 필요한 환경은 일반적으로 최소화됩니다.
GitHub Enterprise Server는 다음 패키지가 포함된 기본 환경을 제공합니다. awk
, bash
, coreutils
, curl
, find
, gnupg
, grep
, jq
, sed
.
특정 언어에 대한 지원과 같이 이 환경에서 충족되지 않는 특정 요구 사항이 있는 경우 고유한 64비트 Linux chroot
환경을 만들고 업로드할 수 있습니다.
사전 수신 후크 환경에서 사용되는 Git 버전은 2.11 이상이어야 합니다. 또는 libgit2를 사용하는 경우 버전 0.18 이상을 사용해야 합니다.
다른 Git 구현을 사용하는 경우 info/alternates
파일에서 상대 경로를 지원해야 합니다.
Docker를 사용하여 사전 수신 후크 환경 만들기
Linux 컨테이너 관리 도구를 사용하여 사전 수신 후크 환경을 빌드할 수 있습니다. 이 예제에서는 Alpine Linux 및 Docker를 사용합니다.
-
로컬에 Docker가 설치되어 있는지 확인합니다.
-
다음 정보를 포함하는
Dockerfile.alpine
파일을 만듭니다.FROM alpine:latest RUN apk add --no-cache git bash
-
Dockerfile.alpine
파일이 포함된 작업 디렉터리에서 이미지를 빌드합니다.$ docker build -f Dockerfile.alpine -t pre-receive.alpine . > Sending build context to Docker daemon 12.29 kB > Step 1 : FROM alpine:latest > ---> 8944964f99f4 > Step 2 : RUN apk add --no-cache git bash > ---> Using cache > ---> 0250ab3be9c5 > Successfully built 0250ab3be9c5
-
컨테이너를 만듭니다.
docker create --name pre-receive.alpine pre-receive.alpine /bin/true
-
Docker 컨테이너를
gzip
압축tar
파일로 내보냅니다.docker export pre-receive.alpine | gzip > alpine.tar.gz
이
alpine.tar.gz
파일은 GitHub Enterprise Server 어플라이언스로 업로드할 준비가 되었습니다.
chroot를 사용하여 사전 수신 후크 환경 만들기
-
Linux
chroot
환경을 만듭니다. -
chroot
디렉터리의gzip
압축tar
파일을 만듭니다.cd /path/to/chroot tar -czf /path/to/pre-receive-environment.tar.gz .
참고:
- tar 보관 파일 내에 있는 파일의 선행 디렉터리 경로(예:
/path/to/chroot
)를 포함하지 마세요. /bin/sh
가 chroot 환경의 진입점으로 존재하고 실행 가능해야 합니다.- 기존의 chroot와 달리, 사전 수신 후크용 chroot 환경에서는
dev
디렉터리가 필요하지 않습니다.
- tar 보관 파일 내에 있는 파일의 선행 디렉터리 경로(예:
chroot 환경을 만드는 방법에 대한 자세한 내용은 _Debian Wiki_의 "Chroot", _Ubuntu Community Help Wiki_의 "BasicChroot" 또는 _Alpine Linux Wiki_의 "chroot에 Alpine Linux 설치"를 참조하세요.
GitHub Enterprise Server에 사전 수신 후크 업로드
-
GitHub Enterprise Server의 오른쪽 위 모서리에서 프로필 사진과 엔터프라이즈 설정을 차례로 클릭합니다.
-
페이지 왼쪽의 엔터프라이즈 계정 사이드바에서 설정을 클릭합니다.
-
" 설정"에서 후크를 클릭합니다.
-
환경 관리를 클릭합니다.
-
환경 추가를 클릭합니다.
-
“환경 이름” 필드에 원하는 이름을 입력합니다.
-
"URL에서 환경 업로드" 필드에 환경이 포함된
*.tar.gz
파일의 URL을 입력합니다. -
환경 추가를 클릭합니다.
관리 셸을 통해 사전 수신 후크 환경 업로드
-
환경이 포함된 읽기 가능한
*.tar.gz
파일을 웹 호스트에 업로드하고 URL을 복사하거나scp
를 통해 파일을 GitHub Enterprise Server 어플라이언스로 전송합니다.scp
를 사용할 때*.tar.gz
파일을 읽을 수 있도록 파일 권한을 조정해야 할 수 있습니다. -
관리 셸에 연결합니다.
-
ghe-hook-env-create
명령을 사용하여 원하는 환경 이름을 첫 번째 인수로 입력하고 환경이 포함된*.tar.gz
파일의 전체 로컬 경로 또는 URL을 두 번째 인수로 입력합니다.admin@ghe-host:~$ ghe-hook-env-create AlpineTestEnv /home/admin/alpine.tar.gz > Pre-receive hook environment 'AlpineTestEnv' (2) has been created.