Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jenkins插件,用于在给定目录中任何文件发生更改时触发构建_Jenkins_Hudson_Jenkins Plugins_Hudson Plugins - Fatal编程技术网

jenkins插件,用于在给定目录中任何文件发生更改时触发构建

jenkins插件,用于在给定目录中任何文件发生更改时触发构建,jenkins,hudson,jenkins-plugins,hudson-plugins,Jenkins,Hudson,Jenkins Plugins,Hudson Plugins,我正在寻找的功能,我们有一个目录中的一些文件 每当有人对目录中的任何文件进行更改时,jenkins都应该触发一个构建 是否有任何插件或方法用于此功能。请告知 提前感谢。我自己还没有尝试过,但该插件似乎可以满足您的需求: FSTrigger提供轮询机制来监视文件系统和 如果文件或文件集已更改,则触发生成 如果可以使用脚本监视目录,则可以使用HTTP GET触发生成,例如使用wget或curl: wget -O- $JENKINS_URL/job/JOBNAME/build 我自己也没有尝试过,

我正在寻找的功能,我们有一个目录中的一些文件

每当有人对目录中的任何文件进行更改时,jenkins都应该触发一个构建

是否有任何插件或方法用于此功能。请告知


提前感谢。

我自己还没有尝试过,但该插件似乎可以满足您的需求:

FSTrigger提供轮询机制来监视文件系统和 如果文件或文件集已更改,则触发生成

如果可以使用脚本监视目录,则可以使用HTTP GET触发生成,例如使用
wget
curl

wget -O- $JENKINS_URL/job/JOBNAME/build 

我自己也没有尝试过,但该插件似乎可以满足您的需求:

FSTrigger提供轮询机制来监视文件系统和 如果文件或文件集已更改,则触发生成

如果可以使用脚本监视目录,则可以使用HTTP GET触发生成,例如使用
wget
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的顶部,如果未检测到任何更改,它将退出0。。因此,您始终可以轮询repo的顶层以获取签入以触发构建。并且只有在相关文件发生更改时才能完成生成。

尽管有点关联。。似乎这个问题是关于监视系统上的静态文件。。然而,有许多版本控制系统正是为了这个目的

如果您使用
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的顶部,如果未检测到任何更改,它将退出0。。因此,您始终可以轮询repo的顶层以获取签入以触发构建。并且仅当相关文件发生更改时才完成生成