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

小团队怎么做自动化部署

  •  
  •   fyooo · 70 天前 · 13488 次点击
    这是一个创建于 70 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

    112 条回复    2023-03-30 11:50:31 +08:00
    1  2  
    clickhouse
        1
    clickhouse  
       70 天前
    我司( Java ) Jenkins 触发自动部署 K8S 。
    ReinerShir
        2
    ReinerShir  
       70 天前   ❤️ 3
    jenkins + docker compose ,服务不多的话单 jenkins 就够了
    bugsnail
        3
    bugsnail  
       70 天前
    给个思路吧:github/gitlab 私有仓库托管,自己部署个 jenkins 想怎么玩怎么玩

    但是,一个 jenkins 跑起来就吃掉 1G 多的内存....
    caneman
        4
    caneman  
       70 天前
    jenkins + docker compose
    placeholder
        5
    placeholder  
       70 天前   ❤️ 1
    https://juejin.cn/post/7207787191623647288 ,仅供参考,

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

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

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

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

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

    遇到问题是我们项目是 monorepo ,每次改点代码都会全部服务都给重新打包一次,暂时没想到什么好的方法。
    yushiro
        35
    yushiro  
       70 天前 via iPhone
    @wu67 升级按照官方的推荐路径来就行,在公司内网部署了快 4 年的 gitlab 了,从没升级出问题过。
    别想当然的直接升级到最新版,必须按照特定的节点一步一步升级。
    Sayommy
        36
    Sayommy  
       70 天前
    1 、如果本地机房能开放外网权限,就统一用阿里云效的 flow ,最简单,资源能弹性、依赖包镜像缓存啥都给你做好了。云效的 flow 是可以调度非阿里云的服务器和 k8s 集群的。
    2 、公司找台不用的电脑装个 jenkins ,或者其他的开源方案选一个,都能跑。
    xgfan
        37
    xgfan  
       70 天前
    drone
    everyx
        38
    everyx  
       70 天前
    github ci + ansible + docker swarm
    xuanbg
        39
    xuanbg  
       70 天前
    jenkins + docker 足矣
    james2013
        40
    james2013  
       70 天前
    java 后台和前端
    私有 gitlab,Jenkins,k8s
    fivesmallq
        41
    fivesmallq  
       70 天前   ❤️ 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  
       70 天前 via Android
    需要技术支持不
    isnullstring
        43
    isnullstring  
       70 天前
    @wu67 很容易啊,apt-get update &upgrade 就完事了,官方好像推荐直接使用源安装,这样容易升级
    likunyan
        44
    likunyan  
       70 天前
    drone
    nijux
        45
    nijux  
       70 天前
    如果用到 Gitlab 并且在外网访问,请关注安全新闻,经常看到 Gitlab 的漏洞新闻
    dreamramon
        46
    dreamramon  
       70 天前
    github action 里面,直接指定 tag ,然后自动部署。。。
    rockxsj
        47
    rockxsj  
       70 天前
    drone
    liuxu
        48
    liuxu  
       70 天前
    github actions/gitlab runner 就行了,不需要自己跑 jenkins ,可以看看我的小项目 go + vue ,github actions 自动化 release ,https://github.com/liuquanhao/moyu/blob/main/.github/workflows/release.yml
    noparking188
        49
    noparking188  
       70 天前
    服务跑在什么上面的,有没有用容器啊
    swulling
        50
    swulling  
       70 天前 via iPhone
    小公司直接 git ops 就完了,至于 pipeline 用什么都可以。gitlab ci ,jenkins 等等,没啥大的区别。
    M003
        51
    M003  
       70 天前
    都用阿里云了,顺便用下他们的云效吧. master 修改触发, 我直接就是 git pull .最近在学 docker.
    caotian
        52
    caotian  
       70 天前
    用了一圈 gitlab, drone, gitea, 还是喜欢 github 和 action 里, 最终找了个那个啥的 github 企业版本的部署在内网, 跟 github 使用几乎没区别
    ZoeyZ
        53
    ZoeyZ  
       70 天前
    gitlab ci + argoCD
    Chad0000
        54
    Chad0000  
       70 天前 via iPhone
    那些使用 GitHub action 的建议看看 Azure DevOps 。我就是从 Jenkins 到 GitHub Action 再到 ADO 的。
    fivesmallq
        55
    fivesmallq  
       70 天前
    @Chad0000 Azure DevOps 对比 Github Action 的优势是啥?不知道免费额度咋样。
    clemente0620
        56
    clemente0620  
       70 天前   ❤️ 1
    @swulling 区别蛮大的 灵活性上面
    Chad0000
        57
    Chad0000  
       70 天前 via iPhone
    @fivesmallq
    免费额度一样。ADO build 和 release 是分开的,方便你发布历史版本。ADO build 出来的东西存储不计费,比如你 build docker image 存起来,发布的时候再 push 。第三方插件比较多,可视化做得比较好。相比之下 GitHub action 就像半成品。
    Tonyski
        58
    Tonyski  
       70 天前
    前端直接上 github + vercel
    zzzzzzZ
        59
    zzzzzzZ  
       70 天前
    你是想要《 Rainbond 》这种无脑方案,但是 rainbond 不好用,适合不懂开发的运维

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

    粗学上手一套其实也不难,远比用 rainbond 带来的隐患轻松多了
    定制性更佳、更灵活、私密、功能健全,秒杀 rainbond 这种无脑方案
    remember5
        60
    remember5  
       70 天前
    gitlab-ci 比较贴切 gitlab
    devHang
        61
    devHang  
       70 天前
    腾讯的 coding 比 Jenkins 更友好一些,门槛也更低
    NoString
        62
    NoString  
       70 天前
    我们也 ECS TeamCity 一把梭
    Guidoo
        63
    Guidoo  
       70 天前
    没人用 TeamCity 吗 ???
    gongquanlin
        64
    gongquanlin  
       70 天前   ❤️ 3
    drone ci + gitea + docker 香的一批,drone 和 gitea 也是 go 开发的,drone + gitea 全部 docker 部署,内存占用非常低,自动部署 docker 容器,香的一批
    simo
        65
    simo  
       70 天前
    3 5 个人,完全可以 docker 部署 gitlab pipeline 跑;还有其他类型任务要跑,可以上 gitlab + jenkins 。
    draguo
        66
    draguo  
       70 天前
    阿里云直接云效很好用,没有运维成本,小团队不推荐 jk
    defunct9
        67
    defunct9  
       70 天前
    外包给我就好
    tedzhou1221
        68
    tedzhou1221  
       70 天前
    coding
    mianju
        69
    mianju  
       70 天前
    github + dokku, 单机还能部署 grafana 、db 各种服务
    hb0730
        70
    hb0730  
       70 天前
    @gongquanlin gitea 好像要出 actions 了,最后连 drone 都去掉,貌似和 github action 差不多
    Nazz
        71
    Nazz  
       70 天前
    小公司的话, 使用 ssh 远程执行命令, 自己编个脚本 make deploy 一键发布
    eDeeraiD0thei6Oh
        72
    eDeeraiD0thei6Oh  
       70 天前
    能用 Github Actions 就用吧。如果不需要太多的 build 只是 deploy 文件用 Jenkins 也可以。
    @Nazz 自动化部署可能是和 git 相关的,除非他们用自己的 git repo server
    alsas
        73
    alsas  
       70 天前
    spug 没人用???
    feelinglucky
        74
    feelinglucky  
       70 天前
    gitea + drone 这个搭配已经很多年了,感觉也还行
    18601294989
        75
    18601294989  
       70 天前   ❤️ 1
    千万别选 jenkins 就行 太难用
    zed1018
        76
    zed1018  
       70 天前
    推荐 fluxcd
    zhhqiang
        77
    zhhqiang  
       70 天前
    jenkins 触发 git pull 😅
    xiaocaiji111
        78
    xiaocaiji111  
       70 天前
    腾讯云 coding ,一直在用,免费版限制构建分钟数,可以使用自己服务器加个节点。
    ppgs8903
        79
    ppgs8903  
       70 天前
    没钱别做 jenkins ,直接 gitlib ci & github ci 。
    OutOfMemoryError
        80
    OutOfMemoryError  
       70 天前
    我们是 gitlab 的 gitlab ci 实现的
    clf
        81
    clf  
       70 天前
    gitlab all in one ,项目管理+CI/CD 都在上面了。
    Suomea
        82
    Suomea  
       70 天前
    gitea:代码存储、镜像仓库、jar 包仓库
    jenkins + buildkit + containerd + kubectl:构建 + 发布
    k8s + containerd:运行服务
    tramm
        83
    tramm  
       70 天前
    gitea + drone
    moreant
        84
    moreant  
       70 天前
    我投 TeamCity 一票
    hahahahahahahah
        85
    hahahahahahahah  
       70 天前 via iPhone
    兼职运维需不需要,给你们搭建 Jenkins ,再写个 pipeline
    ropon
        86
    ropon  
       70 天前
    jenkins k8s api ,最好能上套运维平台兼容自建机房
    msareposar
        87
    msareposar  
       70 天前
    直接 github action self-host 完事儿
    hoopan
        88
    hoopan  
       70 天前
    Jenkins ,我的个人项目也用这个部署
    yekern
        89
    yekern  
       70 天前
    开始我们也是搞各种运维 自动化部署, 团队太小 只有几个人 根本没有精力弄这些 如果爆炸更难弄. 所以就最简单的 webhook git pull 省时省力省心
    yinmin
        90
    yinmin  
       70 天前
    写一个 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  
       70 天前
    最简单的:写个脚本
    次之:gitlab cicd 集成
    再次:Jenkins
    ZhaoUncle
        92
    ZhaoUncle  
       70 天前
    gitea+drone
    aaronkk
        93
    aaronkk  
       70 天前
    github 的 action ,gitlib 的 ci ,本身就集成了 CI/CD 功能。
    上面看到有说项目管理也放在 gitlab ,等时间长了那会太臃肿,每天的备份都特别大,回头还要考虑瘦身。
    Jemini
        94
    Jemini  
       70 天前
    drone + github
    yyttrr
        95
    yyttrr  
       70 天前
    gitlab-ci 吧很方便
    可以看看 ACK 托管集群,弹性的幅度很大考虑一下 ASK ,不过这些都是很后期的事情了
    xinshoushanglu
        96
    xinshoushanglu  
       70 天前
    jenkins 用起来
    gongquanlin
        97
    gongquanlin  
       70 天前
    @hb0730 那真是更香的一批了
    opengg
        98
    opengg  
       70 天前
    gitea actions
    jeizas
        99
    jeizas  
       70 天前 via iPhone
    k8s
    hzxxx
        100
    hzxxx  
       70 天前
    用 gitlab 的 CICD 吧,或者用 gitlab hook 自己写个小脚本触发流程
    1  2  
    关于   ·   帮助文档   ·   博客   ·   nftychat   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1197 人在线   最高记录 5634   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 45ms · UTC 23:35 · PVG 07:35 · LAX 16:35 · JFK 19:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.