我正在尝试扩展我们的Jenkins工作(构建整个项目),以将构建的工件部署到我们的Artifactory,但是随后我遇到了一些与工件版本控制相关的问题。如果我尝试重新部署其版本未更改的工件(不是快照),则会得到可以理解的错误403(用户'foo'需要DELETE权限),我不应该替换已经发布的工件。如果工件版本包含-SNAPSHOT
,则没有问题,它将始终被上载。我的问题是:我们应该如何处理在Artifactory中锁定覆盖的情况?
Jenkins的工件插件是否应该仅在已部署而不是使工作失败的情况下忽略工件的部署?
如果工件已使用固定版本(非-SNAPSHOT)进行部署,则该作业应失败。例如,在手动作业触发器上,我想知道是否尝试使用已经发布的版本名称(可能是团队中的其他人)进行构建和部署。
还是应该始终使用-SNAPSHOT(在开发过程中),即使工件没有更改?
-SNAPSHOT专为开发而设计。是的,我们通常在构建结束时推送工件,即使它没有发生变化,因为您更新了例如README并触发了作业。
通常,SNAPSHOT的生存期取决于二进制存储库(此处为Artifactory)的配置方式。SNAPSHOT例如可以每2周清洁一次。
Manuel共享的链接还有其他有趣的定义,例如
Usually, only the most recently deployed SNAPSHOT,
for a particular version of an artifact is kept in the artifact repository.
Although the repository can be configured to maintain a rolling archive
with a number of the most recent deployments of a given artifact
https://docs.oracle.com/middleware/1212/core/MAVEN/maven_version.htm#MAVEN401
即使工件没有更改,我们是否在每个发行版上都增加版本?
是的,我们会在每个发行版中增加版本号。我称释放客户会得到什么。除特殊情况外,如果工件没有更改,则不会进行发布过程。发布通常涉及组织中的很多人,甚至包括那些不是来自Development的人。一种流行的标准是使用语义版本控制https://semver.org/有时人们更喜欢使用日期进行版本控制。我的建议是使用semver并在工件中包含一个带有构建日期的文件。工件本身可以使用此文件来在运行时告知其版本。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句