跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 请教 jenkins 发布流程的问题
未分類
15 5 月 2020

请教 jenkins 发布流程的问题

请教 jenkins 发布流程的问题

資深大佬 : rqxiao 4

现在机器 a 上装了 jenkins 其中配置了节点 机器 b 的信息,想要在机器 b 上发布项目

1.git 上拉取代码 2.打包

最后在 b 上启动

1 和 2 这两部是在 a 还是 b 上完成的额

大佬有話說 (33)

  • 資深大佬 : qingjiaowochangd

    应该是 B

  • 資深大佬 : chenuu

    在 A 上完成的

  • 資深大佬 : yjxjn

    A 啊。。。肯定不是 B,B 负责拉 war 包就行。或者手动给 copy 过去。

  • 資深大佬 : also24

    1,2 在 A 上完成,此谓 CI

    打包后的东西:
    从 A 上传输到 B 上;
    或者从 A 上传输到制品库,再使用 B 从制品库拉取。
    最后在 B 上启动。
    此谓 CD

  • 資深大佬 : e1o

    公司目前都是在 A 上面做这些操作

  • 資深大佬 : hiwangzheng

    B 上完成的,A 的工作就是任务发布,然后把执行脚本同步给 B,然后 B 去执行脚本,拉代码和打包。

  • 資深大佬 : LUAgam

    a 啊,jenkins 有 git 、maven 插件支持 pull 、打包、编译等

  • 資深大佬 : monsterxx03

    A 啊, B 上还有线上程序跑着, 编译打包很容易跑满 CPU 的.

  • 資深大佬 : xylophone21

    看起来关键分歧在如何理解“配置了节点 机器 b 的信息”,如果这里指的是 jenkins 的 slave 节点,那么在 B 上运行 1 和 2.
    但后面提到只是在 B 上运行,那边 B 就仅仅是部署机,1 和 2 在 A 上运行。
    所有关键是,“配置了节点 机器 b 的信息”具体指什么

  • 資深大佬 : x66

    用 B 的怕不是来搞笑的吧,如果有很多 B,那不是每台服务器都要编译打包一次,浪费资源不说,怎么保证打包出来的程序不受系统环境的影响

  • 資深大佬 : defunct9

    A.

  • 資深大佬 : nicevar

    需要打包的肯定在 A 上处理, A 上拉取代码 /编译打包, 然后部署到 B

  • 資深大佬 : CRUD

    9 +1,如果 B 是 jenkins 从属节点则在 B 上执行整个部署流程。

    如果 B 只是普通服务器节点,则整个代码拉取打包的过程均在 jenkins 节点也就是 A 节点上完成,打包完成后在将包 push 到 B 节点运行。

  • 資深大佬 : d0m2o08

    A 只是作为一个 master 用于发布任务,具体的任务需要 B 也就是 slaver 去执行

    这样不会对 master 造成压力

  • 資深大佬 : egglin

    涨知识了

  • 資深大佬 : xuanbg

    正常的操作逻辑:在 A 上面打包成 jar 或者 war,然后上传到 B 发布。

    你非要通过 A 控制 B 去 pull 源代码打包发布也不是做不到,但会比较麻烦就是了。

  • 資深大佬 : wucao219101

    在 A 上完成 git 代码更新和编译打包,再把包部署到 B 。
    B 是生产环境机器,一般不会去做编译打包,也不用安装 git 命令和 Maven 。

  • 資深大佬 : calmzhu

    jenkins 调度可以指定节点的。默认应该是 master 或者随机

  • 資深大佬 : basefas

    首先不能在 B 上执行,打包过程可能会占用过多资源,会影响 B 上的服务。
    实际上应该有个打包机 C,CPU 和磁盘性能最好好些,然后所有项目的打包任务都调度到 C 上。
    A 只负责调度,将对应任务调度到 C 上打包,打包完后再由 A 调度部署在 B 上。

  • 資深大佬 : legiorange

    现在机器 a 上装了 jenkins 其中配置了节点 机器 b 的信息,想要在机器 b 上发布项目

    1. A 机器通过 webhook 到 git 上拉取代码

    2.通过 pipeline 或者配置好的命令来通过 Maven 、Ant 、Gradle 打包

    此时 jekins 已经完成 CI 的持续集成。

    3.通过配置 B 节点通过 docker 、k8s 等实现容器构建部署,相当于把 A 构建好的包下载到 jvm 容器内运行。

    另我不同意打包机的观点,大部分情况是节点 A 机器已经基本够用,不够就扩展,又不是做 devsecops

  • 資深大佬 : BlackBerry999

    回答离 A 和 B 都有,应该相信谁呢?

  • 資深大佬 : julyclyde

    回答 A 的朋友们是不是没看清 B 是 jenkins slave 啊?

  • 資深大佬 : Chengxians

    jenkins 就该干它该做的事,当然是 a 干完所有的,b 去拉去最新的包重新部署

  • 資深大佬 : haosamax

    不会真有人在 b 上吧

  • 資深大佬 : A388

    用 B 的也是厉害

  • 資深大佬 : hell0v2

    技术上都可行,看具体业务和机器要求吧

  • 資深大佬 : figael

    CI (编译):可在 A 或 B 执行,如果 B 是 A 的 slave 节点,而且被分配。如果仅仅是配置了 ssh,只会在 A 执行。
    CD (部署):B 需要拉取 CI 阶段的产物来运行,这个产物可能在 A,或者 B 。
    —
    生产流程,一般 B 不能作为 jenkins slave 节点。

  • 資深大佬 : dolphintwo

    A 送分题 下一个

  • 資深大佬 : jynstar

    A

  • 資深大佬 : andj4cn

    拉代码和打包是 A 做的,打包结束后包也放在了 A 或者上传到其他位置。这时候需要一步主动操作,就是怎么把包放到 B 上运行。这部分就很自由,一般都是手动操作把包从 A 拉到 B 运行,或者写一个额外的服务拉过来,或者打包结果是 docker 镜像的话 A 上传到私有镜像仓库,手动发布到 k8s 上去。总之拉代码和打包肯定是 A 做,发布视情况而定。

  • 資深大佬 : cominghome

    @BlackBerry999 看补充的内容,B 不是 slave 。那显然 1 2 都是在 A 完成的,B 只负责运行代码

  • 資深大佬 : smilzman

    首先,在 a 和 b 上打包都没问题,但是你思考一下,如果把问题换成在机器 a 上装了 jenkins,其中配置了节点机器 b 和机器 c 的信息,想要把项目 x 发布到机器 b 和机器 c 上,这样是不是就清晰了?

    在发布到一台机子的时候,在哪里打包都一样,但是如果需要同时发布到 b 和 c 是不是需要打包两次、安装多套打包环境?

  • 資深大佬 : tingfang

    反正不要在提供服务的机器上打包。

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具