【问题标题】:Any plugin for Github to enforce jira issue key in commitsGithub 的任何插件,用于在提交中强制执行 jira 问题密钥
【发布时间】:2019-11-12 18:02:16
【问题描述】:

我知道 Bitbucket 中很少有像 YACC 等插件可以直接安装在 Bitbucket 中,并且可用于存储库以启用 jira 预接收提交挂钩。 Github有没有类似的东西。 我所看到的只是在 Github 中启用某种钩子的最佳和最可行的解决方案,该钩子强制任何提交都需要具有有效的 jira 问题密钥。如果有任何对分支创建也有同样作用但目前对我来说并不重要的东西,那就更好了。

请提供有关如何在 Github 企业中启用相同功能的步骤。

【问题讨论】:

  • 可能没有直接回答你的具体需求,但是this quite similar question最近已经发帖了。以防它可能有用。
  • 谢谢!我首先在本地尝试了这个,方法是创建一个包含此脚本的 commit-msg.sh 文件并将其保存在 git repo 文件夹/.git/hooks 下。但是提交在本地工作,因为他们过去没有验证任何 jira 正则表达式。有没有办法我可以强制执行? ——
  • 这确实是一个本地解决方案,就我而言,唯一的“强制执行”是我们团队内部的沟通和组织。附带说明一下,.sh 扩展名不应带有挂钩,只需 commit-msg
  • 感谢您回来。即使没有那个 .sh 扩展名,我也尝试过,但它不起作用。请帮助有关如何对本地系统中的任何提交强制执行挂钩的正确步骤。
  • 嗯,奇怪,写完这个文件后,我不记得有什么额外的步骤了。您是否仔细检查了 1) 路径? (.git/hooks) 2) 文件名? (commit-msg) 3) 内容?很抱歉问,但这些常见错误是如此频繁,并且发生在每个人身上......除此之外,我还无法弄清楚问题可能是什么。

标签: git github jira githooks


【解决方案1】:

此功能可使用服务器端 git-hooks 的集中式解决方案(如 Datree.io)来使用。 它具有以下内置策略:

  1. 检测并阻止merging of secrets
  2. 强制执行Jira ticket integration - 在拉取请求名称/提交消息/分支名称中提及票号
  3. Link commit message to a Jira ticket
  4. Link pull request title to a Jira ticket

免责声明:我是 Datrees 的创始人之一

【讨论】:

    【解决方案2】:

    这在 Github 上是不可能的。

    只有 Github Enterprise 支持 pre-receive 钩子,甚至还有一个在提交消息中执行 JIRA 问题执行的示例 - https://github.com/github/platform-samples/blob/master/pre-receive-hooks/require-jira-issue.sh

    或者,您可以让您的团队成员设置本地 pre-pushpre-commit 挂钩来执行。

    【讨论】:

    • 谢谢!我首先在本地尝试了这个,方法是创建一个包含此脚本的 commit-msg.sh 文件并将其保存在 git repo 文件夹/.git/hooks 下。但是提交在本地工作,因为他们过去没有验证任何 jira 正则表达式。有什么办法可以强制执行吗?
    • @Ashley 确保您的 pre-commit 文件是可执行的。
    • 我明白了,commit-msg 在 .git/hook 下,gist.github.com/veewee/939539fef7953bd11cdb。这可以以某种方式全局配置,以便每个人的 .git 文件夹都可以使用它吗?
    【解决方案3】:

    如果您设置了 CI 以对分支进行检查,那么我已经完成了一个分支管道,如下所示:

           - npm ci
           - npm run lint
           - npm test
           # == Check that all commits since the base branch (dev) contain ACME- for ticket reference ==
           # Fetch the merge base for our project
           - git fetch origin dev:dev
           - >
             echo "-- Checking ACME- prefix on commits --"
             && [[ `git log --oneline dev.. | grep -v 'ACME-' | wc -l` -eq 0 ]]
             && echo "Passed"
             || (echo "Failed for the following commits:"
             && git log --oneline dev.. | grep -v 'ACME-'
             && [[ 0 -eq 1 ]])
    

    自然可以避免|| && 体操,如果你把它拉到一个 shell 脚本文件中。

    【讨论】:

      【解决方案4】:

      如果您的意思是 GitHub Enterprise,您可以使用 similar tools you already mentioned on the Jira side 根据 Jira 信息验证提交详细信息。

      在托管 GitHub 版本的情况下,您可以选择本地挂钩,正如已经提到的那样。 (顺便说一句,最有效的是同时使用服务器端和本地钩子)如果不确定如何构建和安装本地钩子脚本this tool has a "wizard",它将指导您完成一些步骤并在最后吐出脚本。

      【讨论】:

        猜你喜欢
        • 2018-06-18
        • 1970-01-01
        • 2012-04-05
        • 1970-01-01
        • 2015-10-22
        • 1970-01-01
        • 2016-08-22
        • 2014-10-28
        • 1970-01-01
        相关资源
        最近更新 更多