2017-01-23 71 views
1

我有2個jenkins作業,第一個作業將jar文件發佈到artifactory並向該構件添加屬性(commit id)。第二個工作總是從artifactory中提取最新版本的jar,但它也需要與該工件相關的屬性。我們正在使用gradle來構建我們的版本。有沒有辦法讓它在gradle裏面,或者我們有其他的選擇嗎?如何在gradle構建腳本中讀取artifactory的構件屬性

編輯:作業不是管道的一部分。這意味着它們是獨立的作業,另一個存儲庫中的第二個作業觸發器會發生變化

回答

0

第一個jenkins作業觸發第二個參數化構建。

第二個版本可以使用Invoke Gradle script或通過命令行觸發gradle中的一種。

如果您使用Invoke Gradle script功能,那麼您將檢查Pass job parameters as Gradle properties。然後,假設你的參數構建兩個名爲commitId你可以在你的代碼是這樣

if (project.properties.containsKey('commitId')) { 
    println "do something with commitId: ${project.properties.get('commitId')}" 
} 

如果你只使用一個命令行腳本,那麼你可以通過這樣的

./gradlew clean build -PcommitId=${commitId}

屬性引用此無論哪種方式獲取build.gradle中的屬性都是一樣的

+0

感謝您的回答。我在我的答案中添加了一個編輯。 我的2個工作是獨立的工作,我不想每次開始第一份工作時觸發第二份工作,反之亦然。 – Sujji

0

您可以使用Artifactory client(Java)來獲取工件屬性。
例如:

Artifactory artifactory = ArtifactoryClient.create("http://localhost:8081/artifactory", "username", "password"); 
ItemHandle item = artifactory.repository("RepoName").file("path/to/file.jar"); 
List<String> values = item.getPropertyValues("commitId"); 

有關客戶端的更多信息請參見公司GitHub的page

相關問題