【问题标题】:How to specify git smudge filtering for Jenkins Pipeline?如何为 Jenkins Pipeline 指定 git 污点过滤?
【发布时间】:2021-02-08 09:16:50
【问题描述】:

在我的 git 存储库中,我使用带有 $Id$ 内容的文件,这些文件会自动被弄脏/清理。 为此,我将.gitattributes 配置为激活ident 过滤器,如https://git-scm.com/book/en/v2/Customizing-Git-Git-AttributesKeyword Expansion 章节中所述。到目前为止,我会对提交数感到满意。

记录的行为在我的 Windows 机器上和在 cygwin 中运行,在我手动签出/提交时在 Ubuntu 20 机器上运行。我还有一个 Jenkins 管道可以处理这些文件 - 但 Jenkins 似乎只看到“未弄脏”的文件 - 所有文件都包含 $Id$

如何让 Jenkins 管道运行 git 以便应用涂抹过滤器?

【问题讨论】:

  • 我在哪里/如何使用它?当我的管道启动时,工作区已经签出...?
  • Skip automatic checkout,配置,手动结帐?或者可能是自动结账、配置、重新结账?
  • 谢谢。我花了一段时间才得到肯定的确认,但你的建议有效。 :-)
  • 我的建议是为未来的读者提供一个示例管道来回答您自己的问题。

标签: git jenkins-pipeline


【解决方案1】:

所以要解决上面的难题:

  • 首先,我检查了将运行我的 Jenkins 管道/maven 构建的 docker 容器提供的脚本语言,并决定使用 Python 2.7。
  • 使用该语言,我编写了一个涂抹/清洁过滤器,它本质上扩展和减少了 $Id$ 标记,类似于 SVN 过去的做法。
  • 我通过 .gitattributes 文件中的条目声明 git 使用“某些”过滤
  • 我配置了 git,以便“某些”过滤实际上分别以涂抹或清洁模式调用我的脚本。此配置需要进入 .git/config 或通过 git 命令引发,并在 Jenkinsfile 中执行,然后再次检出文件。

这样 git 会检查文件并在必要时运行污点过滤器。另一个优点是这种方式污迹过滤器的配置只发生在 docker 容器/linux 环境中。这意味着我和我在 Windows 环境中工作且通常没有安装 python 的同事根本不必关心过滤 - 它既不会在那里配置也不会被调用。

归功于@phd。如果没有他的提示,我将无法破解这个坚果。

【讨论】:

    猜你喜欢
    • 2010-12-01
    • 2017-11-23
    • 2017-01-30
    • 2018-05-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-06
    • 1970-01-01
    • 2016-11-22
    相关资源
    最近更新 更多