首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Git预提交挂钩

Git预提交挂钩
EN

Stack Overflow用户
提问于 2020-01-30 15:29:45
回答 1查看 2.9K关注 0票数 2

我需要在Docker映像中设置一系列Gitlab钩子,这将在预提交时触发。我有一个Docker文件和一个预提交-config.yaml,它成功构建,除了一个钩子,我似乎无法工作。

.预提交-config.yaml

代码语言:javascript
复制
---
repos:
  - repo: local
    hooks:
      - id: check-merge-conflict
        name: Check for merge conflicts
        description: Check for files that contain merge conflict strings.
        entry: check-merge-conflict
        language: python
        types: [text]

      - id: epp-validate
        additional_dependencies: ['puppet']
        description: Validate syntax of Puppet EPP templates
        entry: /puppet-pre-commit-hooks/epp-validate
        files: \.epp$
        language: ruby
        name: Validate EPP templates

      - id: erb-validate
        description: Validate syntax of Ruby ERB templates
        entry: /puppet-pre-commit-hooks/erb-validate
        files: \.erb$
        language: ruby
        name: Validate ERB templates

      - id: puppet-lint
        additional_dependencies: ['puppet-lint']
        description: Check Puppet manifests for stylistic problems
        entry: /puppet-pre-commit-hooks/puppet-lint
        files: \.pp$
        language: ruby
        name: puppet-lint
        args:
          - --fail-on-warnings

      - id: puppet-validate
        additional_dependencies: ['puppet']
        description: Validate syntax of Puppet manifests
        entry: /puppet-pre-commit-hooks/puppet-validate
        files: \.pp$
        language: ruby
        name: Validate Puppet manifests

      - id: r10k-validate
        additional_dependencies: ['r10k']
        description: Validate syntax of Puppetfile using r10k
        entry: /puppet-pre-commit-hooks/r10k-validate
        files: ^Puppetfile$
        language: ruby
        name: Validate r10k Puppetfile

      - id: ruby-validate
        additional_dependencies: ['ruby']
        description: Validate syntax of ruby code
        entry: /puppet-pre-commit-hooks/ruby-validate
        files: \.rb$
        language: ruby
        name: Validate ruby syntax

我不得不将钩子设置为本地的钩子,因为它所使用的环境有一个气隙,这阻碍了互联网的接入。为了克服这个问题,我克隆了一些具有适当钩子的repos。

这是成功构建的,除了检查-合并冲突钩子,它找不到。在docker容器中,此钩子的python代码位于/pre-commit-hooks/pre_commit_hooks/check_merge_commit.py.中。

我尝试过将条目: value修改为'''/pre-commit-hooks/pre_commit_hooks/check_merge_commit预提交_钩子/检查-合并-提交检查_合并_提交‘’。

...but所有这些都不起作用。

码头文件

代码语言:javascript
复制
FROM ruby:2.5.0

SHELL ["/bin/bash", "-o", "pipefail", "-c"]
RUN source ~/.profile
RUN curl https://pre-commit.com/install-local.py | python -
COPY pre-commit/.pre-commit-config.yaml .
RUN git clone https://github.com/pre-commit/pre-commit-hooks.git
RUN git clone https://github.com/chriskuehl/puppet-pre-commit-hooks.git
RUN git clone https://github.com/adrienverge/yamllint.git
WORKDIR /jumanjihouse
RUN git clone https://github.com/jumanjihouse/pre-commit-hooks.git
RUN rm -rf /jumanjihouse/pre-commit-hooks/.git* /yamllint/.git* /puppet-pre-commit-hooks/.git* /pre-commit-hooks/.git* /usr/local/lib/ruby/gems/2.5.0/gems/*/.git*
WORKDIR /
RUN git init
RUN /root/bin/pre-commit run -a

有人知道我错过了什么/做错了什么吗?

钩子来自Github

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-30 20:35:48

您不应该需要手动复制每个存储库,并以您正在做的方式使用本地钩子--如果您在构建时具有克隆访问权限,那么您应该能够执行正常的安装方法。

要确保所有钩子都已预先安装,您需要将pre-commit install-hooks作为dockerfile中的命令之一运行。

这将确保所有钩子可执行文件都正确地缓存在映像中,然后在运行pre-commit run ...时可用。

免责声明:我是pre-commit的作者

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59989364

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档