V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
fyooo
V2EX  ›  程序员

小团队怎么做自动化部署

  •  
  •   fyooo · 2023-03-21 09:55:41 +08:00 · 18963 次点击
    这是一个创建于 638 天前的主题,其中的信息可能已经有所发展或是发生改变。

    公司有阿里云的服务器 ECS ,也有自己的机房服务器。

    看了一下,阿里云 ECS 有配套的 https://help.aliyun.com/document_detail/224608.html

    不知道自己机房的服务器怎么部署好

    后台是:Go ,前端是 Next.js

    当前简单粗暴的在服务器上 git pull ,但是这个太原始了,不知道有没有成熟的开源方案

    113 条回复    2024-09-12 14:56:40 +08:00
    1  2  
    clickhouse
        1
    clickhouse  
       2023-03-21 09:58:04 +08:00
    我司( Java ) Jenkins 触发自动部署 K8S 。
    ReinerShir
        2
    ReinerShir  
       2023-03-21 09:58:39 +08:00   ❤️ 3
    jenkins + docker compose ,服务不多的话单 jenkins 就够了
    bugsnail
        3
    bugsnail  
       2023-03-21 09:59:13 +08:00
    给个思路吧:github/gitlab 私有仓库托管,自己部署个 jenkins 想怎么玩怎么玩

    但是,一个 jenkins 跑起来就吃掉 1G 多的内存....
    caneman
        4
    caneman  
       2023-03-21 09:59:58 +08:00
    jenkins + docker compose
    placeholder
        5
    placeholder  
       2023-03-21 10:01:11 +08:00   ❤️ 1
    https://juejin.cn/post/7207787191623647288 ,仅供参考,

    这种问题我建议你们联系一下 chatGPT 问问(手动狗头)
    leeraya
        6
    leeraya  
       2023-03-21 10:03:55 +08:00
    jenkins 、gitlab 、harbor 、k8s
    jearyvon
        7
    jearyvon  
       2023-03-21 10:08:09 +08:00
    我们在用的流程大概就是
    git tag trigger -> jenkens (build docker image) -> ALIYUN K8S deploy
    Rache1
        8
    Rache1  
       2023-03-21 10:09:32 +08:00   ❤️ 1
    阿里云有 ”云效“ 😏
    ZxBing0066
        9
    ZxBing0066  
       2023-03-21 10:10:35 +08:00   ❤️ 1
    gitlab ci 吧,感觉 jenkins 没有 gitlab ci 和 github action 简单
    hzfyjgw
        10
    hzfyjgw  
       2023-03-21 10:17:46 +08:00   ❤️ 1
    argocd
    wu67
        11
    wu67  
       2023-03-21 10:17:52 +08:00
    最近我也在搞公司测试环境的 cicd.

    因为团队的 git 是 gogs, 凑合着用搭配了 drone. 普通的 vue + nginx 跑起来了, nuxt / next 这种需要 pm2/npm run start 的, 还没研究通怎么跑. 网上各种方案都是 ssh 插件来跑脚本启动镜像 /pm2, 但是哪有人开 root 账号密码登录啊...真是有毒

    gitlab / jenkin 也有看过. 前公司是这套方案, 但是挺吃内存的, 而且还得 Java 环境, 我一个前端仔根本 hold 不住呀, 没眼看了.
    ziwen1943
        12
    ziwen1943  
       2023-03-21 10:18:01 +08:00
    可以用 gitlab-CI 资源占用小,和 gitlab 深度嵌合,配置发布代码化,很高效,适合中小团队
    wu67
        13
    wu67  
       2023-03-21 10:19:30 +08:00
    还有个问题就是据说 gitlab 升级爆炸会很难搞...在没有专业服务器运维人员的情况下, 这也是我不敢选用 gitlab 的原因. 要是我自己的机器我就随便折腾了...
    atkd
        14
    atkd  
       2023-03-21 10:24:24 +08:00
    jenkins+1
    yagamil
        15
    yagamil  
       2023-03-21 10:27:39 +08:00
    小团队应该用不上 k8s 吧?
    version
        16
    version  
       2023-03-21 10:30:29 +08:00   ❤️ 3
    没运维的...本地写脚本就好...
    如果你牵头搞 cicd..个个都无限 debug 提交 git-.镜像就崩了..到时候 go 依赖拉不下来.npm 拉不下来.就找你了.因为他会说它不懂这个..这个是运维干得.太复杂.学不来.不想学.
    提交代码.本地执行远程 ssh 命令..
    前端本地 nodejs 脚本部署..提交 html 到服务器..其它丢 cdn
    xmumiffy
        17
    xmumiffy  
       2023-03-21 10:30:32 +08:00 via Android
    感觉你们这需求 用 git hook 触发 git pull 就足够了
    wxdiy
        18
    wxdiy  
       2023-03-21 10:30:34 +08:00
    服务器不多,变化不频繁,直接 spug 吧,小巧好用
    mr0joker
        19
    mr0joker  
       2023-03-21 10:41:12 +08:00
    阿里云的云效做代码托管 + jenkins + k8s
    Dream95
        20
    Dream95  
       2023-03-21 10:42:30 +08:00
    如果公司代码本身就是用 gitlab 管理的化,那比较适合用 gitlab-ci.
    Richared
        21
    Richared  
       2023-03-21 10:44:03 +08:00
    小公司还不简单,gitlab+jenkins+docker 就可以了。k8 没必要
    bitmin
        22
    bitmin  
       2023-03-21 10:44:03 +08:00
    jenkins ,用的人多,教程多,配置很简单。

    我在的迷你公司 java 项目、前端项目都扔在上面部署。

    这点资源消耗,公司不会多花一眼去在意。
    aeli
        23
    aeli  
       2023-03-21 10:44:10 +08:00
    github action 就足够了。
    optional
        24
    optional  
       2023-03-21 10:49:46 +08:00 via iPhone
    直接上,gitops
    hb0730
        25
    hb0730  
       2023-03-21 10:51:26 +08:00
    gitea+drone+aliyun 私有仓库+docker compose
    marksaas
        26
    marksaas  
       2023-03-21 10:52:58 +08:00
    小团队还是半自动化部署吧,节省不少服务器资源,让 chatgpt 写个自动化部署脚本,每次就登录执行下也很方便
    vaeceby2
        27
    vaeceby2  
       2023-03-21 10:53:23 +08:00   ❤️ 1
    gogs/gitea + drone 就行了 k8s 没必要 docker swarm 完全够了
    kqq19930511
        28
    kqq19930511  
       2023-03-21 10:54:39 +08:00
    内网部署的 gogs + jenkins + nexus
    Illusionary
        29
    Illusionary  
       2023-03-21 10:57:37 +08:00
    请个运维
    dnsjia
        30
    dnsjia  
       2023-03-21 11:02:19 +08:00
    perfectlife
        31
    perfectlife  
       2023-03-21 11:07:54 +08:00
    @wu67 不太认同升级爆炸,rpm 安装的 gitlab 一般升级直接 update 就行了,跨版本升级按 gitlab 文档里的升级路线图 update 就行,别用容器安装,安逸得很
    perfectlife
        32
    perfectlife  
       2023-03-21 11:08:53 +08:00
    既有云上 ecs 又有本地机房,没个运维 不太合适,背锅都没人背,请个运维多好,还能增加就业岗位
    anubu
        33
    anubu  
       2023-03-21 11:14:16 +08:00   ❤️ 2
    中小公司 gitlab 一个就够了,基本涵盖了研发管理全周期了。没有 gitlab 还好说,有 gitlab 还要使用 Jenkins 的,真的有点舍近求远了,除非是有特殊场景。部署目标就常见的 ssh 、docker remote 、k8s api 基本都够用了。
    WindProtect
        34
    WindProtect  
       2023-03-21 11:15:43 +08:00
    我们现在是 git 特定分支 hooks 触发 jenkins 启动流水线打包成 docker 镜像,然后 docker compose 启动。
    但我觉得如果自己搭的 gitlab 的话,gitlab ci 更简单。

    遇到问题是我们项目是 monorepo ,每次改点代码都会全部服务都给重新打包一次,暂时没想到什么好的方法。
    yushiro
        35
    yushiro  
       2023-03-21 11:17:40 +08:00 via iPhone
    @wu67 升级按照官方的推荐路径来就行,在公司内网部署了快 4 年的 gitlab 了,从没升级出问题过。
    别想当然的直接升级到最新版,必须按照特定的节点一步一步升级。
    Sayommy
        36
    Sayommy  
       2023-03-21 11:19:17 +08:00
    1 、如果本地机房能开放外网权限,就统一用阿里云效的 flow ,最简单,资源能弹性、依赖包镜像缓存啥都给你做好了。云效的 flow 是可以调度非阿里云的服务器和 k8s 集群的。
    2 、公司找台不用的电脑装个 jenkins ,或者其他的开源方案选一个,都能跑。
    6IbA2bj5ip3tK49j
        37
    6IbA2bj5ip3tK49j  
       2023-03-21 11:22:57 +08:00
    drone
    everyx
        38
    everyx  
       2023-03-21 11:27:30 +08:00
    github ci + ansible + docker swarm
    xuanbg
        39
    xuanbg  
       2023-03-21 11:35:24 +08:00
    jenkins + docker 足矣
    james2013
        40
    james2013  
       2023-03-21 11:36:06 +08:00
    java 后台和前端
    私有 gitlab,Jenkins,k8s
    fivesmallq
        41
    fivesmallq  
       2023-03-21 11:37:34 +08:00   ❤️ 1
    github 私有仓库(免费)存储代码,github action 构建 docker 镜像,harbor (自建或者使用云服务商的免费镜像仓库),github action 构建推送到镜像仓库,服务器小规模的使用 docker-compose 即可,使用 https://github.com/containrrr/watchtower 监控容器变更,有新版本自动拉取重启(可以设定一个 release 一个 dev tag )

    基本上不花一分钱就搞定了,其中 github 可以替换成自建 gitlab ,github action 替换为 jenkins ,就是得自己写 Jenkins file 了。
    taoge0224
        42
    taoge0224  
       2023-03-21 11:44:41 +08:00 via Android
    需要技术支持不
    isnullstring
        43
    isnullstring  
       2023-03-21 11:47:40 +08:00
    @wu67 很容易啊,apt-get update &upgrade 就完事了,官方好像推荐直接使用源安装,这样容易升级
    QKgf555H87Fp0cth
        44
    QKgf555H87Fp0cth  
       2023-03-21 11:48:40 +08:00
    drone
    nijux
        45
    nijux  
       2023-03-21 11:49:58 +08:00
    如果用到 Gitlab 并且在外网访问,请关注安全新闻,经常看到 Gitlab 的漏洞新闻
    dreamramon
        46
    dreamramon  
       2023-03-21 11:59:27 +08:00
    github action 里面,直接指定 tag ,然后自动部署。。。
    rockxsj
        47
    rockxsj  
       2023-03-21 12:05:55 +08:00
    drone
    liuxu
        48
    liuxu  
       2023-03-21 12:25:27 +08:00
    github actions/gitlab runner 就行了,不需要自己跑 jenkins ,可以看看我的小项目 go + vue ,github actions 自动化 release ,https://github.com/liuquanhao/moyu/blob/main/.github/workflows/release.yml
    noparking188
        49
    noparking188  
       2023-03-21 12:34:44 +08:00
    服务跑在什么上面的,有没有用容器啊
    swulling
        50
    swulling  
       2023-03-21 12:35:55 +08:00 via iPhone
    小公司直接 git ops 就完了,至于 pipeline 用什么都可以。gitlab ci ,jenkins 等等,没啥大的区别。
    M003
        51
    M003  
       2023-03-21 13:08:03 +08:00
    都用阿里云了,顺便用下他们的云效吧. master 修改触发, 我直接就是 git pull .最近在学 docker.
    caotian
        52
    caotian  
       2023-03-21 13:14:05 +08:00
    用了一圈 gitlab, drone, gitea, 还是喜欢 github 和 action 里, 最终找了个那个啥的 github 企业版本的部署在内网, 跟 github 使用几乎没区别
    ZoeyZ
        53
    ZoeyZ  
       2023-03-21 13:14:56 +08:00
    gitlab ci + argoCD
    Chad0000
        54
    Chad0000  
       2023-03-21 13:20:18 +08:00 via iPhone
    那些使用 GitHub action 的建议看看 Azure DevOps 。我就是从 Jenkins 到 GitHub Action 再到 ADO 的。
    fivesmallq
        55
    fivesmallq  
       2023-03-21 13:27:38 +08:00
    @Chad0000 Azure DevOps 对比 Github Action 的优势是啥?不知道免费额度咋样。
    clemente0620
        56
    clemente0620  
       2023-03-21 13:28:59 +08:00   ❤️ 1
    @swulling 区别蛮大的 灵活性上面
    Chad0000
        57
    Chad0000  
       2023-03-21 13:32:05 +08:00 via iPhone
    @fivesmallq
    免费额度一样。ADO build 和 release 是分开的,方便你发布历史版本。ADO build 出来的东西存储不计费,比如你 build docker image 存起来,发布的时候再 push 。第三方插件比较多,可视化做得比较好。相比之下 GitHub action 就像半成品。
    Tonyski
        58
    Tonyski  
       2023-03-21 13:41:53 +08:00
    前端直接上 github + vercel
    zzzzzzZ
        59
    zzzzzzZ  
       2023-03-21 13:43:22 +08:00
    你是想要《 Rainbond 》这种无脑方案,但是 rainbond 不好用,适合不懂开发的运维

    但是我更加推荐,也是楼上一致的方案:
    自己的 git 库+Jenkins+制品仓库( Harbor 或者云服务制品库)+k8s/云容器服务

    粗学上手一套其实也不难,远比用 rainbond 带来的隐患轻松多了
    定制性更佳、更灵活、私密、功能健全,秒杀 rainbond 这种无脑方案
    remember5
        60
    remember5  
       2023-03-21 13:46:01 +08:00
    gitlab-ci 比较贴切 gitlab
    devHang
        61
    devHang  
       2023-03-21 13:51:06 +08:00
    腾讯的 coding 比 Jenkins 更友好一些,门槛也更低
    NoString
        62
    NoString  
       2023-03-21 13:57:20 +08:00
    我们也 ECS TeamCity 一把梭
    Guidoo
        63
    Guidoo  
       2023-03-21 14:01:50 +08:00
    没人用 TeamCity 吗 ???
    gongquanlin
        64
    gongquanlin  
       2023-03-21 14:05:38 +08:00   ❤️ 3
    drone ci + gitea + docker 香的一批,drone 和 gitea 也是 go 开发的,drone + gitea 全部 docker 部署,内存占用非常低,自动部署 docker 容器,香的一批
    simo
        65
    simo  
       2023-03-21 14:05:49 +08:00
    3 5 个人,完全可以 docker 部署 gitlab pipeline 跑;还有其他类型任务要跑,可以上 gitlab + jenkins 。
    draguo
        66
    draguo  
       2023-03-21 14:23:32 +08:00
    阿里云直接云效很好用,没有运维成本,小团队不推荐 jk
    defunct9
        67
    defunct9  
       2023-03-21 14:43:14 +08:00
    外包给我就好
    tedzhou1221
        68
    tedzhou1221  
       2023-03-21 14:47:26 +08:00
    coding
    mianju
        69
    mianju  
       2023-03-21 14:51:29 +08:00
    github + dokku, 单机还能部署 grafana 、db 各种服务
    hb0730
        70
    hb0730  
       2023-03-21 15:13:22 +08:00
    @gongquanlin gitea 好像要出 actions 了,最后连 drone 都去掉,貌似和 github action 差不多
    Nazz
        71
    Nazz  
       2023-03-21 15:13:27 +08:00
    小公司的话, 使用 ssh 远程执行命令, 自己编个脚本 make deploy 一键发布
    eDeeraiD0thei6Oh
        72
    eDeeraiD0thei6Oh  
       2023-03-21 15:22:56 +08:00
    能用 Github Actions 就用吧。如果不需要太多的 build 只是 deploy 文件用 Jenkins 也可以。
    @Nazz 自动化部署可能是和 git 相关的,除非他们用自己的 git repo server
    alsas
        73
    alsas  
       2023-03-21 15:36:19 +08:00
    spug 没人用???
    feelinglucky
        74
    feelinglucky  
       2023-03-21 15:37:47 +08:00
    gitea + drone 这个搭配已经很多年了,感觉也还行
    18601294989
        75
    18601294989  
       2023-03-21 15:38:52 +08:00   ❤️ 1
    千万别选 jenkins 就行 太难用
    zed1018
        76
    zed1018  
       2023-03-21 15:39:08 +08:00
    推荐 fluxcd
    zhhqiang
        77
    zhhqiang  
       2023-03-21 15:40:29 +08:00
    jenkins 触发 git pull 😅
    xiaocaiji111
        78
    xiaocaiji111  
       2023-03-21 15:53:02 +08:00
    腾讯云 coding ,一直在用,免费版限制构建分钟数,可以使用自己服务器加个节点。
    ppgs8903
        79
    ppgs8903  
       2023-03-21 15:55:03 +08:00
    没钱别做 jenkins ,直接 gitlib ci & github ci 。
    OutOfMemoryError
        80
    OutOfMemoryError  
       2023-03-21 15:57:41 +08:00
    我们是 gitlab 的 gitlab ci 实现的
    clf
        81
    clf  
       2023-03-21 15:58:02 +08:00
    gitlab all in one ,项目管理+CI/CD 都在上面了。
    Suomea
        82
    Suomea  
       2023-03-21 16:35:56 +08:00
    gitea:代码存储、镜像仓库、jar 包仓库
    jenkins + buildkit + containerd + kubectl:构建 + 发布
    k8s + containerd:运行服务
    tramm
        83
    tramm  
       2023-03-21 16:36:06 +08:00
    gitea + drone
    moreant
        84
    moreant  
       2023-03-21 16:50:33 +08:00
    我投 TeamCity 一票
    hahahahahahahah
        85
    hahahahahahahah  
       2023-03-21 17:02:48 +08:00 via iPhone
    兼职运维需不需要,给你们搭建 Jenkins ,再写个 pipeline
    ropon
        86
    ropon  
       2023-03-21 17:08:18 +08:00
    jenkins k8s api ,最好能上套运维平台兼容自建机房
    msareposar
        87
    msareposar  
       2023-03-21 17:09:14 +08:00
    直接 github action self-host 完事儿
    hoopan
        88
    hoopan  
       2023-03-21 17:11:12 +08:00
    Jenkins ,我的个人项目也用这个部署
    yekern
        89
    yekern  
       2023-03-21 17:20:22 +08:00
    开始我们也是搞各种运维 自动化部署, 团队太小 只有几个人 根本没有精力弄这些 如果爆炸更难弄. 所以就最简单的 webhook git pull 省时省力省心
    yinmin
        90
    yinmin  
       2023-03-21 17:30:27 +08:00
    写一个 sh 文件,使用 rsync+ssh 同步到各个服务器,例如:
    run.sh =================
    rsync -azvP /home/code [email protected]:/home/code
    ssh [email protected] docker restart mycode
    rsync -azvP /home/code [email protected]:/home/code
    ssh [email protected] docker restart mycode
    rsync -azvP /home/code [email protected]:/home/code
    ssh [email protected] docker restart mycode

    运行 sh 文件即可。
    tairan2006
        91
    tairan2006  
       2023-03-21 17:55:35 +08:00
    最简单的:写个脚本
    次之:gitlab cicd 集成
    再次:Jenkins
    ZhaoUncle
        92
    ZhaoUncle  
       2023-03-21 17:56:18 +08:00
    gitea+drone
    aaronkk
        93
    aaronkk  
       2023-03-21 17:59:23 +08:00
    github 的 action ,gitlib 的 ci ,本身就集成了 CI/CD 功能。
    上面看到有说项目管理也放在 gitlab ,等时间长了那会太臃肿,每天的备份都特别大,回头还要考虑瘦身。
    Jemini
        94
    Jemini  
       2023-03-21 18:06:18 +08:00
    drone + github
    yyttrr
        95
    yyttrr  
       2023-03-21 18:13:27 +08:00
    gitlab-ci 吧很方便
    可以看看 ACK 托管集群,弹性的幅度很大考虑一下 ASK ,不过这些都是很后期的事情了
    xinshoushanglu
        96
    xinshoushanglu  
       2023-03-21 18:36:48 +08:00
    jenkins 用起来
    gongquanlin
        97
    gongquanlin  
       2023-03-21 18:53:22 +08:00
    @hb0730 那真是更香的一批了
    opengg
        98
    opengg  
       2023-03-21 18:55:52 +08:00
    gitea actions
    jeizas
        99
    jeizas  
       2023-03-21 20:01:47 +08:00 via iPhone
    k8s
    hzxxx
        100
    hzxxx  
       2023-03-21 20:15:33 +08:00
    用 gitlab 的 CICD 吧,或者用 gitlab hook 自己写个小脚本触发流程
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3078 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 13:50 · PVG 21:50 · LAX 05:50 · JFK 08:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.