![](/img/trans.png)
[英]how to dynamically populate the files present in a svn folder so user could multiselect them in jenkins job for parametrized build
[英]How to trigger a build on a Jenkins job based on specific files being updated on a SVN repo?
總的來說,我對詹金斯(Jenkins)和CI還是陌生的。
我們當前的SVN設置是由一個大型存儲庫構成的,該存儲庫包含按子目錄組織的各種項目,只要每個項目的特定文件提交給子目錄,我們都希望自動開始構建(並在將來進行測試)。 SVN回購。
我目前在詹金斯(Jenkins)的工作設置/工作流程就是這樣。
這一切都可以正常工作,但是從向SVN提交內容到Jenkins更新其本地副本的時間大約有一分鍾,還有一分鍾的時間使FSTrigger插件掃描“觸發文件”中的更改。
我剛剛在SVN中實現了提交后鈎子來解決第一個延遲,因此現在不再進行對SVN存儲庫的輪詢。
現在,我真的想擺脫由於FSTrigger插件每分鍾輪詢而造成的第二個延遲(輪詢是,順便說一句,無論如何都是一種糟糕的技術)。
給定我的觸發條件是針對我的每個項目將一個特定文件提交(更新)到SVN存儲庫,是否有一種方法可以使第一個作業基於剛剛更新的文件“調用/觸發”其他作業?
您想與FSTrigger插件分手。 正如您提到的,輪詢很差。
您想在提交后掛鈎中添加一些邏輯,以查看該提交中更改的路徑並觸發啟動適當構建的請求。
我不再使用jenkins或svn,所以我無法真正測試。 就像是:
svnlook changed -t "$TXN" "$REPOS
應該讓您更改路徑。
然后向jenkins發出請求,以根據您在svnlook
輸出中找到的路徑構建作業:
curl --user $JENKINS_USER:$JENKINS_API_TOKEN http://jenkins/job/build-name/build
OP中的注釋:這是我在提交后的鈎子中實現它的方式:
REPOS="$1"
REV="$2"
svnlook changed --revision $REV $REPOS |
#logic to filter the trigger file and to create the job name from it |
while read -r JOBNAME ; do
/usr/bin/wget \
--output-document "-" \
--timeout=30 \
--tries=1 \
http://JENKINS_SERVER/job/$JOBNAME/build
done
效果很好!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.