只说持续部署
* Jenkins *
配置尽量通用,在有新模块要部署时,尽可能少的修改JOB模板。
* JOB_NAME规范: abc.deploy 必须要包含模块名(MODULE_NAME=abc),并与后面字段用.分隔
* 调用机器管理工具通过MODULE_NAME,获取到所有应该部署的机器,如online.abc.ecs.bj
* 部署时,制定要部署的版本号(VERSION). 作为Jenkins的参数传入,支持默认的latest参数
* 版本号如果是latest,则去oss对应路径下获取真正的版本号
* ansible-playbook内容尽可能通用,只通过参数标志不同,必须要传给ansible的参数
* MODULE_NAME
* VERSION
* HTTP_PORT(生成模板所用)
* 测试通过的发布包,上传到oss的固定位置,供部署时下载。
* 线上目录结构规范 *
/home/work
|- apache-tomcat-7.0.${MODULE_NAME}
|- jdk-1.8
|- production
|- ${MODULE_NAME}
|- ${MODULE_NAME}_${VERSION}
|- ${MODULE_NAME} -> /home/work/production/${MODULE_NAME}/${MODULE_NAME}_${VERSION}
|- deploy_script
|- run.sh
|- java_env.sh
|- tomcat_env.sh
|- webserver_env.sh
* ansible-playbook *
使用roles, Don’t Repeat Yourself.
roles:
- java
- tomcat
- webserver
把整个部署过程抽象为以下几个任务
roles = java
task: install jdk
roles = tomcat
task: install tomcat
task: configure tomcat (如server.xml中需要配置http_port和context_path)
roles = webserver
task: download service package.tar.gz and decompress it
task: stop service and check
task: make symlink
task: start service and check
相关脚本:
阅读(7399) | 评论(1) | 转发(0) |