gpt4 book ai didi

git - 在 Openshift 构建期间使用真正的 git 存储库?

转载 作者:行者123 更新时间:2023-12-02 00:35:27 25 4
gpt4 key购买 nike

当 Openshift 从 git 存储库构建时,源被克隆/导出,克隆不是 git 存储库,即没有 .git 目录。任何人都知道如何将此行为更改为真正的克隆?

相关文档 ( https://docs.openshift.com/container-platform/3.5/dev_guide/builds/build_inputs.html#source-code ) 中没有任何内容,但文档并不总是它们应有的样子。

我们的用例是我们的项目使用一个 gradle 插件,该插件将有关 git 状态的信息添加到构建工件中。这不会在 Openshift 中构建。

最佳答案

在编写 S2I 构建器时,默认情况下源代码将被注入(inject)到目录 /tmp/src 中。您的自定义 assemble 脚本,如果它需要将文件与正在注入(inject)的内容分开,会将文件移动或复制到它们的最终位置,例如 /opt/app-root/src。通常这是在任何编译阶段之前完成的(如果它发生的话)。然后构建将在目标目录中运行。

当移动或复制文件并使用 glob 通配符时,您需要确保 stash 文件以“.”开头。被包含在内。例如:

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/ 的典型位置。

关于git - 在 Openshift 构建期间使用真正的 git 存储库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49847803/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com