代码之家  ›  专栏  ›  技术社区  ›  Adrian

在Openshift构建期间使用真正的git repo?

  •  2
  • Adrian  · 技术社区  · 6 年前

    当Openshift从git存储库构建时,源代码的克隆/导出方式应确保克隆不是git repo,即没有。git目录。有人知道如何将这种行为改变为真正的克隆吗?

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

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

    2 回复  |  直到 6 年前
        1
  •  6
  •   Graham Dumpleton    6 年前

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

    移动或复制文件并使用全局通配符时,需要确保隐藏的文件以“.”开头包括。例如:

    shopt -s dotglob
    echo "---> Installing application source ..."
    mv /tmp/src/* ./
    

    如果你没有 shopt -s dotglob ,然后是一个目录,如 .git 将不包括在内。如果后续生成预期 .吉特 要存在的目录。

    如果您使用其他人的S2I生成器和 .吉特 目录被留下,您可以包含一个可执行文件 .s2i/bin/assemble 在应用程序代码目录中编写脚本并添加到其中。

    #!/bin/bash
    
    mv /tmp/src/.git ./
    
    /usr/libexec/s2i/assemble
    

    这假设是原始的 集合 脚本位于 /usr/libexec/s2i/

        2
  •  0
  •   pelson    3 年前

    冒着违背权威答案(字面意思)的风险,我发现我不需要自定义汇编脚本。事实上 .git 目录在中不可用 /tmp/src 完全这可能是因为我的情况不同,因为我正在复制,例如:

    s2i build file://$(pwd) --copy --keep-symlinks ${S2I_IMAGE} ${IMAGE_TO_BUILD}
    

    在这种情况下,有一个regexp排除 .吉特 目录被复制(通过以下位置的问题找到 https://github.com/openshift/source-to-image/issues/457 )因此,在我的情况下,我不需要排除 .吉特 通过设置exclude regexp:

    s2i build file://$(pwd) --exclude="" --copy --keep-symlinks ${S2I_IMAGE} ${IMAGE_TO_BUILD}
    

    这样,就不需要更改汇编脚本 .吉特 目录被复制到汇编上下文中没有任何问题。