Xiaomi Galaxy Talos Book

开发上线操作流程


建立task

建立Phabricator task:https://phabricator.d.xiaomi.net ,方便项目管理

开发准备

开发环境

  • Intellij IDEA
  • jdk1.6
  • mvn3.2.5以下

clone talos和talos-sdk的源码

  • git clone git@git.n.xiaomi.com:infra/galaxy.git
  • git clone git@git.n.xiaomi.com:infra/galaxy-sdk-java.git

Debug

  • 使用IDE调试
  • 使用打log等方式在staging集群运行调试

测试与提交

单元测试

  • 为新功能添加单元测试,包括mock测试和MiniCLuster测试,其中MiniCLuster测试需要确保localhost和hostname对应的主机名一致,可在/etc/hosts中配置。具体参考HBase使用说明:http://infra.d.xiaomi.net/hbase/faq/hbase-help.html

BTV测试

  • 功能开发完毕使用talos/galaxy-talos-test/galaxy-talos-bvt-java目录下的测试代码进行BVT测试,确保程序主体功能正常

集群测试

  • 使用staging集群进行集群测试。本地编译talos-server安装至tank,更改talos-c3tst-talos.cf中的talos tank坐标,重启需要重启的job:
      deploy restart talos c3tst-talos --job restserver --update_package --skip_confirm
    
  • 重启成功后,观察服务日志

代码提交

  • 代码测试无误后,分别在~/galaxy/talos和~/galaxy-sdk-java/galaxy-talos-client目录提交code review:
        arc diff
    
  • 提交时应至少注明Summary和Reviewers,抄送cloud-computing,示例:

      Summary: ref T10374
    
      Test Plan: N/A
    
      Reviewers: zhangqian
    
      Subscribers: cloud-computing
    
  • 代码审核通过后提交git,合并入master分支:

        arc land
    

发版

talos项目和talos-client项目的发版,分别需要在~/galaxy/talos和~/galaxy-sdk-java/galaxy-talos-client目录下操作:

  • 更改版本号:
        bump-version.sh $VERSION
    
  • 编辑CHANGELOG.md,加入git log中此次发版的更改情况
  • codereview后将以上更改提交git
  • 打tag,例如:
        git tag -a galaxy-sdk-java-2.1.6-release
    
    如在打tag之前有了其他新的提交,可以使用补打标签的方式:
        git tag -a galaxy-sdk-java-2.1.6-release 9fbc3d0(commitID)
    
    通常git push不会将标签对象提交到git服务器,需要进行显式的操作将标签提交到git服务器:
        git push origin galaxy-sdk-java-2.1.6-release
    

编译sdk发布到nexus:

编译talos server,并发布到tank:

  • 在~/galaxy/talos运行指令:
        mvn clean package -DskipTests
        package install talos --package_dir=$DIR --version=$VERSION
    
  • 记录新版本的tank坐标

将master分支的版本号改到下一个SNAPSHOT version:

  • 在~/galaxy/talos和~/galaxy-sdk-java/galaxy-talos-client目录下分别运行指令:
        bump-version.sh $SNAPSHOTVERSION
    
  • codereview后提交git

上线

更改minos的deployment-config/xiaomi-config/conf/talos目录下配置文件的以下内容,codereview后提交git:

  • 使用新的tank坐标,注释形式保留上一次的版本坐标,方便版本回退
  • 如有需要,同时更改其中talos配置

提JIRA通知SRE操作上线:

  • 注明上线原因、是否需要更改配置、已经上线的测试集群和测试结果
  • SRE的升级操作,升级restserver的minos指令示例如下:
      ./deploy restart talos ClusterName --job metricserver canary --update_package
      ./deploy rolling_update talos ClusterName --job restserver --time_interval=360 --update_package
    
    • 其中,如更修改了配置,还需在操作指令中加入--update_config参数
  • 上线过程中和操作后,观察上线集群的服务状态和日志;如改动影响较大,应先上线测试集群观察一段时间后再全面上线
  • JIRA地址:http://jira.n.xiaomi.com/projects/SSOR/issues/