1

诚然,我对整个持续集成的想法很陌生。因此,我一直在网上搜索以找到一种方法来获取我的 ASP.NET 项目,通过 Jenkins 提供它以在 Linux 机器上使用 NAnt 和 mono 自动构建,并最终将工件部署到 Apache Archiva 中以进行检索稍后进行安装等。

我的问题是,我不知道如何将这种从 Jenkins 移交给 Archiva 的工件集成。

所以,这就是我的理解:

  • Archiva 可用于存储任何类型的工件。.zip文件(这是我想要使用的)、.jar文件等。
  • Jenkins 可以使用 NAnt 构建源代码来调用 Mono 到我的 .NET 4.0 项目
  • Jenkins 还可以将文件压缩到合适的工件中

这是我不明白的:

  • 我如何将.zip文件(工件)从 Jenkins 构建时存储的位置获取到 Archiva 存储库?

这是我正在使用的:

  • Jenkins (1.502) 服务器和 Archiva (1.3.4) 服务器在同一台 Ubuntu 12.04 机器上
  • NAnt (0.92) 构建脚本
  • 单声道 (2.10)

我什么都不知道(但可能有帮助?):

  • 马文
  • 常春藤
4

2 回答 2

3

设置一个单独的 Jenkins “任务”,使用 Maven 进行部署。

注意:您不需要对 Maven 有太多了解即可完成这项工作。你必须安装它。您必须按照下面页面中的说明对其进行配置,并且需要使用该信息从命令行调用它。(如果您想了解更多信息,可以使用替代建议。)

使用此页面中的信息设置 settings.xml:

http://archiva.apache.org/docs/1.4-M2/userguide/deploy.html

同一页面显示了如何从命令行运行 Maven。要使用它,您将创建一个运行 shell 脚本并直接从构建任务创建它的位置部署的 Jenkins 任务。然后,您要么手动运行部署,要么让 Jenkins 构建任务在部署任务完成时运行部署任务,而不会出现错误。

您可能不熟悉的一件事是 Archiva/Maven 的每个文件的坐标系统。

每个工件都有一个组、工件 ID 和版本。如果需要,可以有一个分类器等。

  • 该组通常是公司的域名倒序加上内部分类指标——com.microsoft.phone.web 是由微软电话部门创建的网络应用程序。
  • 工件 id 是特定工件的名称。
  • 版本是版本字符串的正常形式 - 1.0a 或 2.0-asl 或 3.2.1。
  • 分类器的使用方式类似于我们使用文件扩展名——zip、jar。

这是解释的简短版本。谷歌是你的朋友。

您也可以使用 Maven 任务来执行此操作。Archiva 页面上有关 pom.xml 文件的信息将是必需的,但您必须谷歌“Maven deploy”并阅读如何针对您的特定情况执行此操作。当工件位于本地 Maven 存储库(在构建机器上)并且该存储库具有您需要的特定文件和文件夹结构时,将部署默认情况。这就是 Maven 在创建和“安装”工件时安排工件的方式。

于 2013-02-21T19:05:04.323 回答
1

为非 Maven 构建从 Jenkins 轻松部署到 Archiva 的可能性可以编写类似于https://wiki.jenkins-ci.org/display/JENKINS/Artifactory+Plugin的插件(注意:我可以帮助你,但没有时间 ATM做任何事 :-) )。我不太了解 NAnt,但对于 ant,我们构建了一些 maven ant 任务来部署工件,请参阅http://maven.apache.org/ant-tasks/

于 2013-02-22T13:26:52.103 回答