这是在公司将服务部署上线的一个记录,只是部署很小的python脚本,各公司不同,参考性不是很大

开始吧(版本管理是git)

1.整理好代码后:git add xxx.py

git commit -m "输入这次提交的说明"

2.代码review:git push origin HEAD:refs/for/master%r=username, r=XXX

在公司相应得review管理网页中中找到相应的提交,review通过后submit就好

3.原来就在master分支上,就不用这步了,如果不在的提交到master分支上去

git push origin HEAD:master

4.开发机上 输入Pushonline_alpha 我的理解是将代码提交到远程的机器上去。然后就等代码部署好

关于pushonline_alpha命令是个什么东西,看下面这个:

背景

由于业务规模扩大,pushonline的速度和稳定性已经不能满足业务需求;所以基于nodekeeper,开发了新的上线系统;由于新的系统处于小流量阶段,所以暂时取名pushonline_alpha。老的pushonline上线的流程是先由一个server打一个bundle,然后放到hdfs,再ssh到所有需要上线的机器,然后将bundle下载下来再apply完成上线。这个过程首先是受限与上线的单机能力,所以在处理一些上线机器众多的情况效率会非常低。另外,由于上线以来ssh,所以上线会很不稳定,遇到一些负载高的节点会拖慢整个上线。HDFS作为离线存储,实时性比较难保证,上传下载bundle经常会hung住一段时间。最后,新增节点的库应该上什么版本并不知道,需要专门的初始化的过程。

实现

pushonline_alpha摒弃了ssh的思路,采用基于nodekeeper的方案来实现。nodekeeper简单来说是采用了Master-agent的框架,每个机器会有一个agent与Master保持心跳,Master通过心跳下发agent需要执行的命令,已经执行过的命令会定期检查其状态,保证机器的环境处于一致的状态。因此新增机器也可以通过增加tag来完成节点初始化,详细介绍可以参考nodekeeper。

另一方面,pushonline_alpha也废弃了同步打bundle的方案,采用一个bundle service来订阅gitlab和gerrit的push事件,收到新的push事件后,会马上开始打bundle,上传到一个maven库,需要上线的时候,直接从maven库下载就可以,节约了打bundle的时间。

用户调用pushonline_alpha上线,实际上只是记录一下当前的commit_id,然后向nodekeeper提交一个命令将XX库更新到XX commit,然后交给agent去执行,并定期从nodekeeper获取执行的进度。

5.切换管理员用户(最高权限的用户)。在开发机上ssh user@10.2.xxx.xx 如果发现要输入密码的话,先退出来,输入kinit命令,输入你的邮箱密码。然后在ssh就好了。   切换用户后  用gg 命令就跳转到想要把服务跑起来的机器上(gg 22.161这样)

6.在机器上看下git的代码是不是已经是修改完毕的代码,然后:

(1)进入/home/tiger/.server 目录 ,在这个目录下建立要启动服务的软链,就是建立real_run所在的文件夹的软链

软链就相当于一个快捷方式的感觉,用命令: ln -s 目标文件夹 服务名称      来建立

(2)有些机器没找到.server目录 ,在/home/tiger/.config/systemd/user/ 下执行相同的操作

7.建立连接后 服务就启动了,svc命令来处理服务相关

svc -d 服务名称   :停止服务

svstat 服务名称  :查看服务状态,如果启动时间一直是0s,1s的就说明没启动起来

svc -u 服务名称 :启动服务

svc -i 服务名称  :重新启动服务,查看状态时,启动时间会更新

8.注意,启动的脚步需要有执行权限,遇到了服务怎么都启动不起来,就是real_run脚本没有x权限,要chmod +x 添加下权限

9.关于脚本怎么写,可以在.server文件夹下随便找个服务看看人家的怎么写,基本上格式都一样,改个执行py文件的地址就好

