一.简介
制品是软件开发过程中产生的多种有形副产品之一。广义的制品还包括用例、UML图、设计文档等。而狭义的制品就可以简单地理解为二进制包。虽然有些代码是不需要编译就可以执行的,但是我们还是习惯于将这些可执行文件的集合称为二进制包。本章讨论的是狭义的制品。行业内有时也将制品称为产出物或工件。
最简单的制品管理仓库就是将制品统—放在一个系统目录结构下。但是很少有人这样做,更多的做法是使用现成的制品库。
制品管理涉及两件事情:一是如何将制品放到制品库中;二是如何从制品库中取出制品。由于每种制品的使用方式不一样,因此下面我们分别进行介绍。
二.Jenkins管理制品
从手工打包到自动化打包,再将打好的包放到制品库中。这看似简单,但是要在团队中从无到有地落地其实是一个很漫长的过程,特别是对于存在很多遗留项目的团队。每个团队都应该按照自己当前情况进行调整,有时统一的解决方案不一定适合你。
曾经,笔者所在团队已经将部分项目的编译和单元测试放到Jenkins上执行,然而并没有人力及能力搭建Nexus。但是又期望能将自动打包好的JAR包放到各个环境中使用,以马上从持续集成中获益,怎么办?
这时,archiveArtifacts步骤就派上用场了。它能对制品进行归档,然后你就可以从Jenkins页面上下载制品了。
完成的pipeline如下:
pipeline {
agent any
tools {
maven 'mvn-3.5.4'
-
}
stages {
stage('Build')
{
steps {
sh "mvn clean spring-boot: repackage"
-
}
-
}
-
}
post {
always{
archiveArtifacts artifacts:
'target/**/*.jar', fingerprint: true
-
}
-
}
}
常用参数:
- artifacts(必填):字符串类型,需要归档的文件路径,使用Ant风格路径表达式
- fingerpring(可选):布尔类型,是否对归档的文件进行签名
- excludes(可选):字符串类型,需要排出的文件路径,使用Ant风格路径表达式
- caseSensitive(可选):布尔类型,对路径大小写是否敏感
- onlylfSuccessful(可选):布尔类型,只在构建成功时进行归档
- 这个步骤并不只用于归档jar包,事实上,它能归档所有类型的制品