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

편리

PHP와 MariaDB, jQuery 등을 사용해 게시판, 쇼핑몰 솔루션을 개발합니다. 그누보드5와 영카트5 개발에 참여 했습니다. Linux와 Nginx는 물론 WordPress, Git 등에도 관심이 많습니다. 자전거 타기 및 사진 촬영을 취미로 하고 있습니다.

카카오톡 플러스친구 채팅 : NCUBE.NET

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.