使用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 2和Gradle学习曲线非常陡峭。
|
|
|
3. |
在构建服务器中声明对构建的依赖关系
|
-使用成熟的构建工具
|
-只适用于项目间的依赖关系(由同一个构建服务器构建)
-不够灵活
-包括/不包括
-布局改变
|
|
4 |
使用共享依赖项存储。存储库(FTP,文件服务器等)
|
-使用成熟的构建工具
|
—手动填充存储库
—管理存储库
|
如你所见,所有的解决方案都有缺点。
Artifactory来了
Artifactory是二进制存储库-在构建时考虑到二进制文件管理版本控制、管理、安全和构建服务器集成。
但还有更多。通过使用用于Jenkins的Artifactory CI集成, TeamCity和Bamboo,您还可以避免上面列出的第三个解决方案的缺点。首先,您可以指定您愿意发布哪些工件。它们将被上传到Artifactory在构建的结束。其次,您可以指定构建需要哪些依赖项。它们将在运行期间从Artifactory下载。所有这些都通过使用构建服务器UI实现。
首先,在构建环境中启用通用-构件集成:
接下来,配置您的自定义部署和解析规则。让我们从部署(发布)开始:
在上面的示例中,我们为部署配置了以下规则。所有工件将从工作目录部署到' lib -release-local '存储库(上面配置过),维护每个文件的路径:
|
模式
|
意义
|
|
* * / x64 / *.dll = > x64Win
|
将所有dll部署到“x64Win”目录
|
|
* * / *.邮政= >winFiles
|
将所有zip文件部署到winFiles目录
|
|
unix/*.tgz
|
部署所有tgz将Unix目录下的文件转移到目标存储库的根目录
|
该插件还控制在构建开始之前从存储库解析哪些工件。分辨率允许你指定智能搜索模式:
在上面的示例中,我们配置了以下规则依赖关系解决方法:
|
模式
|
意义
|
|
填词-release-local:x64Wi / *;compatibilityLevel=媒介,高
|
将lib -release-local存储库的x64Wi目录中的文件解析到工作区的根目录,但仅当'compatibilityLevel属性设置为above媒介
|
|
填词-snapshot-local:*.邮政= >winFiles
|
解析lib -snapshot-local存储库中的所有zip文件到winFiles目录在工作区的根目录下
|
|
填词-snapshot-local:unix /发行版.tgz = >linuxFiles
|
解决了发行版.tgz文件从Unix目录lib -snapshot-local到linuxFiles目录在工作区的根目录下
|
|
填词-release-local:* * / * @winx64_build #释放
|
这个例子显示了对的依赖工件在已标记为“已发布”状态的早期构建中生成
|
从配置的角度来看,这种对自动依赖声明和发布的支持使得支持一个发布流非常容易,在这个发布流中收集多个工件以构建最终的发布
.
依赖项管理对于持续集成和快速发布至关重要。通过将Artifactory添加到CI堆栈中,您可以轻松克服构建工具中缺乏此类功能的问题,并留下依赖项解析和工件部署到二进制存储库和构建服务器。
