userlijinhong
V2EX  ›  Java

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

  •  
  •   userlijinhong ·
    LiJinHongPassion · Feb 1, 2021 · 9582 views
    This topic created in 2102 days ago, the information mentioned may be changed or developed.

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

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

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

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


    跟 CI/CD 没有一毛钱关系
    soulmt
    soulmt
    Feb 1, 2021
    18
    容器化是容器化,自动部署是自动部署, 容器化方案 docker+k8s 这玩意你想怎么部署都可以 可以用 jenkins 哪怕自己写 shell 脚本都可以,或者你说的 ci/cd 自动部署,是 2 块功能哦
    kaka6
    kaka6
    Feb 1, 2021❤️1
    19
    不是大厂项目的话
    其实自己写个更新程序也不难
    把项目代码托管到 码云、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
    tilv37
    Feb 1, 2021
    20
    Ci/CD 的话,目前公司的项目是放在微软的 Azure 上的。然后用的 Azure DevOps

    一般是:
    代码托管( azure devops repo )->DevOps Pipeline -> DevOps Realease ->Azure Container Registry - > Azure K8S Service
    tilv37
    tilv37
    Feb 1, 2021
    21
    @tilv37
    顺序错了

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

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

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

    我们最开始容器化的时候,项目负责人执行命令在本地构建和上传镜像。后来用得比较成熟了才部署了 CI 。代码仓库如果是 GitLab 的话,直接用 GitLab CI/CD 。GitHub 就考虑 GitHub Actions 。Drone.io 也可以考虑,本身就是容器化部署,特别方便。
    hantsy
    hantsy
    Feb 2, 2021
    35
    我这个例子配置了比较常见的 CI (大部分现代 CI 云服务,CICD 都是一体的),我选择了 8 个,还有配置其他,代码质量,测试 Coverage,等。
    moxiaowei
    moxiaowei
    Feb 4, 2021
    36
    k8s+jenkins,使用 kubesphere 可视化操作 很爽的
    thinkmore
    thinkmore
    Feb 4, 2021
    37
    springboot + harbor + drone + k8s + kustomize
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2842 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 201ms · UTC 14:05 · PVG 22:05 · LAX 06:05 · JFK 09:05
    ♥ Do have faith in what you're doing.