簡體   English   中英

如何使用Jenkins中的URL觸發器插件返回添加到Jfrog工件中的新工件的確切名稱

[英]How to return the exact names of the new artifacts added to Jfrog artifactory using URL Trigger plugin in Jenkins

我需要每天晚上輪詢工件URL,找出添加了哪個文件,然后使用新工件的名稱作為參數來觸發Jenkins中的另一項工作。 但是URLTrigger插件不會返回新工件的名稱嗎? 有什么辦法可以得出這一點?

我使用groovy運行curl命令以提取並解析metas.xml以計算出jar名稱。

假設Artifactory的元數據內容如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<metadata>
  <groupId>path.to.application</groupId>
  <artifactId>jarName</artifactId>
  <versioning>
    <latest>6.1.12-SNAPSHOT</latest>
    <release>6.1.11</release>
    <versions>
      <version>6.1.11</version>
      <version>6.1.12-SNAPSHOT</version>
    </versions>
    <lastUpdated>20181122121509</lastUpdated>
  </versioning>
</metadata>

因此,我想要的構建信息是“ jarName-6.1.12-SNAPSHOT.jar”

import org.xml.sax.SAXParseException;
//Assumed artifactory path to application.jar
def metaDataPath = 'https://your.artifactory.server/artifactory/path/to/application/jarName/maven-metadata.xml'

//Get the file using curl (you might need to use a proxy), with an api token for authentication
def metadataContent = 'curl -x<your-proxy:80> -H "X-JFrog-Art-Api:<your token>" -XGET ' + metaDataPath
metadataContent = metadataContent.execute().text

//Parse it to get the 'latest' element
def parsedXml = (new XmlParser()).parseText(metadataContent)
println parsedXml.versioning.latest.text() //6.1.12-SNAPSHOT

如果快照構建的名稱中包含時間戳,則需要使用返回的6.1.12-SNAPSHOT來構建新的元數據路徑:

https://your.artifactory.server/artifactory/path/to/application/jarName/6.1.12-SNAPSHOT/maven-metadata.xml

然后重復提取和解析過程,以從子meta.xml獲取帶有時間戳的名稱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM