1.編輯Dockerfile文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
FROM jenkins
USER root
ADD sources.list /etc/apt/sources.list
RUN apt-
get
update && apt-
get
install -y rsync
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
ADD rsync.password /etc/rsync.password
RUN chmod 600 /etc/rsync.password && chown jenkins:jenkins /etc/rsync.password
ADD timezone /etc/timezone
USER jenkins
|
注:sources.list 爲國內的debian源。git
rsync.password 爲rsync遠程同步的密碼文件。web
timezone 爲時區文件不然,jenkins會差8個小時。內容Asia/Shanghai。docker
2.構建鏡像
1
|
docker build -t jenkins:jenkins-chao .
|
3.構建Docker容器
1
|
docker run --name myjenkins -uroot -p 8081:8080 -p 50000:50000 -v /srv/jenkins_home:/
var
/jenkins_home -d jenkins:jenkins-chao
|
注:-u 表示使用root權限。服務器
4.須要同步到遠程服務器上開啓rsync deamo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
vi /etc/rsyncd.conf
#Rsync server
uid = rsync
gid = rsync
use chroot = no
maxconnections = 2000
timeout = 600
pid file = /
var
/run/rsyncd.pid
lock
file = /
var
/run/rsync.
lock
log file = /
var
/run/rsyncd.log
ignore errors
read only =
false
list =
false
hosts allow = 10.211.55.0/24
hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password
[backup]
comment = www
by
oldboy 2016.09.23
path = /backup
|
5.建立rsync用戶
1
|
useradd rsync -s /sbin/nologin -M
|
6.建立備份目錄及修改權限
1
2
3
4
|
mkdir /backup
chown -R rsync /backup
echo
"rsync_backup:oldboy"
>/etc/rsync.password
chmod 600 /etc/rsync.password
|
7.啓動rsync
1
|
rsync --daemon
|
Jenkins的構建項目腳本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
#切換到項目目錄
JobName=
'xiangmu'
JobDir=
'/var/jenkins_home/www'
cd $JobDir
#若是有項目目錄則刪除
if
[ -d $JobName ]:
then
rm -rf $JobName
fi
#克隆遠程項目連接
git clone ssh:
//git@***/"$JobName".git
cd $JobName
#刪除git目錄
rm -rf .git
#項目初始化
rsync -az $JobDir
"/xiangmu-dev/dev/"
$JobDir
"/xiangmu"
#目錄設置權限
chmod -R 777 $JobDir
"/xiangmu/backend/runtime"
&& chmod -R 777 $JobDir
"/xiangmu/backend/web/assets"
#遠程copy
cd $JobDir
"/"
$JobName
#同步
rsync -avz --delete $JobDir
"/"
$JobName --exclude-
from
=$JobDir
"/xiangmu-dev/xiangmu_exclude.list"
rsync_backup@*.*.*.*::backup --password-file=/etc/rsync.password
|
rsync啓動命令
1
|
#/usr/bin/rsync –daemon
|
注:jenkins腳本爲yii2的自動化部署。若是jenkins爲root,最好rsync同步時也爲rootyii2