jenkins - 如果自上次提交以来某个目录中的任何文件已被修改(不是 FS 触发器),让 Jenkins 执行构建步骤
问题描述
我将我的第一个 Jenkins 服务器设置为一个有趣的小项目,让我的生活更轻松
当提交到我的 bitbucket 存储库时,它会执行 Play Framework 应用程序的构建,并将成功启动应用程序
我想在流程中添加一个步骤,如果在上次提交中创建或更新了 $WORKSPACE/sql 目录中的任何 .sql 文件,该 sql 文件将针对我们的数据库执行。
从理论上讲,实际执行应该足够简单-执行一个shell命令。但是我不确定如何设置jenkins来执行检查“此目录中是否有任何新的或更改的sql文件”
任何帮助将非常感激
谢谢
蒂姆
解决方案
所以我可能还需要完善它,但我已经使用 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 然后在数据库上执行脚本
推荐阅读
- google-apps-script - Sheet-A 是否可以引用可能来自 2 个不同工作表 (B&C) 的总计,但显示当前正在使用的工作表(A 或 B)的总计?
- javascript - 获取 api 后,我在 ReactJS 中看到错误“TypeError: Cannot read property 'question' of undefined”
- xml - 无法执行 XPath 操作。不允许将多个项目的序列作为 concat() 的第一个参数
- assembly - 在汇编程序中使用堆栈
- python - NameError:未定义名称“类”,如何在 Django 中访问同名的类?
- javascript - 在 foreach 循环中的单行中显示/隐藏 div - KnockoutJS
- r - 使用 gdtools::font_family_exists 检测系统字体的问题
- javascript - 如何在嵌套对象的 Strapi 调用中添加 id 过滤器?
- vue.js - Vue店面:如何覆盖助手内部的功能?
- node.js - 由于类声明,EJS 无法呈现页面