基于Docker构建带有Rsync的Jenkins
1.编辑Dockerfile文件
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源。
rsync.password 为rsync远程同步的密码文件。
timezone 为时区文件否则,jenkins会差8个小时。内容Asia/Shanghai。
2.构建镜像
docker build -t jenkins:jenkins-chao .
3.构建Docker容器
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
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用户
useradd rsync -s /sbin/nologin -M
6.创建备份目录及修改权限
mkdir /backup
chown -R rsync /backup
echo "rsync_backup:oldboy" >/etc/rsync.password
chmod 600 /etc/rsync.password
7.启动rsync
rsync --daemon
Jenkins的构建项目脚本
#切换到项目目录
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启动命令
#/usr/bin/rsync –daemon
注:jenkins脚本为yii2的自动化部署。如果jenkins为root,最好rsync同步时也为root
基于Docker构建带有Rsync的Jenkins的更多相关文章
- DevOps实践之一:基于Docker构建企业Jenkins CI平台
基于Docker构建企业Jenkins CI平台 一.什么是CI 持续集成(Continuous integration)是一种软件开发实践,每次集成都通过自动化的构建(包括编译,发布,自动化测试)来 ...
- 视频私有云实战:基于Docker构建点播私有云平台
私有云是为一个客户单独使用而构建的,因而提供对数据.安全性和服务质量的最有效控制.前置条件是客户拥有基础设施,并可以使用基础设施在其上部署应用程序.其核心属性是专有的资源.本篇文章将会结合网易云信的实 ...
- Docker从入门到掉坑(二):基于Docker构建SpringBoot微服务
本篇为Docker从入门到掉坑第二篇:基于Docker构建SpringBoot微服务,没有看过上一篇的最好读过 Docker 从入门到掉坑 之后,阅读本篇. 在之前的文章里面介绍了如何基于docker ...
- 【docker构建】基于docker构建wordpress博客网站平台
WordPress是使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站.也可以把 WordPress当作一个内容管理系统(CMS)来使用. WordPre ...
- 基于docker构建jenkins和svn服务(转)
码农们很定都知道svn的重要性,机器坏掉丢代码的惨痛教训想必很多人都有. jenkins可能很多人都不了解.这是一个持续集成的工具,在敏捷开发领域很流行:跟svn结合可以实现定期build.check ...
- Win10系统下基于Docker构建Appium容器连接Android模拟器Genymotion完成移动端Python自动化测试
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_196 Python自动化,大概也许或者是今年最具热度的话题之一了.七月流火,招聘市场上对于Python自动化的追捧热度仍未消减,那 ...
- 基于 Docker 构建轻量级 CI 系统:Gitea 与 Woodpecker CI 集成
WoodpeckerCI 是一个由社区维护的 DroneCI 分支,使用 Apache License 2.0 许可证发布.社区版进一步扩展了 pipeline 的功能特性.支持对文件路径设置 pip ...
- 基于Docker构建Jenkins CI平台
1.部署gitlab 1.1 部署gitlab docker run -d \ --name gitlab \ -p 8443:443 \ -p 9999:80 \ -p 9998:22 \ -v $ ...
- 基于 Docker 构建企业 Jenkins CI平台
持续集成(Continuous Integration,CI):代码合并.构建.部署.测试都在一起,不断地执行这个过程,并对结果反馈. 持续部署(Continuous Deployment,CD):部 ...
随机推荐
- Python3 的元组
元组(tuple):戴上了枷锁的列表 元组与列表非常相似但是元组内元素的类型相同,且元组内的元素不能修改 1.创建元组的方法 与列表不同创建元组大部分情况下是用小括号,例如 tuple1=(1,2,3 ...
- Block 的使用时机
Block 一般是用来表示.简化一小段的程式码,它特别适合用来建立一些同步执行的程式片段.封装一些小型的工作或是用来做为某一个工作完成时的回传呼叫(callback) . 在新的iOS API中blo ...
- 关于userInteractionEnabled的属性的理解
userInteractionEnabled A Boolean value that determines whether user events are ignored and removed f ...
- 【开发技术】Eclipse设置软tab(用4个空格字符代替)及默认utf-8文件编码(unix)
Eclipse设置软tab(用4个空格字符代替)及默认utf-8文件编码(unix) 本文摘要: 1.如何配置Eclipse中编辑器支持softtab(用数个空格字符代替默认的tab缩进): 2.如何 ...
- Redis的事务功能详解
Redis的事务功能详解 MULTI.EXEC.DISCARD和WATCH命令是Redis事务功能的基础.Redis事务允许在一次单独的步骤中执行一组命令,并且可以保证如下两个重要事项: >Re ...
- Java数据持久层框架 MyBatis之背景知识一
对于MyBatis的学习而言,最好去MyBatis的官方文档:http://www.mybatis.org/mybatis-3/zh/index.html 对于语言的学习而言,马上上手去编程,多多练习 ...
- Go语言是我见过最简洁的语言(除了lua)
写在前面:题目就是个标题党,在这里先道歉,其次撸主学过很多语言(基本上是个语言都要上一下的那种人,但是不会太深入,只做了解,因为很多用不到),但主要使用C#语言(不过已经开始恶心C#的臃肿,不要打我) ...
- TypeError: 'encoding' is an invalid keyword argument for this function
python 2.7 问题 data_file = open("F:\\MyPro\\data.yaml", "r", encoding='utf-8') 运行 ...
- JavaScript 教程:对象
JavaScript 对象是拥有属性和方法的数据.学过编程语言的都知道,此处不再详述! 1.对象的定义: <script> </script> 对象也可以先创建,再添加属性和属 ...
- JDK自带的日志Logging
OK,现在我们来研究下JDK自带的日志Logger. 从jdk1.4起,JDK开始自带一套日志系统.JDK Logger最大的优点就是不需要任何类库的支持,只要有Java的运行环境就可以使用. 相对于 ...