jenkins 에서 rsync 를 이용한 파일 배포
jenkins 에서 git, scp 를 이용한 파일 배포를 rsync 를 이용한 스크립트로 변경했다.
#!/bin/bash
cd /var/lib/jenkins/jenkins-test
git pull
SOURCE=/var/lib/jenkins/jenkins-test/
TARGET=/tmp/jenkins/
USER="root"
while IFS='' read -r server || [[ -n "$server" ]]; do
case $server in
''|\#*) continue ;;
esac
rsync -azWe "ssh -o StrictHostKeyChecking=no" --delete --exclude-from '/var/lib/jenkins/rsync-exclude.dat' $SOURCE $USER@$server:$TARGET
done < /var/lib/jenkins/servers.dat
각 서버의 ip는 servers.dat 파일에 지정되어 있고 아래와 같은 형태이다.
192.168.50.94
192.168.50.95
servers.dat 파일을 쉘 스크립트에서 읽어들인 후 각 서버로 rsync 를 이용해 배포하게 된다. rsync 를 이용하기 위해서는 각 서버에 jenkins 서버의 ssh 키가 미리 등록되어 있어야 한다. 동기화 때 제외될 디렉토리와 파일을 지정하는 --exclude-from
옵션에 사용되는 rsync-exclude.dat 파일은 아래와 같다.
.git/
session/
data/
*.md