Git 预提交挂钩
Git Pre-commit hooks
我需要在 Docker 图像中设置一系列 Gitlab 挂钩,这些挂钩将在预提交时触发。我有一个 Docker 文件和一个 pre-commit-config.yaml 文件,它成功构建,除了一个我似乎无法工作的钩子。
.pre-commit-config.yaml
---
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
我必须将挂钩设置为本地挂钩,因为使用它的环境有气隙,无法访问互联网。为了克服这个问题,我克隆了一些具有适当挂钩的回购协议。
除未能找到检查合并冲突挂钩外,此构建成功。在 docker 容器中,此钩子的 python 代码位于 /pre-commit-hooks/pre_commit_hooks/check_merge_commit.py.
我试过将条目:值修改为
'''/pre-commit-hooks/pre_commit_hooks/check_merge_commit
pre_commit_hooks/check-merge-commit
check_merge_commit'''
...但是其中 none 有效。
Docker 文件
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
有谁知道我missing/doing错了什么?
钩子来自Github
您不需要手动克隆每个存储库并以您正在做的方式使用本地挂钩——如果您在构建期间具有克隆访问权限,您应该能够执行正常的安装方法
为确保所有挂钩都已预先安装,您需要 运行 pre-commit install-hooks
作为 dockerfile
中的命令之一
这将确保所有挂钩可执行文件都正确缓存在您的图像中,然后在您稍后 运行 pre-commit run ...
时可用
免责声明:我是 pre-commit
的作者
我需要在 Docker 图像中设置一系列 Gitlab 挂钩,这些挂钩将在预提交时触发。我有一个 Docker 文件和一个 pre-commit-config.yaml 文件,它成功构建,除了一个我似乎无法工作的钩子。
.pre-commit-config.yaml
---
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
我必须将挂钩设置为本地挂钩,因为使用它的环境有气隙,无法访问互联网。为了克服这个问题,我克隆了一些具有适当挂钩的回购协议。
除未能找到检查合并冲突挂钩外,此构建成功。在 docker 容器中,此钩子的 python 代码位于 /pre-commit-hooks/pre_commit_hooks/check_merge_commit.py.
我试过将条目:值修改为 '''/pre-commit-hooks/pre_commit_hooks/check_merge_commit pre_commit_hooks/check-merge-commit check_merge_commit'''
...但是其中 none 有效。
Docker 文件
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
有谁知道我missing/doing错了什么?
钩子来自Github
您不需要手动克隆每个存储库并以您正在做的方式使用本地挂钩——如果您在构建期间具有克隆访问权限,您应该能够执行正常的安装方法
为确保所有挂钩都已预先安装,您需要 运行 pre-commit install-hooks
作为 dockerfile
这将确保所有挂钩可执行文件都正确缓存在您的图像中,然后在您稍后 运行 pre-commit run ...
免责声明:我是 pre-commit