V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zonga
V2EX  ›  程序员

作为开发部门,大家都是怎么讲项目交给运维部门上线的?

  •  
  •   zonga · 2016-09-01 18:00:55 +08:00 · 4500 次点击
    这是一个创建于 2798 天前的主题,其中的信息可能已经有所发展或是发生改变。

    例如开发这边有个 war 包,想要上线直接发给运维的同事这样不够吧。。 另外,打包成 rpm 这个想法怎么样呢?

    37 条回复    2016-09-03 17:42:39 +08:00
    HypoChen
        1
    HypoChen  
       2016-09-01 18:27:00 +08:00   ❤️ 1
    docker image
    mcfog
        2
    mcfog  
       2016-09-01 19:50:10 +08:00
    “有个 war 包”

    第一步就不对了

    建议搜索“持续集成” "自动化部署"
    ericFork
        3
    ericFork  
       2016-09-01 19:54:02 +08:00   ❤️ 1
    建议用 CI 来根据 pull request 打 war 包和部署,另外可以看看 tomcat 的 parallel deployment:

    http://tomcat.apache.org/tomcat-8.5-doc/config/context.html#Parallel_deployment
    Mose
        4
    Mose  
       2016-09-02 06:19:15 +08:00
    要部署的服务器账号给我。。。
    jinhan13789991
        5
    jinhan13789991  
       2016-09-02 08:40:57 +08:00
    我们运维开发是同一个人
    zonga
        6
    zonga  
    OP
       2016-09-02 08:54:41 +08:00
    @HypoChen 多谢,我去查看一下相关文档。
    zonga
        7
    zonga  
    OP
       2016-09-02 08:55:29 +08:00
    @mcfog 我描述不仔细,其实这个 war 包就是我们的 jenkins 已经构建好的,但是运维那边可没有 jenkins 啊。。
    zonga
        8
    zonga  
    OP
       2016-09-02 08:58:36 +08:00
    @ericFork CI 是开发自己的 CI ,运维没有,感觉让他们自己安装一个又不太现实。 tomcat 文档正要看,多谢提供思路。
    zonga
        9
    zonga  
    OP
       2016-09-02 08:59:24 +08:00
    @Mose
    @jinhan13789991 服务器属于自己多好,随便搞。。
    virusdefender
        10
    virusdefender  
       2016-09-02 09:08:07 +08:00
    谁开发谁运维。。
    zonga
        11
    zonga  
    OP
       2016-09-02 09:16:45 +08:00
    @virusdefender 谁污染谁治理,,哈哈
    reeco
        12
    reeco  
       2016-09-02 09:18:19 +08:00 via Android
    把代码提交到 gitlab 上,点击部署, ok
    zonga
        13
    zonga  
    OP
       2016-09-02 09:33:57 +08:00
    @reeco 部署的结果是在开发服务器上构建出一个 war 包,但是后续的问题仍然存在。
    pncltp
        14
    pncltp  
       2016-09-02 10:03:53 +08:00 via iPhone   ❤️ 1
    现在很多公司都在用 docker ,搞自动化部署。
    xderam
        15
    xderam  
       2016-09-02 10:05:43 +08:00
    @zonga 后续的问题是指什么呢?如果应用上没有什么需要,一个 war 足以。除非你们的运维不知道 war 是干嘛的,或者不知道 war 的一些机制。你打成 rpm 也是一样的,对了!回滚这部分咋考虑的?
    taresky
        16
    taresky  
       2016-09-02 10:08:08 +08:00
    我司也是谁开发谁运维。
    9hills
        17
    9hills  
       2016-09-02 10:10:21 +08:00
    支持谁开发谁测试谁运维。不分 RD QA OP ,但是要求大家都是 full stack
    xcodebuild
        18
    xcodebuild  
       2016-09-02 10:11:27 +08:00
    打包成 rpm 不如 build 成 docker image
    sudoz
        19
    sudoz  
       2016-09-02 10:12:42 +08:00
    CI 持续集成
    Nexvar
        20
    Nexvar  
       2016-09-02 10:14:16 +08:00   ❤️ 1
    80%的服务跑在容器里面

    基本链路是 : 打包成 image -> 传给测试测试 -> build run 部署

    jenkins 等工具基本实现了自动化
    lcc4376
        21
    lcc4376  
       2016-09-02 11:02:49 +08:00
    git push origin master
    salmon5
        22
    salmon5  
       2016-09-02 11:35:02 +08:00
    请问各位,在自动化部署过程中,比如 java 项目,生产环境怎么实现业务不中断的?
    切走流量-->重启 tomcat-->切回流量吗?
    ma125125t
        23
    ma125125t  
       2016-09-02 11:38:39 +08:00
    我们这里开发自己发布 server ...
    yatesun
        24
    yatesun  
       2016-09-02 11:42:05 +08:00
    我们是 git 提交完代码以后,让专门负责运维的人,执行一下 shell 代码,批量从多台机子上面 pull 代码。

    第一次的话,直接要服务器密码自己配
    reeco
        25
    reeco  
       2016-09-02 13:49:17 +08:00 via Android
    @zonga 后续能有什么问题,如果你指的是你的代码造成部署失败,那就只能自己解决
    aveline
        26
    aveline  
       2016-09-02 14:42:21 +08:00
    吐槽一句说打 Docker image 的你们知道 Tomcat 本身就是个容器么 ...
    MarioxLinux
        27
    MarioxLinux  
       2016-09-02 14:50:32 +08:00
    @salmon5 生产环境要有主备,先更新备机再更新主机, Jenkins+ansible 实现自动部署, ansible 将应用发布到服务器之前先将原有 webapps 里的包以包名和日期结合的方式备份起来 rsync 到备份服务器,然后重启 tomcat (最好注册成 service 或 systemctl )
    julyclyde
        28
    julyclyde  
       2016-09-02 14:57:04 +08:00
    @aveline servlet 容器和 linux container 完全两码事好吧!
    aveline
        29
    aveline  
       2016-09-02 15:02:04 +08:00
    @julyclyde 是两回事 ... 但是我总觉得容器里再套个容器怪怪的 ...
    Infernalzero
        30
    Infernalzero  
       2016-09-02 15:06:55 +08:00
    @salmon5 是这样没错,通过 nginx 更改 upstream 来搞
    smileawei
        31
    smileawei  
       2016-09-02 15:09:28 +08:00
    用 git 开发把代码推送到 master 分支。然后在服务器 更新代码。编译程序。复制编译好的程序到服务目录。修改配置文件。重启 tomcat 。当然上面的过程用 shell 实现。
    julyclyde
        32
    julyclyde  
       2016-09-02 16:07:10 +08:00
    @aveline 把 servlet 容器叫成“应用服务器”也行。不过这样又跟 EJB 的重名了?哈哈哈哈……
    wintersun
        33
    wintersun  
       2016-09-02 16:11:18 +08:00
    @aveline 蒸锅里,一楼碗里蒸条鱼,二楼碗里咸鸭蛋,…… 蒸锅是容器,碗也是容器,该干嘛干嘛去,哇卡卡卡
    ytmsdy
        34
    ytmsdy  
       2016-09-02 17:48:48 +08:00
    都是自己动手丢上线的,丢给运维,回头出问题了还是回来找你。
    kangxianpeng
        35
    kangxianpeng  
       2016-09-02 19:45:52 +08:00
    easy
    unixbeta
        36
    unixbeta  
       2016-09-03 11:15:15 +08:00 via iPhone
    主要看你多大规模,有没有人手, full stack 适合几个人的小公司,没啥流量服务随时可中断,等你到了一定规模,开发,测试,运维这些就必不可少了,人多了一个人一个想法,必须走流程规范。
    koalli
        37
    koalli  
       2016-09-03 17:42:39 +08:00
    你们都用 jenkins 了,再多一步部署到运维的服务器不行吗...
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2259 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 09:39 · PVG 17:39 · LAX 02:39 · JFK 05:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.