基於Docker構建帶有Rsync的Jenkins

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

相關文章
相關標籤/搜索