权力给人民-用用户插件自定义和扩展Artifactory
根据我们与成千上万Artifactory用户的接触经验,我们可以肯定一件事:我们不知道.
每个组织都以不同的方式执行ALM:工件审批流程、快照保留策略、构建到发布流程、治理、所需的元数据以及更多——每个组织都是不同的。对于构建和部署流程应该是什么样子,我们肯定有一些想法,但是还有很多东西使您的流程变得独特。,这很好。毕竟,您不是因为在理想的部署周期内工作而获得报酬,而是因为解决业务问题而获得报酬。至少我们希望如此。
承认我们没有更好的知识这一事实会使我们作为二进制存储库的创建者的生活变得复杂……而且不仅会伤害我们的自我。我们想为你的工作提供完美的工具,但我们怎么能不指示你的工作是什么呢?解决方案是众所周知的-扩展,又称插件,用户插件,你能想到的。
“天啊!,你可能会说。“代码!joy joy !终于有借口到处乱砍了!”或者“OMG !代码!把这些东西编码到你的产品中是你的工作,不是我的!”听着,不管怎样,我们没有太多选择,不是吗?说到定制,你必须告诉Artifactory你想让它做什么。我们只能尽力为您简化。因此,我们开发了一个简单的DSL。
在这篇文章中,我将向您展示使用用户插件定制Artifactory是多么容易。情况是这样的:您希望阻止下载已弃用的工件。已附带的弃用信息是一组自定义属性通过一些质量保证机制(或有机体)对工件进行处理。
比方说,禁止下载的工件用属性进行了注释弃用= true.Artifactory允许您编写将在响应系统中的各种事件时执行的回调代码。控件中可用回调函数的列表用户插件文档.我们要写a下载插件和回调我们正在寻找的是altResponse.在这个回调中,我们可以提供一个替代的响应,而不是Artifactory所请求的响应。这是代码:
1下载{2altResponse {request, responseRepoPath ->3.def弃用=存储库. getproperty (responseRepoPath) .getFirst (“弃用”)
4如果(已弃用&& deprecated. toboolean ()) {5状态= 4036消息=“这个神器已弃用,请使用其他神器。”
7日志.warn"请求已弃用神器:responseRepoPath美元.";
8}9}10}
所以,我们一行一行地看:
- 声明它是a
下载插件。 - 定义我们需要的回调类型(
altResponse).当我们实现替代响应时,Artifactory为我们提供了两个对象:- 的
请求,一个org.artifactory.request.Request.它封装关于传入请求的信息,例如客户端详细信息和请求的信息 - 和
responseRepoPath,一个org.artifactory.repo.RepoPath.它封装了关于要返回的工件的信息。
- 的
- 的第一个值
“弃用”属性,如果在表示的构件上定义responseRepoPath. - 如果该值存在并且是
“真正的”,1或“y”(正如Groovy声明的那样toBoolean ()) - 将返回代码设置为403 (被禁止的),
- 设置正确的错误消息和
- 对象发出警告(可选)Artifactory日志.
享受您的构建!
