请教下 vue 项目的部署流程 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
sufaith
V2EX    程序员

请教下 vue 项目的部署流程

  •  1
     
  •   sufaith 2019-04-20 09:36:01 +08:00 7810 次点击
    这是一个创建于 2374 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目前我是构建后,把 dist 文件 scp 上传到服务器,然后交给 nginx 托管, 全程手动操作, 做法像小作坊式的, 不知道大厂是如何操作的,请有相关经验的大佬给介绍下

    第 1 条附言    2019-04-20 10:42:12 +08:00
    如果有细化一点的方案,更好
    33 条回复    2019-04-22 09:27:40 +08:00
    slimhigh
        1
    slimhigh  
       2019-04-20 09:38:11 +08:00
    配个 CI Pipeline,把这个流程自动化。
    xsir
        2
    xsir  
       2019-04-20 09:40:04 +08:00
    gitlab CI Pipeline docker 全自动部署
    LeoQ
        3
    LeoQ  
       2019-04-20 09:42:35 +08:00 via iPhone
    阿里云 oss 可以考虑一下
    tinybaby365
        4
    tinybaby365  
       2019-04-20 09:49:09 +08:00
    使用 gitlab ci 部署,先 docker multi stage 编译出 nginx+dist 的部署镜像,再触发 k8s 的滚动更新。
    linmq
        5
    linmq  
       2019-04-20 09:51:15 +08:00 via iPhone
    raync 写个脚本,敲一个命令自动上传部署
    nekoleamo
        6
    nekoleamo  
       2019-04-20 10:07:07 +08:00
    上家公司是创业公司,用的 pm2 自动部署,配置操作挺简单的,就是没法无缝更新,替换的时候会有十几秒无法访问
    shenyu1996
        7
    shenyu1996  
       2019-04-20 10:07:39 +08:00
    自己小项目用的 buddy.works
    shingle
        8
    shingle  
       2019-04-20 10:52:20 +08:00 via Android
    其实最简单的 docker+git 就可以,服务器初始化一个仓库(默认的 init 达不到效果,需要配置),docker 跑一个 nginx 然后把 dist 文件夹挂在进去,写一个 git hook 钩子自动触发更新
    shingle
        9
    shingle  
       2019-04-20 10:54:25 +08:00 via Android   1
    之前写过一篇折腾...https://shingle.me/post/给 git 配置钩子实现服务器和客户端代码一致 /
    avenger
        10
    avenger  
       2019-04-20 11:43:42 +08:00 via iPhone
    laravel + vue 的项目,用的这个

    https://deployer.org
    HarryQu
        11
    HarryQu  
       2019-04-20 11:54:19 +08:00
    只有我一个人写 sh 脚本,打包、上传 ?

    看来得抽空研究下 ci 了。
    yuikns
        12
    yuikns  
       2019-04-20 11:56:56 +08:00
    我有个简单的工程,build 完了 dist 放到 hou 这个 image 的 /app 下。整个流程都可以放到 Dockerfile 里面

    https://github.com/argcv/hou

    然后线上 pull + up 就行
    AngryMagikarp
        13
    AngryMagikarp  
       2019-04-20 12:04:26 +08:00
    使用 Gitlab CI 的话需要在 Runner 所在的服务器配置一个 node 环境来编译,编译的时候会占用比较多的内存和 CPU。

    个人建议在你电脑上用 ansible 来自动化。没必要模仿所谓的大厂,大厂的人力资源是你们的几十倍,很多都有自己开发的一套发布系统。
    tomczhen
        14
    tomczhen  
       2019-04-20 12:24:46 +08:00
    都用 webpack,加个 scp upload plugin 不算什么麻烦事吧。
    ericgui
        15
    ericgui  
       2019-04-20 13:05:30 +08:00
    部署在 netlify 上 --- 如果是开源项目的话
    fmumu
        16
    fmumu  
       2019-04-20 13:15:46 +08:00 via Android
    没人用 Jenkins 吗?
    chniccs
        17
    chniccs  
       2019-04-20 14:17:45 +08:00
    像我这么原始的有么,本地生成 dist 目录,然后放到另一个源,推送上去,然后 webhook 服务器自动 pull。虽然 low,但我还用的挺开心的
    lihongjie0209
        18
    lihongjie0209  
       2019-04-20 14:43:40 +08:00
    个人简单使用那写一个 rsync 脚本就可以了

    团队使用用 CI 工具持续集成
    lauix
        19
    lauix  
       2019-04-20 15:04:21 +08:00
    自己写了个 python 脚本自动化部署,公司一般都是 Jenkins docker 部署
    YuansMine
        20
    YuansMine  
       2019-04-20 15:19:35 +08:00
    GitHub webhook 还是基本能实现的,如果有更多的需求的话就得看看 CI 相关的知识了
    justin2018
        21
    justin2018  
       2019-04-20 16:47:18 +08:00
    @avenger 收藏了 这个不错
    jhsea3do
        22
    jhsea3do  
       2019-04-20 17:17:14 +08:00
    @nekoleamo

    pm2 做后台进程的托管,类似 supervisord 或者 systemd, 但是 vue 打包应该和这个无关,只是 ci / repository 这块
    zhouhui
        23
    zhouhui  
       2019-04-20 18:34:27 +08:00   1
    自己写一段?
    deploy.sh
    ```
    #!/bin/sh

    echo "开始编译...."
    npm run build
    echo "开始压缩..."
    cd dist && zip -r dist.zip *
    echo "开始上传..."
    scp dist.zip [email protected]:/opt/deploy/XXX
    cd ..
    scp run.sh [email protected]:/opt/deploy/XXX
    echo "开始删除编译代码..."
    rm -rf dist/
    echo "准备更新生产代码..."
    ssh [email protected] sh /opt/deploy/XXX/run.sh
    echo "发布成功..."
    ```
    run.sh
    ```
    #!/bin/sh

    base=/opt/deploy/XXX
    echo "删除多的文件..."
    rm -rf $base/css $base/dis $base/img $base/index.html $base/js $base/static
    echo "解压线上代码..."
    rm -rf $base/dist
    unzip $base/dist.zip -d $base
    echo "删除多余的文件..."
    rm -rf $base/dist.zip $base/run.sh
    echo "发布成功..."
    ```
    zhouhui
        24
    zhouhui  
       2019-04-20 18:35:57 +08:00
    或者有机器也可以用 gitlab-ci 之类的东西。
    CallMeReznov
        25
    CallMeReznov  
       2019-04-20 19:00:51 +08:00
    就 2-3 台机器是 LINUX,其他都是 200 台 windows.
    部署的时候都是手动(没更新,只增量),管理的话我都是写了批处理然后用 zabbix 监控后远程处理的.


    其实我也想搞持续集成持续部署..条件不支持啊
    bhaltair
        26
    bhaltair  
       2019-04-20 22:39:07 +08:00
    上 docker 啊,再配合 gitlab ci,加上 k8s
    EI8xU01k92WdI1Mb
        27
    EI8xU01k92WdI1Mb  
       2019-04-20 23:03:28 +08:00
    参考官方的指导打包为 docker
    https://cli.vuejs.org/guide/deployment.html#docker-nginx
    后续无论部署什么都简单了
    binaryify
        28
    binaryify  
       2019-04-21 01:18:59 +08:00
    我这边用这个 ssh-webpack-plugin 插件

    plugins: [new SshWebpackPlugin({
    host: 'Remote host',
    port: 'Remote port',
    username: 'Remote username',
    password: 'Remote password',
    from: 'Deploy Local path',
    to: 'Remote full path',
    })]
    ericgui
        29
    ericgui  
       2019-04-21 01:24:21 +08:00
    @binaryify 看着这个插件 2 年没更新了,还好用么?
    Cbdy
        30
    Cbdy  
       2019-04-21 05:02:19 +08:00 via Android
    公司用 GitLab 的话还是建议用它提供的 CI 或 Web Hook
    参考: https://github.com/cbdyzj/lib17/blob/master/Javascript/code/webhook.js
    binaryify
        31
    binaryify  
       2019-04-21 08:54:48 +08:00 via iPhone
    @ericgui 用着没问题
    fumichael
        32
    fumichael  
       2019-04-21 20:06:48 +08:00
    我目前也是“小作坊”操作
    cs419
        33
    cs419  
       2019-04-22 09:27:40 +08:00
    会用 docker 可以考虑 drone 进行持续集成
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2619 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 06:49 PVG 14:49 LAX 23:49 JFK 02:49
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86