Jenkins、Gradle 和 "artifacts" 如何结合在一起?
How do Jenkins, Gradle and "artifacts" all tie together?
我正在做一个项目,我们正在将工件上传到 AWS,这是我们的中央存储库。我不确定为什么我们要在那里存放人工制品;它有什么用?我们正在使用 Jenkins 脚本将我们的 Gradle 构建的工件上传到 AWS。我想知道工件 Gradle 和 Jenkins 之间的关系。我们正在为工件使用 S3 存储库。
工件是您的 Jenkins 构建的结果。事情是构建一次工件,然后在需要将其部署到新 server/environment 时重用它。
Gradle 文件提供有关如何构建工件的信息(如 Maven pom.xml)
Jenkins 是一种运行 Gradle 构建并实际组装工件的工具(尽管您可以在本地计算机或 TeamCity 代理上构建工件)。
工件是构建的结果,它是您将部署在服务器上或交付给客户端的东西。
工件 通常是构建的最终产品。它可能会或可能不会被编译,它可能会或可能不会以特定的方式打包(想想 JAR,Java 的 WARs,Ruby 的 Gems 或 [=36 的 Eggs =]).
工件只是一种抽象,用于谈论生产中发布的内容或包含生产质量代码的内容。因此,例如,如果我想发布一个打包为 WAR 的基于 Java 的 Web 应用程序,我需要确保我的构建工具能够将应用程序打包为 WAR ,并且我需要确保它部署的任何地方都能够接受 WAR 作为工件 运行 我的应用程序。
Gradle(或 Maven)等构建工具允许我们做各种事情,包括(但不限于):
- 以与环境无关的方式测试我们的代码
- 以与环境无关的方式编译我们的代码
- 以与环境无关的方式打包我们的代码(例如构建工件)
- 将我们的工件导出到工件商店(在您的情况下为 S3)
Jenkins 为您提供了一个在 "clean" 环境中执行上述所有操作的地方;你不必依赖一个人的机器来构建生产级的工件,你也不应该。像 Jenkins 这样的构建服务使团队能够随意持续构建或持续部署工件,通常 Jenkins 会处理将工件发布到工件存储的步骤。
我无法谈论您的应用程序生命周期 - 我个人不会使用 S3 作为放置工件的地方 - 但惯例是您有一个中心位置来放置这些工件,然后您依赖在那个中心位置,然后部署到各种其他服务。
我正在做一个项目,我们正在将工件上传到 AWS,这是我们的中央存储库。我不确定为什么我们要在那里存放人工制品;它有什么用?我们正在使用 Jenkins 脚本将我们的 Gradle 构建的工件上传到 AWS。我想知道工件 Gradle 和 Jenkins 之间的关系。我们正在为工件使用 S3 存储库。
工件是您的 Jenkins 构建的结果。事情是构建一次工件,然后在需要将其部署到新 server/environment 时重用它。
Gradle 文件提供有关如何构建工件的信息(如 Maven pom.xml) Jenkins 是一种运行 Gradle 构建并实际组装工件的工具(尽管您可以在本地计算机或 TeamCity 代理上构建工件)。 工件是构建的结果,它是您将部署在服务器上或交付给客户端的东西。
工件 通常是构建的最终产品。它可能会或可能不会被编译,它可能会或可能不会以特定的方式打包(想想 JAR,Java 的 WARs,Ruby 的 Gems 或 [=36 的 Eggs =]).
工件只是一种抽象,用于谈论生产中发布的内容或包含生产质量代码的内容。因此,例如,如果我想发布一个打包为 WAR 的基于 Java 的 Web 应用程序,我需要确保我的构建工具能够将应用程序打包为 WAR ,并且我需要确保它部署的任何地方都能够接受 WAR 作为工件 运行 我的应用程序。
Gradle(或 Maven)等构建工具允许我们做各种事情,包括(但不限于):
- 以与环境无关的方式测试我们的代码
- 以与环境无关的方式编译我们的代码
- 以与环境无关的方式打包我们的代码(例如构建工件)
- 将我们的工件导出到工件商店(在您的情况下为 S3)
Jenkins 为您提供了一个在 "clean" 环境中执行上述所有操作的地方;你不必依赖一个人的机器来构建生产级的工件,你也不应该。像 Jenkins 这样的构建服务使团队能够随意持续构建或持续部署工件,通常 Jenkins 会处理将工件发布到工件存储的步骤。
我无法谈论您的应用程序生命周期 - 我个人不会使用 S3 作为放置工件的地方 - 但惯例是您有一个中心位置来放置这些工件,然后您依赖在那个中心位置,然后部署到各种其他服务。