利用jenkins+saltstack+sh部署项目到多台服务器
jenkins的配置(这里作用只是当做界面使用,利用它来管理执行salt命令,这里以 shop 这个项目目录为例)
1.利用参数化构建项目,来实现是发布还是回滚操作:
2.构建操作来执行shell脚本
saltstack 的 sls文件编写
deploy.sls文件如下
deploy:
cmd.script:
- source: salt://deploy.sh
- args: "{{pillar['deploy']}} {{pillar['space']}} {{pillar['project']}} {{pillar['repertory']}} {{pillar['version']}}"
- user: www
- group: www
上面的作用就是 执行配置文件中设置资源目录 下的 deploy.sh脚本,参数为args里的,以 www用户,用户组为www 的权限来执行sh里的内容。
shell脚本编写
#!/bin/sh deploy=$
workspace=$
#通过jenkins动态获取
project=$
repertory=$
version=$ case $deploy in
publish)
#init
if [ ! -d ${workspace} ]; then
mkdir -p $workspace
fi #echo $project
#初始化项目
if [ ! -d ${project} ]; then
cd $workspace && git clone $repertory
composer install
else
cd $project && git pull
#composer update
fi
;;
rollback)
if [ ! -d ${project} ]; then
echo "you need to create project first"
exit
else
cd $project
if [ -z ${version} ]; then
echo "回滚上一版本"
git reset --hard HEAD^
else
echo "回滚指定版本"
git reset --hard $version
fi
fi
;;
*)
exit
;;
esac
作用就是:执行sh脚本传过来的参数
1.来判断是发布还是回滚 操作(git)
如果是 publish 操作,判断 指定的目录 项目文件夹是否存在 , 存在 执行 git pull 操作,不存在(即第一次构建)执行git clone 并且 通过composer安装相关库。
如果是 rollback操作,判断 参数中version(git log的唯一hash) 是否为空,如果为空则回滚到上一版本,否则回滚到指定版本。
利用jenkins+saltstack+sh部署项目到多台服务器的更多相关文章
- 利用jenkins+saltstack+sh 修改nginx配置文件并重新加载
jenkins的配置(这里作用只是当做界面使用,利用它来管理执行salt命令) 1.构建操作来执行shell脚本 (pillar可以配置灵活的参数) saltstack 的 sls文件编写 nginx ...
- jenkins自动部署代码到多台服务器
下面讲一下如何通过一台jenkins服务器构建后将代码分发到其他的远程服务器,即jenkins自动部署代码到多台服务器. 1.下载 pulish over ssh 插件 2.系统管理 -> 系统 ...
- 【转】手把手教你利用Jenkins持续集成iOS项目
前言 众所周知,现在App的竞争已经到了用户体验为王,质量为上的白热化阶段.用户们都是很挑剔的.如果一个公司的推广团队好不容易砸了重金推广了一个APP,好不容易有了一些用户,由于一次线上的bug导致一 ...
- 手把手教你利用Jenkins持续集成iOS项目
前言 众所周知,现在App的竞争已经到了用户体验为王,质量为上的白热化阶段.用户们都是很挑剔的.如果一个公司的推广团队好不容易砸了重金推广了一个APP,好不容易有了一些用户,由于一次线上的bug导致一 ...
- docker | jenkins 实现自动化部署项目,后端躺着把运维的钱挣了!(上)
前言 背景 最近在帮学校导师写项目,团队有4个人,项目前后端分离.如果是选择瀑布式开发:(在约定好接口的情况下)A.B同学写前端,C.D同学写后端,然后约定一个时间统一联调,最后将项目交付安装到客户机 ...
- 使用jenkins 插件自动部署项目至tomcat
前面使用maven.ant编译项目就不说,只说一下使用jenkins的插件自动部署项目 1.首先jenkins安装插件Deploy to container Plugin ,下载地址为:https:/ ...
- idea使用Deployment部署项目到阿里云服务器的全过程
一.前言 之前玩了一下 Alibaba Cloud Toolkit 一键部署插件 这里顺便再提一下idea原生的Deployment自动部署项目吧,该功能也很强大,也不需要离开idea就可以直接将项目 ...
- 【高可用架构】借助Envoy工具发布项目到多台服务器
前言 在上一篇,我们已经成功在开发机上部署了Deploy项目,下面我们继续在开发机上安装Envoy 两台应用服务器的IP 192.168.10.12 192.168.10.18 [高可用架构]系列链接 ...
- SQL Server快速部署作业到多台服务器
问题: 需要在很多的SQL Server服务器上创建相同的作业.我们可以一台一台的运行相同的脚本创建作业,但是有没有什么简便的做法呢? 解决方法: 可能很多人都没有注意到可以用多服务器环境管理SQL ...
随机推荐
- DATASNAP远程方法返回TSTREAM正解(转咏南兄)
DATASNAP远程方法返回TSTREAM正解 DATASNAP远程方法返回TSTREAM,如果数据大小超过32K是会报错的.许多DELPHIER栽在这个上头,甚至开始怀疑TSTREAM返回数据的可行 ...
- ImportError: No module named etree.ElementTree问题解决方法
学习python操作xml文档过程中碰到的ImportError: No module named etree.ElementTree问题,问题现象比较奇怪,做个记录. 操作环境 Python3.6+ ...
- [福大2018高级软工教学]团队Beta阶段成绩汇总
一.作业地址: https://edu.cnblogs.com/campus/fzu/AdvancedSoftwareEngineerning2018/homework/2465 二.Beta阶段作业 ...
- C#图像处理:截图程序(包含鼠标)
截图后在picbox中显示,用定时器定时每毫秒截图一次,在picbox上显示就有动画效果.代码: [DllImport("user32.dll")] static extern b ...
- WPF 中关于 DataTemplateSelector 类的应用
MSDN的解释: 提供一种根据数据对象和与该数据绑定的元素来选择数据模板 DataTemplate 的方法. 示例代码: <Window x:Class="WpfApplication ...
- 吴裕雄 python深度学习与实践(3)
import threading, time def doWaiting(): print('start waiting:', time.strftime('%S')) time.sleep(3) p ...
- 吴裕雄 32-MySQL 导入数据
1.mysql 命令导入使用 mysql 命令导入语法格式为:mysql -u用户名 -p密码 < 要导入的数据库数据(runoob.sql)实例:# mysql -uroot -p123456 ...
- rsync sersync搭建
目标服务器 192.168.100.47 源服务器 192.168.100.46 目标服务器配置 [root@node01 nodejs]# cat /etc/rsyncd.conf #日志文件 ...
- 十分钟搞定pandas
转至:http://www.cnblogs.com/chaosimple/p/4153083.html 本文是对pandas官方网站上<10 Minutes to pandas>的一个简单 ...
- Mac中安装tensorflow(转)
当我们开始学习编程的时候,第一件事往往是学习打印"Hello World".就好比编程入门有Hello World,机器学习入门有MNIST.MNIST是一个识别手写数字的程序 M ...