使用CI服务器和Artifactory超越Java

在过去的几年中,持续集成(CI)和自动化发布管理方法在非java构建中变得更加强大 数量许多熟悉的工具都用于这些方法,如版本控制系统管理你的源代码,你的构建工具实际上从源代码和构建服务器构建你的软件,它不断地使用构建工具构建你的软件。但是否还有其他遗漏的东西?让我们看一个简单的图表,它描述了你的CI流程:

1.开发人员获取所需的依赖项(第三方库,其他模块)。2.开发人员编写新代码。3.代码致力于风投公司.4.构建服务器轮询VCS进行更改。5.一旦发现,构建服务器就会构建软件:编译它,运行测试,并组装工件。6.构建的构件被发布给QA、登台,甚至直接发布给最终用户。正如你所看到的,除了阶段1和6之外,所有的东西都是众所周知和熟悉的。但是这两个阶段呢?您需要一个依赖项管理机制。 In this post, we’ll illustrate the options for automated builds with dependency management in non-Java builds or when not using .NET with NuGet (use it, if you can!在这里这是我们的看法关于它)。建议的解决方案适用于任何类型的构建,无论是C, c++, c#, iOS和Objective C, Python等等。因此,让我们看看如何为非java项目实现使用依赖项管理的CI。以下是这些选择的优缺点:

解决方案
优点
缺点
1
对VCS的依赖
-使用成熟的构建工具
-简单的设置-你无论如何都可以使用VCS
VCS不适合二进制依赖。你可以阅读为什么在这里
2
使用内置依赖管理构建工具就像Maven而且Gradle
- - - - - -构建带有依赖项管理的工具
- - - - - -新工具去学习。Maven 2和Gradle学习曲线非常陡峭。
-“改编”自Java。而 在那里 方法 用它们来构建“本地”应用程序(用Gradle更容易,用Maven更难),它仍然让人感觉,让我们说,人为的,强加他们的新惯例。
3.
在构建服务器中声明对构建的依赖关系
-使用成熟的构建工具
-只适用于项目间的依赖关系(由同一个构建服务器构建)
-不够灵活 -包括/不包括 -布局改变
4
使用共享依赖项存储。存储库(FTP,文件服务器等)
-使用成熟的构建工具
—手动填充存储库
—管理存储库

如你所见,所有的解决方案都有缺点。

Artifactory来了

Artifactory是二进制存储库-在构建时考虑到二进制文件管理版本控制、管理、安全和构建服务器集成。
因此,使用Artifactory完全消除了第四种解决方案的缺点。您的构建可以使用强大的功能填充存储库 REST API .米 管理简单、精简。
但还有更多。通过使用用于Jenkins的Artifactory CI集成, TeamCity和Bamboo,您还可以避免上面列出的第三个解决方案的缺点。首先,您可以指定您愿意发布哪些工件。它们将被上传到Artifactory构建的结束。其次,您可以指定构建需要哪些依赖项。它们将在运行期间从Artifactory下载。所有这些都通过使用构建服务器UI实现。
Artifactory Jenkins插件 的一部分 通用的 建立支持 ,一种简单的基于模式的语言,允许您表达哪些工件构建将被部署到存储库中。这包括附加动态搜索属性。
首先,在构建环境中启用通用-构件集成:

接下来,配置您的自定义部署和解析规则。让我们从部署(发布)开始:

在上面的示例中,我们为部署配置了以下规则。所有工件将从工作目录部署到' lib -release-local '存储库(上面配置过)维护每个文件的路径:

模式
意义
* * / x64 / *dll = > x64Win
将所有dll部署到“x64Win”目录
* * / *邮政= >winFiles
将所有zip文件部署到winFiles目录
unix/*tgz
部署所有tgz将Unix目录下的文件转移到目标存储库的根目录
该插件还控制在构建开始之前从存储库解析哪些工件。分辨率允许你指定智能搜索模式:

在上面的示例中,我们配置了以下规则依赖关系解决方法:

模式
意义
填词-release-localx64Wi / *;compatibilityLevel=媒介
将lib -release-local存储库的x64Wi目录中的文件解析到工作区的根目录,但仅当'compatibilityLevel属性设置为above媒介
填词-snapshot-local邮政= >winFiles
解析lib -snapshot-local存储库中的所有zip文件到winFiles目录在工作区的根目录下
填词-snapshot-localunix /发行版tgz = >linuxFiles
解决了发行版tgz文件从Unix目录lib -snapshot-local到linuxFiles目录在工作区的根目录下
填词-release-local* * / * @winx64_build #释放
这个例子显示了对的依赖工件在已标记为“已发布”状态的早期构建中生成
从配置的角度来看,这种对自动依赖声明和发布的支持使得支持一个发布流非常容易,在这个发布流中收集多个工件以构建最终的发布
非常欢迎你来试一试。方法中提供了上面描述的发布功能 Artifactory的免费开源版本 .如果你想配置依赖关系解决方案,继续下载 Pro版评价
依赖项管理对于持续集成和快速发布至关重要。通过将Artifactory添加到CI堆栈中,您可以轻松克服构建工具中缺乏此类功能的问题,并留下依赖项解析和工件部署到二进制存储库和构建服务器。