如何制作一个仅在对特定目录进行更改时才使用 Codeship 构建的脚本?

How can I make a script that will build w/ Codeship only when changes are made to a specific directory?

假设我有两个目录,libsrc,并且只希望 Codeship 构建来自 src 目录的已提交更改。我将如何着手制作一个 Bash 脚本来做到这一点?我知道将 --skip-ci 标志应用于提交将使 Codeship 不会创建该提交的构建。非常感谢任何帮助!

我不熟悉 Codeship,但如果您是 git 用户,您可以执行以下操作之一:

  • 使用 src/lib 作为 submodules 然后任何时候有人提交到任何这些文件夹执行提交
  • 使用 git 挂钩查明是否有人提交了这些目录,然后根据所需文件夹执行提交。

例如将此行添加到您的任何提交挂钩 if [ $(git diff --name-only HEAD^..HEAD path/ ) ] 并检查这是否正确。

您可以在测试步骤中直接使用如下命令:

if [[ $(git log -m -n 1 --name-only --pretty=format:"" | grep -e "lib" -e "src" -c) -gt 0 ]]; then run_your_tests; fi

这将显示上次提交的更改文件,没有任何其他元数据,并计算这些行中 libsrc 的出现次数。

如果这些字符串出现不止一次,它将 运行 run_your_tests 命令。否则它只会 return.

请注意,这是一个非常粗糙的版本,例如,它不是在寻找文件名开头的字符串。但它应该是一个很好的起点。

如果您有任何其他问题,请通过 support@codeship.com(或我们的应用内信使)与我们联系! (如果我们通过应用内支持添加内容,我会更新答案。

[免责声明] 我在为 Codeship 工作 ;)