Git 훅과 nq로 만드는 최소형 CI
8 hours ago
3
- 개인 서버의 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로 확인함
- 설정 과정은 짧은 튜토리얼에서 확인할 수 있음
격리와 개발 방식 확장
- 빌드를 샌드박스에서 실행하려면 landdown을 사용할 수 있음
- Podman으로 빌드를 호스트 환경과 격리하거나 sops로 비밀정보를 관리할 수 있음
- bazaar 방식 개발에는 이메일로 Git 패치를 받는 구성이 적합함
- cathedral 방식 개발은 git-shell 또는 git http-backend로 구성 가능함
-
Homepage
-
Tech blog
- Git 훅과 nq로 만드는 최소형 CI