我正在寻找我们有一个目录的功能,其中包含一些文件。
每当有人对目录中的任何文件进行更改时,jenkins 都应该触发构建。
此功能是否有任何插件或方法。请指教。
提前致谢。
我正在寻找我们有一个目录的功能,其中包含一些文件。
每当有人对目录中的任何文件进行更改时,jenkins 都应该触发构建。
此功能是否有任何插件或方法。请指教。
提前致谢。
我自己没有尝试过,但是FSTrigger插件似乎可以满足您的要求:
FSTrigger 提供轮询机制来监视文件系统并在文件或一组文件发生更改时触发构建。
如果您可以使用脚本监视目录,则可以使用 HTTP GET 触发构建,例如使用wget
or curl
:
wget -O- $JENKINS_URL/job/JOBNAME/build
虽然有点相关..似乎这个问题是关于监控系统上的静态文件..但是有很多版本控制系统就是为了这个目的。
如果您使用跟踪文件本身的更改,我在另一篇文章中回答了这个问题:git
#!/bin/bash
set -e
job_name="whatever"
JOB_URL="http://myserver:8080/job/${job_name}/"
FILTER_PATH="path/to/folder/to/monitor"
python_func="import json, sys
obj = json.loads(sys.stdin.read())
ch_list = obj['changeSet']['items']
_list = [ j['affectedPaths'] for j in ch_list ]
for outer in _list:
for inner in outer:
print inner
"
_affected_files=`curl --silent ${JOB_URL}${BUILD_NUMBER}'/api/json' | python -c "$python_func"`
if [ -z "`echo \"$_affected_files\" | grep \"${FILTER_PATH}\"`" ]; then
echo "[INFO] no changes detected in ${FILTER_PATH}"
exit 0
else
echo "[INFO] changed files detected: "
for a_file in `echo "$_affected_files" | grep "${FILTER_PATH}"`; do
echo " $a_file"
done;
fi;
您可以将检查直接添加到作业的 exec shell 的顶部,exit 0
如果未检测到更改,它会这样做。因此,您始终可以轮询 repo 的顶层以进行签入以触发构建。并且仅在有问题的文件发生更改时才完成构建。