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

关于公司自动化部署的设想

  •  1
     
  •   avalon8 · 47 天前 · 2917 次点击
    这是一个创建于 47 天前的主题,其中的信息可能已经有所发展或是发生改变。
    小弟公司这几天在做 devOps,让我负责自动部署这块,小弟也看了很多资料,提出了一个设想:

    1、开发人员 Merge 代码后 GitLab 触发 jenkins
    2、jenkins 根据每个应用设置对应的 job,根据每个 module 下的 dockefile 将应用打成 docker 镜像并 push 到 nexus 镜像仓库。
    3、使用 rancher 从 docker 仓库拉取镜像并部署。

    小弟有几个疑问:
    1、上述流程是否可以实现
    2、GitLab 触发 jenkins 持续集成的时候需不需要先执行 maven 命令打包在打 docker 镜像
    3、rancher 能否设置镜像仓库上传了新的镜像后自动拉取 docker 镜像。
    4、关于 docker 镜像的构建能否这样:
    ( 1 )先构建好每个 module 的 tomcat 镜像 放到私有仓库
    ( 2 )每次 jenkins 构建先从仓库拉取对应 tomca 镜像,再把 war 包打进去然后再 build 一次镜像
    ( 3 )推送到私有仓库
    27 回复  |  直到 2019-07-23 04:42:17 +08:00
        1
    anubu   46 天前
    个人经验:
    1. 可以实现,基本流程都差不多,难点在于具体各个环节的调试落地;
    2. 编译构建步骤是不可缺少的,无非是你选择在 jenkins 环境中出 war 包还是 Dockerfile 多阶段构建出 war 包,这取决于你的构建环境是什么,docker 镜像只是对 war 的一种封装。
    3. 不清楚 rancher 是否可以自动拉取最新镜像,如果部署环境是 docker 的话可以参考 https://github.com/containrrr/watchtower
    4. tomcat 作为基础镜像,出 war 包后直接 build 一个新的镜像即可。
        2
    avalon8   46 天前
    @anubu 我想着是用 jenkins 打成 war 包再把 war 包复制到 tomcat 中再打成镜像 push 到仓库
        3
    LicV587   46 天前
    @avalon8 为什么要这么复杂?直接 Springboot,内嵌 tomcat,jenkins 直接打 jar 包,在运行 docker build 一个镜像
        4
    Defned   46 天前
    刚刚在公司落地,我用了 drone
        5
    victorywangzhcn   46 天前
    个人经验 2:
    1. 可以实现,不过 Merge 这需要看看开发流程以及回收 Master 权限
    2. 我们以前的流程是 Git --> Jenkins --> Unit Test --> Deploy snapshot to Nexus --> Deploy Daily
    3. 可以采用 Jenkins 的 Pipeline 完成这个流程
    4. 这里有俩选择,一是基础镜像(基本不动)+ War 跑新的 Image,二是类似我们之前的方案,只有一个基础镜像,每次 CI 流程的时候打 snapshot 包,基础镜像里负责根据启动参数拉取对应的包并解压执行(这里也有助于统一运维),所以每次只需要重启,他就能自动拉包
        6
    wangking   46 天前
    可以实现,jenkins pipeline 一条龙的事,加上 k8s 就更容易了
        7
    MuscleOf2016   46 天前
    可以实现的,自动化中间的这些流程,可以先自己人工跑一遍,jenkins 最后作为一个自动工具将这些流程都串起来就可以了。人工能做都,基本自动工具都可以做。
        8
    MuscleOf2016   46 天前
    @MuscleOf2016 不过简单都直接 gitlab-runner 配流水线就好了嘛
        9
    lauix   46 天前
    已经运行了一个多月 也用 rancher 整体技术实现差不多。
        10
    avalon8   46 天前
    @LicV587 应用架构是 springMvc+dubbo
        11
    luozic   46 天前 via iPhone
    数据库需要相应的同步工具,否则也就是应用的自动化部署。
        12
    wangxiaoaer   46 天前
    我也在关注这个东西,其实开发端 从 git 到 ci 到 jar/war/docker image 都没有问题。

    我们纠结的是打包结果更新好之后如何推送到服务器,docker 的话可以直接 push,jar 或者 war 就不好弄,我们目前是搭建 ftp 上传,但是总感觉不太方便。

    其次,更新包上传到云端后,服务器如何得知应用有更新,我们目前是做了个小应用,定时访问云端,然后下载、重启,同样感觉这个不是很方便。

    有没有好的方案(成熟的)?对了,个别服务器是 windows 的。
        13
    avalon8   46 天前
    @wangxiaoaer 推送到服务器 jenkins 就可以做到啊,我们现在就可以实现在 jenkins 直接打包然后测试站点直接生效
        14
    akira   46 天前
    @avalon8 publish over ssh ? 那功能在内网内用不错

    如果是用阿里云或者腾讯云的话 他们有提供 cicd 的方案了,给钱就行
        15
    mikuazusa   46 天前
    jenkins 全部能轻松实现
        16
    KuroNekoFan   46 天前
    gitlab ci 也可以
        17
    br00k   46 天前   ♥ 2
    Rancher 本身就有 Pipeline 了,应该可以满足楼主的要求。
        18
    avalon8   46 天前
    @br00k 十分感谢
        19
    wuhang89   46 天前
    我就是这么做的。
        20
    Takamine   46 天前
    话说国内好像用 Travis CI 的确实不多诶。
        21
    wangxiaoaer   46 天前
    @avalon8 #13 怎么推? jenkins 在本地,如何把构建好的包推到外网服务器?
        22
    thonatos   46 天前
    基于 Jenkins & Docker 的 workflow 应用比较多,基础设施用自建 Rancher 或者云服务商提供的容器服务区别不会很大,早年实现过测试过多套方案,有兴趣可以看看我专栏里的几篇文章( https://zhuanlan.zhihu.com/p/24296218 )。

    k8s 生态日趋完善,多研究研究,蛮有意思,比如可以考虑一下 Knative。
        23
    anubu   46 天前
    制品推送没什么问题的,有各种各样的制品仓库,jenkins 也有各种插件支持,最原始的 ftp、ssh 都可以实现,我们的制品是 docker 镜像,所以就简单的 docker push。
    部署更新我们也是在 jenkins 中完成的,根据不同的场景,显式的去执行一个部署操作,而不是推送制品后等待触发部署。可用的工具也很多,Windows 目标可以使用 powershell 远程操作,Linux 目标 SSH 脚本也不错,docker 主机或 k8s 集群都有远程 API 可以调用。
        24
    AlfredYoung   46 天前
    gitlab 自带就可以实现了
        25
    iehp   46 天前
    可以去掉 jenkins,直接 gitlab 的 gitlab-runner 都可以搞定了。
        26
    avalon8   46 天前
    @thonatos 谢谢
        27
    dafengchui   27 天前
    @iehp #25
    @avalon8 #26 qii404,me/2018/06/21/gitlab-runner.html 这个基本就可以了
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3908 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 19ms · UTC 03:48 · PVG 11:48 · LAX 20:48 · JFK 23:48
    ♥ Do have faith in what you're doing.