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

技术大佬们, CI/CD(持续集成/持续发布)的方案有哪些

  •  
  •   userlijinhong ·
    LiJinHongPassion · 2021-02-01 16:19:44 +08:00 · 7535 次点击
    这是一个创建于 1424 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近公司上级给的一个任务就是去了解研究一下微服务容器化,我自己理解的就是 docker+k8s 。 问了度娘,感觉领导的意思应该就是 CI/CD,网上给的方案是 gitlab + jenkins + docker + k8s, 我这里想问一下还有没有其他在生产环境中用得较多的方案

    第 1 条附言  ·  2021-02-03 10:20:42 +08:00
    非常感谢各位的发表的评论,每一条评论我都看了,受教了。确实没有把微服务容器化和 CICD 区分开来。根据公司的情况,我现在对于微服务容器化想的是一个比较简单的方案来尝试一下,利用 docker 来部署,用 docker-compose 来简单编排 docker 容器。至于 k8s,等学习了再来干。
    37 条回复    2021-02-04 10:42:37 +08:00
    Gwzlchn
        1
    Gwzlchn  
       2021-02-01 16:34:58 +08:00   ❤️ 2
    gitlab ci 就够了,不用 jenkins 也行。
    yukong
        2
    yukong  
       2021-02-01 16:35:05 +08:00
    gitlab + k8s 结束了啊
    或者 jenkins + k8s
    intmax2147483647
        3
    intmax2147483647  
       2021-02-01 17:20:11 +08:00
    付费方案:BuildKite+AWS 套件
    retanoj
        4
    retanoj  
       2021-02-01 17:21:29 +08:00
    微服务和 CI/CD 的确是两个事情
    mitsuizzz
        5
    mitsuizzz  
       2021-02-01 17:21:41 +08:00
    gitlab 有自己的 cicd 也挺好用的
    YzSama
        6
    YzSama  
       2021-02-01 18:16:26 +08:00 via iPhone
    gitlab cicd 完美
    bthulu
        7
    bthulu  
       2021-02-01 18:17:16 +08:00
    gitlab 是好用是要钱的
    agoodob
        8
    agoodob  
       2021-02-01 18:23:24 +08:00
    我司(具体名字不说了)
    生产环境部署在 AWS 中国区(就俩区,北京和宁夏)东西都在北京区。
    CI/CD 我们是:
    Github -> AWS Codebuild -> AWS ECR -> AWS ECS

    Github 是存代码
    Codebuild 唯一的用途就是把代码打包成一个 Docker Image
    AWS ECR 是存这个镜像
    ECS 等同于 k8s
    simonlu9
        9
    simonlu9  
       2021-02-01 18:25:19 +08:00
    刚搭完 docker 自动化部署,teamcity 满足你一切
    RedBeanIce
        10
    RedBeanIce  
       2021-02-01 18:33:41 +08:00
    Luufery
        11
    Luufery  
       2021-02-01 19:00:40 +08:00 via Android
    ci 直接用 gitlab 吧,teamcity 不好用,Jenkins 太古老了。cd 建议自研
    liuxu
        12
    liuxu  
       2021-02-01 19:01:23 +08:00
    公司的项目用的 gitlab + gitlab runner + docker-compose
    我自己的项目用的 github + github actions + k3s + helm

    目前建议用我项目的方案,我也准备给公司的项目迁移一下
    liuxu
        13
    liuxu  
       2021-02-01 19:02:14 +08:00
    @liuxu 我是说后半部分,k3s + helm
    chendy
        14
    chendy  
       2021-02-01 19:03:27 +08:00
    gitlab ci + k8s
    chogath
        15
    chogath  
       2021-02-01 19:24:40 +08:00
    阿里云云效
    caotian
        16
    caotian  
       2021-02-01 20:34:01 +08:00
    可以尝试下开源的 drone.io ,目前在用,还是挺方便的
    YouLMAO
        17
    YouLMAO  
       2021-02-01 20:38:07 +08:00
    1.微服务+2.容器一般是 k8s+docker


    跟 CI/CD 没有一毛钱关系
    soulmt
        18
    soulmt  
       2021-02-01 20:49:00 +08:00
    容器化是容器化,自动部署是自动部署, 容器化方案 docker+k8s 这玩意你想怎么部署都可以 可以用 jenkins 哪怕自己写 shell 脚本都可以,或者你说的 ci/cd 自动部署,是 2 块功能哦
    kaka6
        19
    kaka6  
       2021-02-01 20:53:46 +08:00   ❤️ 1
    不是大厂项目的话
    其实自己写个更新程序也不难
    把项目代码托管到 码云、Coding 或 gitHub
    然后利用 webhook,调用自己的部署程序
    自己的部署程序其实也简单,在生产部署机子上部署个 flask web 程序,几行 python 代码:

    1 、os.chdir(todo_path) # 移动到项目目录下

    2 、pull_result = os.popen("git pull ") # 拉取最新代码

    3 、build_result = os.popen( f"sudo docker build -t {name}:{tag} .") #重新编译新镜像

    4 、stop_result = os.popen( f"docker stop {container_name} && docker rm {container_name}") # 停止并删除旧版容器

    5 、run_result = os.popen( f"docker run --name {container_name} -d --restart=always {name}:{tag}") # 启动运行新镜像,更新完成
    tilv37
        20
    tilv37  
       2021-02-01 21:17:43 +08:00
    Ci/CD 的话,目前公司的项目是放在微软的 Azure 上的。然后用的 Azure DevOps

    一般是:
    代码托管( azure devops repo )->DevOps Pipeline -> DevOps Realease ->Azure Container Registry - > Azure K8S Service
    tilv37
        21
    tilv37  
       2021-02-01 21:18:23 +08:00
    @tilv37
    顺序错了

    代码托管( azure devops repo )->DevOps Pipeline -> Azure Container Registry - > DevOps Realease -> Azure K8S Service
    KuroNekoFan
        22
    KuroNekoFan  
       2021-02-01 22:23:19 +08:00 via iPhone
    差不多
    Jenkins 的权限管理麻烦一点
    lrvinye
        23
    lrvinye  
       2021-02-01 22:33:24 +08:00
    Coding 的用着不错
    mumubin
        24
    mumubin  
       2021-02-01 22:49:27 +08:00
    harness
    danieladu
        25
    danieladu  
       2021-02-01 23:06:10 +08:00 via Android
    azure pipeline
    calmzhu
        26
    calmzhu  
       2021-02-02 00:05:54 +08:00 via Android
    量不大差别不大。
    超过 1000 个,还是 jenkins 省事
    SkyLine7
        27
    SkyLine7  
       2021-02-02 09:38:36 +08:00
    jenkins
    yupozhang
        28
    yupozhang  
       2021-02-02 11:27:46 +08:00
    发布部署 以及其他运维常见管理,可以了解一下这个开源运维平台项目: https://github.com/openspug/spug
    smilingsun
        29
    smilingsun  
       2021-02-02 11:39:22 +08:00
    了解一下 GitOps,简洁的是 FluxCD,强大的选 ArgoCD
    bluefalconjun
        30
    bluefalconjun  
       2021-02-02 13:41:43 +08:00
    其实我也在一直找对应方案. 而且后面想加上一个方便的自动化测试流程.

    1. gerrit + jenkins 做编译检查已经有了.
    2. 缺对产出进行嵌入式设备上的自动化测试流程.

    看了下 各大厂好像都是自研流程. 商业化的不多. 求指导....
    676529483
        31
    676529483  
       2021-02-02 14:44:22 +08:00
    CI 我司用的 Jenkins,但个人感觉 drone 比较好用。CD 直接 k8s,自研平台掉 APIServer
    amundsen
        32
    amundsen  
       2021-02-02 15:42:27 +08:00
    gitlab + k8s (公司从 docker 迁移到 k8s 的)
    jerray
        33
    jerray  
       2021-02-02 16:49:26 +08:00
    没有 CI/CD 也能容器化,主要是先容器化。

    我们最开始容器化的时候,项目负责人执行命令在本地构建和上传镜像。后来用得比较成熟了才部署了 CI 。代码仓库如果是 GitLab 的话,直接用 GitLab CI/CD 。GitHub 就考虑 GitHub Actions 。Drone.io 也可以考虑,本身就是容器化部署,特别方便。
    hantsy
        34
    hantsy  
       2021-02-02 20:47:35 +08:00
    hantsy
        35
    hantsy  
       2021-02-02 20:50:54 +08:00
    我这个例子配置了比较常见的 CI (大部分现代 CI 云服务,CICD 都是一体的),我选择了 8 个,还有配置其他,代码质量,测试 Coverage,等。
    moxiaowei
        36
    moxiaowei  
       2021-02-04 08:52:45 +08:00
    k8s+jenkins,使用 kubesphere 可视化操作 很爽的
    thinkmore
        37
    thinkmore  
       2021-02-04 10:42:37 +08:00
    springboot + harbor + drone + k8s + kustomize
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5496 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 08:24 · PVG 16:24 · LAX 00:24 · JFK 03:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.