推荐 提供 好的 web(微)服务 发布部署构建的平台的设计思路 或者 组件?

如题

最近在 设计 web服务的部署平台,不知道 大家 都是怎么 做的?

感觉 大公司 都是 自研 的一套 web界面,底层 就不太清楚了。

一般 是 根据 项目具体语言来定的?

比如 maven 构建? docker部署? jenkins构建部署 ? 写 build.sh 构建部署 ?

想达到的

1、支持多种语言框架,如 java 、php 、node
2、支持 灰度 发布,自定义 时间 以及 服务器分组 分布
3、支持 发布 参数 定义,如 jvm 参数

以上 有些 是 需要自己开发的,但是 有比较成熟的方案设计吗,求推荐 ?

阅读 2k
2 个回答

之前有写一篇关于 Gradle 分享的资料,里面有涉及发布关于我们发布的做法。
https://segmentfault.com/a/11...
其原理还是利用 ssh 的做法,写好各种发布的 task 然后执行,利用 jenkins 可实现手动,自动发布。
一套脚本全平台通用,避免 shell/bat 那种不跨平台的情况,使用 docker 也可以用相同的原理解决。


场景2 - gradle 集成 ssh 插件

  1. 插件依赖添加 gradle-ssh-plugin

    plugins {
        id 'org.hidetake.ssh' version '2.9.0'
    }
  2. 服务器配置

    remotes {
      webServer {
        host = '192.168.1.101'
        user = 'webserver'
        identity = file('id_rsa')
      }
    }
    remotes 服务器信息配置,关于 gradle-ssh-plugin 更详细的配置可以参考官方文档
  3. 部署任务配置

    task deploy {
      doLast {
        ssh.run {
          session(remotes.webServer) {
            put from: 'example.war', into: '/webapps'
            execute 'sudo service tomcat restart'
          }
        }
      }
    }
    使用 gradlew deploy 命令运行任务,将会把 example.war 上传至服务器 /webapps 目录,并且重启你的服务器 tomcat
    你可以根据自己的部署需要编写各种 task,轻松实现一键部署,并且这种方式是完全跨平台的,不管你的开发环境是 windows、mac、linux 都是使用相同的命令部署
    PS:在开发测试环境使用这种方式部署我只能说不要太好用

TarsCloud了解一下?
腾讯出品

推荐问题
宣传栏