我有2個jenkins作業,第一個作業將jar文件發佈到artifactory並向該構件添加屬性(commit id)。第二個工作總是從artifactory中提取最新版本的jar,但它也需要與該工件相關的屬性。我們正在使用gradle來構建我們的版本。有沒有辦法讓它在gradle裏面,或者我們有其他的選擇嗎?如何在gradle構建腳本中讀取artifactory的構件屬性
編輯:作業不是管道的一部分。這意味着它們是獨立的作業,另一個存儲庫中的第二個作業觸發器會發生變化
我有2個jenkins作業,第一個作業將jar文件發佈到artifactory並向該構件添加屬性(commit id)。第二個工作總是從artifactory中提取最新版本的jar,但它也需要與該工件相關的屬性。我們正在使用gradle來構建我們的版本。有沒有辦法讓它在gradle裏面,或者我們有其他的選擇嗎?如何在gradle構建腳本中讀取artifactory的構件屬性
編輯:作業不是管道的一部分。這意味着它們是獨立的作業,另一個存儲庫中的第二個作業觸發器會發生變化
第一個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
中的屬性都是一樣的
您可以使用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。
感謝您的回答。我在我的答案中添加了一個編輯。 我的2個工作是獨立的工作,我不想每次開始第一份工作時觸發第二份工作,反之亦然。 – Sujji