我正在嘗試安裝jenkins-workflow來執行我們的集成測試。我們的集成測試是這樣工作的:如何讓git功能分支與jenkins-workflow一起工作?
有人在git的功能分支中對LibraryA
進行了更改。我們希望jenkins針對功能分支中的代碼運行單元測試,然後我們希望將此功能分支中的代碼安裝到client1
和client2
(它們是LibraryA
的用戶)並運行測試。
我能夠設置一個工作流程來完成除LibraryA
的功能分支的正確提交之外的所有操作。相反,我的設置只是從LibraryA
的某個(看似隨機)分支中提交一個提交。
我們有很多功能分支,因此在工作流程設置中對特定分支進行硬編碼並不合適。似乎應該有一些方法來獲取觸發工作流作業的提交的散列(即使使用SCM輪詢)。
我的設置是這樣的:
currentBuild.setDisplayName("#" + env.BUILD_NUMBER)
node {
git credentialsId: '033df7f1-7752-46bd-903d-8a70e613eed0', url: '[email protected]:mycompany/myrepo.git'
sh '''
echo `git rev-parse HEAD` > libraryA_version.txt
sudo docker run --rm=true -e LANG=en_US.UTF-8 -a stdout -i -t mycompany/libraryA run_tests
'''
archive 'libraryA_version.txt'
}
def integration_jobs = [:]
integration_jobs[0]={
node{
ws {
unarchive mapping: ['libraryA_version.txt':'.']
sh 'sudo docker run -t --rm mycompany/client1:v1 bash run_tests.sh "`cat libraryA_version.txt`"'
}
}
}
integration_jobs[1] = {
node{
ws {
unarchive mapping: ['libraryA_version.txt' : '.']
sh 'sudo docker run -t --rm mycompany/client2 run_tests.sh "`cat libraryA_version.txt`" '
}
}
}
parallel integration_jobs
所以,我現在的問題是,我怎麼能安裝git的回購/輪詢來得到正確的承諾,在第一次測試運行,這將在libraryA_version.txt
使用在隨後的測試中?
另外,我應該以完全不同的方式去了解這個過程嗎?
這就是我害怕的。我們是這樣開始的。我們有一個可以工作的多作業工具鏈,但它具有不可取的特性。它不符合我們的回購協議,因爲我們有太多的工作要管理。失敗通知和肇事者不能很好地工作。跨作業的設置很笨拙。這就是jenkins-workflow插件很好的原因 - 整個集成鏈的設置是一個相當緊湊的工作。 – Robert
然後讓我們回答你原來的問題,這裏是jenkins job env變量的列表:https://wiki.jenkins-ci.org/display/JENKINS/Building+a+software+project。在你的情況下,GIT_COMMIT和GIT_BRANCH應該是你在構建工作流時需要的信息。 – blacklabelops
我在工作的頂部打印出我的環境變量,這些變量不可用。顯然,jenkins-workflow作業不會設置這些GIT變量。 「下面的變量是當前工作流腳本中不可用: EXECUTOR_NUMBER NODE_NAME NODE_LABELS 工作區 SCM-特定變量如SVN_REVISION」 – Robert