개요
Config Server와 Git repository가 연동되어, Git에 YAML 파일 변경 사항이 푸시되면 이를 자동으로 감지하여 Config Server가 백엔드 서버에 푸시 알림을 보내는 기능을 포함하고 있다. 이를 통해 Config Server의 설정 변경이 자동으로 백엔드 서버에 전달되며, 설정 업데이트를 쉽게 관리할 수 있다.
기능 설명
application.yaml
)에서 Git repository의 URI 및 경로를 설정하여 Git과 연동한다.application.yaml
파일 변경 사항이 푸시되면 Config Server가 이를 자동으로 감지한다.post-receive
) 스크립트를 사용하여 main
브랜치에 푸시가 발생할 때마다 백엔드 서버에 API 요청을 보낸다./api/git/notify
엔드포인트를 통해 Config Server로부터 푸시 알림을 받는다.Git Hook Script (post-receive)
Git repository의 post-receive 스크립트를 사용하여 푸시 이벤트를 감지하고, 백엔드 서버에 알림을 전송한다.
#!/bin/sh
# Config Server 및 Backend Server 주소 설정
BACKEND_SERVER="localhost:8888" # 백엔드 서버 주소
# 로그 파일 설정
GIT_DIR="$(cd ..; pwd)"
LOG_DIR="$GIT_DIR/logs"
LOGFILE="$LOG_DIR/post-receive.log"
# 로그 디렉토리 생성
mkdir -p "$LOG_DIR"
touch "$LOGFILE"
echo "$(date): Post-receive hook started" >> "$LOGFILE"
while read oldrev newrev ref
do
# main 브랜치에서만 동작하도록 설정
if [[ $ref == refs/heads/main ]]; then
echo "$(date): Detected push to main branch" >> "$LOGFILE"
# 백엔드에 푸시 성공 알림 전송
curl -X POST "<http://$>{BACKEND_SERVER}/api/git/notify" \\
-H "Content-Type: application/json" \\
-d '{"message": "Push to main branch"}' >> "$LOGFILE" 2>&1
fi
done
실행 방법
main
브랜치에 변경 사항을 커밋하고 푸시한다.post-receive
hook이 실행되며, 백엔드 서버에 알림이 전송된다.