当Openshift从git存储库构建时,克隆/导出源的方式是克隆不是git repo,即没有.git目录。任何人都知道如何将此行为更改为真正的克隆?
相关文档中没有任何内容(https://docs.openshift.com/container-platform/3.5/dev_guide/builds/build_inputs.html#source-code),但文档并非总是如此。
我们的用例是我们的项目使用gradle插件,它将有关git状态的信息添加到构建工件中。这不会在Openshift中构建。
答案 0 :(得分:2)
编写S2I构建器时,默认情况下,源代码将注入目录/tmp/src
。您的自定义assemble
脚本,如果需要保留正在注入的文件的文件,则会将文件移动或复制到最终位置,例如/opt/app-root/src
。通常这是在任何编译阶段之前完成的。然后,构建将在目标目录中运行。
移动或复制文件并使用glob通配符时,您需要确保以“。”开头的隐藏文件。被包含在内。例如:
shopt -s dotglob
echo "---> Installing application source ..."
mv /tmp/src/* ./
如果您没有shopt -s dotglob
,则不会包含.git
等目录。如果后续构建期望.git
目录存在,则会出现问题。
如果您使用其他人的S2I构建器并且.git
目录被遗忘,您可以在应用程序代码目录中包含可执行.s2i/bin/assemble
脚本并添加到其中。
#!/bin/bash
mv /tmp/src/.git ./
/usr/libexec/s2i/assemble
这假定原始assemble
脚本位于/usr/libexec/s2i/
的典型位置。
答案 1 :(得分:0)
冒着违背权威性答案的风险(从字面上看),我发现我不需要自定义汇编脚本。实际上,<div id="rocket">
🚀
</div>
中根本没有console.log()
目录。可能是因为我在复制诸如以下内容时情况有所不同:
.git
在这种情况下,有一个正则表达式排除了/tmp/src
目录的复制(通过https://github.com/openshift/source-to-image/issues/457处的问题找到)。因此,就我而言,我不需要通过设置exclude regexp来排除该s2i build file://$(pwd) --copy --keep-symlinks ${S2I_IMAGE} ${IMAGE_TO_BUILD}
目录:
.git
有了这个,就不需要更改汇编脚本了,.git
目录被复制到了汇编上下文中完全没有问题。