首页 > 解决方案 > 如果自上次提交以来某个目录中的任何文件已被修改(不是 FS 触发器),让 Jenkins 执行构建步骤

问题描述

我将我的第一个 Jenkins 服务器设置为一个有趣的小项目,让我的生活更轻松

当提交到我的 bitbucket 存储库时,它会执行 Play Framework 应用程序的构建,并将成功启动应用程序

我想在流程中添加一个步骤,如果在上次提交中创建或更新了 $WORKSPACE/sql 目录中的任何 .sql 文件,该 sql 文件将针对我们的数据库执行。

从理论上讲,实际执行应该足够简单-执行一个shell命令。但是我不确定如何设置jenkins来执行检查“此目录中是否有任何新的或更改的sql文件”

任何帮助将非常感激

谢谢

蒂姆

标签: jenkins

解决方案


所以我可能还需要完善它,但我已经使用 shell 命令解决了它

git diff-tree --no-commit-id --name-only -r HEAD | grep -i .sql | while read -r line; do
echo "processing $line"
/opt/mssql-tools/bin/sqlcmd -S <redacted> -U sa -P <redacted> -d <redacted> -i $WORKSPACE/$line
done

所以这样做是使用 git diff-tree 列出提交中所有更改的文件,然后 grep 过滤 sql 文件。然后我们循环并(在我的情况下作为它的 mssql 服务器)使用 sqlcmd 然后在数据库上执行脚本


推荐阅读