公司上线流程 pushonline_alpha的更多相关文章

  1. 海量用户-高并发SAAS产品测试上线流程

    海量用户高并发SAAS产品测试上线流程 SAAS产品测试上线流程-以Web插件产品为例子 1   概述 在互联网产品中,IT公司之间更加注重产品功能之间的协作,SAAS形态的产品扮演着越来越重要的作用 ...

  2. 刚刚结束了公司EP流程,开始KMS项目开发了

    刚刚结束了公司EP流程,开始KMS项目开发了 EP流程:AGpoint+MOSS+C# KMS:MOSS上的文档管理系统

  3. node服务通过Jenkins上线流程

    构建流程 构建服务器: 拉取指定分支代码 构建服务器: 安装依赖 构建服务器: 执行构建 构建服务器: 如果上线流程,则在 git 上创建 tag,供回滚使用 构建服务器:打包 node 服务代码,和 ...

  4. 重学 Java 设计模式:实战责任链模式「模拟618电商大促期间,项目上线流程多级负责人审批场景」

    作者:小傅哥 博客:https://bugstack.cn - 原创系列专题文章 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 场地和场景的重要性 射击

  5. 微信小程序从开发到上线流程

    一.微信小程序从开发到上线流程 注册小程序 1.登录微信公众平台 https://mp.weixin.qq.com 2.在微信公众平台>立即注册>小程序中注册微信小程序 3.在邮箱中激活并 ...

  6. 自学linux——16.LAMP项目上线流程

    LAMP项目上线流程 一.编译安装与卸载Nginx(web服务器软件,类似于Apache) 1.安装nginx ①    下载nginx 网页下载https://nginx.org/en/downlo ...

  7. ios上线流程

    一.前言: 作为一名iOSer,把开发出来的App上传到App Store是必要的.下面就来详细讲解一下具体流程步骤. 二.准备: 一个已付费的开发者账号(账号类型分为个人(Individual).公 ...

  8. IOS在自己网站发布APP(企业版$299上线流程)

    最近刚上线一个企业内部应用,前期准备账号和后期上线过程发现网络上的资源不是非常全面,在这里写给大家分享一下我的发布过程 首先是企业账号的申请我们企业账号前前后后一共花了16天时间,由于公司各方面都非常 ...

  9. 公司采购 流程flowable例子

    Name: Flowable BPMN 2.0 designer Location: http://flowable.org/designer/update/ 业务描述:1. 公司采购,因为办公用品价 ...

随机推荐

  1. ftp缓存信息

    using System.Collections.Generic; using NewTempo.Ftp; using System.IO; using NshowAdClient.NshowAdSe ...

  2. springMVC+freemarker实现自定义标签

    在开发过程中,有些需要引用到重复的页面,或者动态的数据 修改数据库是可以实现,但是太麻烦了. freemarker自定义标签在开发中用途很广,就说个入门实例吧 基于springmvc. 首先需要导入对 ...

  3. Vue 2.0学习(四)计算属性

    {{}}模板内的表达式常用于简单的运算,当运算过长或逻辑复杂时,会难以维护. <div> {{ text.split(',').reverse().join('') }} </div ...

  4. HDU 4183

    给出一个有向图,以及src和dst.判断是否存在从src到dst的两条路径,使得除了src和dst外,没有其它点同时属于两条路径. 给每个点一个为1的点容量(src和dst为2),边的容量也是1,然后 ...

  5. 37.递推:Pell数列

    总时间限制: 3000ms 内存限制: 65536kB 描述 Pell数列a1, a2, a3, ...的定义是这样的,a1 = 1, a2 = 2, ... , an = 2 * an − 1 + ...

  6. BZOJ 4027: [HEOI2015]兔子与樱花 树上dp

    4027: [HEOI2015]兔子与樱花 Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline ...

  7. PAT甲级1033. To Fill or Not to Fill

    PAT甲级1033. To Fill or Not to Fill 题意: 有了高速公路,从杭州到任何其他城市开车很容易.但由于一辆汽车的坦克容量有限,我们不得不在不时地找到加油站.不同的加油站可能会 ...

  8. Java集合--HashMap分析

    HashMap在Java开发中有着非常重要的角色地位,每一个Java程序员都应该了解HashMap. 本文主要从源码角度来解析HashMap的设计思路,并且详细地阐述HashMap中的几个概念,并深入 ...

  9. JS 循环遍历json

    第一  看看json的格式 { "employees": [ { "firstName":"Bill" , "lastName&q ...

  10. CentOS 6.9/7通过yum安装指定版本的Tomcat

    说明:通过yum好处其实很多,环境变量不用配置,配置文件放在大家都熟悉的地方,通过rpm -ql xxx可以知道全部文件的地方等等. 一.安装Tomcat(8+) // 下载脚本 # git clon ...