- 개인 서버의 bare Git 저장소에
post-receive훅을 추가해 테스트, 빌드, 파일 이동을 자동화하는 간단한 CI 구성임 - 기존 CI는 복잡한 YAML 설정과 느린 실행, 어려운 자체 호스팅에 비해 완전한 빌드 격리나 비밀정보 관리까지 필요하지 않았음
- 훅에서 작업을 직접 실행하면 실패 시 push가 거부되거나 완료가 지연되므로, 최소형 작업 큐
nq로 백그라운드 처리함 - 훅은
nq만 호출하고 로그는ssh server nqtail -a로 확인해 빠르고 간단하게 운영할 수 있음 - 필요에 따라 landdown·Podman으로 빌드를 격리하고 sops로 비밀정보를 관리하거나, Git 이메일 패치·
git-shell·git http-backend로 개발 방식을 확장할 수 있음
post-receive 훅과 nq 구성
- 개인 서버에서
ssh server git init --bare repo로 저장소를 만들고git clone server:repo로 복제함 - bare 저장소의 hooks 디렉터리에 셸 스크립트 형태의
post-receive훅을 넣어 push할 때마다 CI를 시작함 - 작업을 훅에서 직접 실행하면 두 가지 문제가 생김
- 스크립트가 실패할 경우 push가 거부됨
- 스크립트 실행이 느리면 push 완료도 함께 지연됨
- 훅에서는 최소형 작업 큐
nq를 호출해 작업을 백그라운드 큐에 추가함- 로그는
ssh server nqtail -a로 확인함 - 설정 과정은 짧은 튜토리얼에서 확인할 수 있음
- 로그는