【问题标题】:Deploy web app via Jenkins通过 Jenkins 部署 Web 应用程序
【发布时间】:2017-02-27 02:34:20
【问题描述】:

我最近开始搞乱 Jenkins,不确定如何将我的 Web 应用程序部署到基本服务器。我已进入管道 (https://jenkins.io/doc/book/pipeline/),这似乎是一种很棒的工作方式。

我有点卡住的地方有两个:

  1. 一旦我的 repo 在 Jenkins 的工作区中,我该如何准备它以便只部署应用程序所需的文件?例如,我在部署东西时不需要我的src/ 目录或Vagrantfile
  2. 如何将我的应用程序部署到服务器?我到处都看到了例子,但我有点迷失了,因为似乎有很多方法可以做到这一点。我假设scp 或类似的东西......?

在 #2 的基础上,有没有办法将 Web 应用程序部署为事务(一次性)而不是逐个文件?

如果我可以提供任何可能的答案信息,请告诉我!

【问题讨论】:

    标签: jenkins deployment web-deployment devops


    【解决方案1】:

    我无法谈论您的具体用例,但执行此操作的常用方法是构建和部署模型,在该模型中您将拥有 2 个 Jenkins 工作。 “构建”作业将从源代码中检出,运行 maven 或 make 等构建命令,最后将“归档”构建工件。后者是底部“构建后操作”选项卡下的一个选项。

    在“部署”工作中,您将获取您选择的工件。您可以获取单个文件、所有文件以及介于两者之间的所有文件。这需要使用“Copy Artifact”插件,它允许您复制其他作业生成的文件。现在您可以在“执行命令”框中运行常用的部署脚本。大多数命令行范例都是开箱即用的,例如设置环境变量。

    以上说明假设您希望在您配置为 Jenkins 从属的主机上运行您的应用程序。

    【讨论】:

      【解决方案2】:
      1. 使用Paul Back 中提到的工件,或video 中的第3 方工件服务器

      2. 这总是很棘手且容易出错。为什么不使用新版本启动新服务器(人工验证一次

      【讨论】:

        【解决方案3】:

        Jenkins & Ansible 就是这里的答案。这就是我部署到生产环境的方式,因为我不需要使用 Docker 之类的东西(特定应用程序的问题太多),所以必须在本地运行应用程序。简单的例子是

        您在 gitlab / github 或其他任何地方监视特定分支,然后在该分支上调用 webhook 推送 / 合并等,此时您可以通过在 jenkins 作业上运行脚本来处理您需要做的任何事情来监控那个分支(詹金斯)。

        在我的例子中,jenkins 和 ansible 在同一台服务器上运行。 Jenkins 运行 ansible playbook 来完成我需要做的任何事情。

        例如使用 ansible,我复制某些需要存在的文件,运行配置/更改文件名等。设置 nginx,运行 composer,

        你明白了。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-10-22
          • 1970-01-01
          • 2020-02-21
          • 2020-09-23
          • 1970-01-01
          相关资源
          最近更新 更多