CI/CD 中预提交期间的 ansible-lint

问题描述 投票:0回答:1

本地运行

ansible-lint
pre-commit
的行为与 CI/CD 期间运行不同。

我使用以下

---
repos:
  - repo: https://github.com/ansible/ansible-lint
    rev: v24.2.1
    hooks:
      - id: ansible-lint

这是因为

/etc/ansible/ansible.cfg
在本地可用,它还可以配置例如安装私人收藏的收藏路径。

ansible-lint
运行期间,会拾取
requirements.yml
,以便安装依赖项。由于集合是私有的,我需要硬编码一个访问令牌,这对我来说似乎是错误的。我尝试使用

---
collections:
  - name: "git+https://<token name>:${token}@<private git repo"
    type: git
    version: "*"

并设置

export token=<token with access>
但这不起作用。

我还尝试使用

.ansible-lint
配置与

---
mock_modules:
  - <namespace>.<name>.<role>

mock_roles:
  - <namespace>.<name>.<role>

但如果有帮助就不会。

相关问题:

  • 如何使
    ansible-lint
    pre-commit
    在本地和 CI/CD 期间表现相同?
  • 如何忽略本地可用的配置?
  • 如何在
    requirements.yml
    中指定身份验证,例如通过环境变量?
git ansible cicd pre-commit.com ansible-lint
1个回答
0
投票

我花了一段时间才将其拼凑在一起(真的太长了),但我发现了 https://github.com/ansible/ansible-lint/issues/3865,他们指出了https://ansible。 readthedocs.io/projects/lint/configuring/#pre-commit-setup

特别是关于 additional_dependency

的部分

预提交是自动设置 ANSIBLE_COLLECTIONS_PATH,并且没有找到来自完整 ansible 安装的组件,因此我需要的模块不在它选择的搜索路径中。

现在我正在使用它,一切似乎又正常运行了:

挂钩:

  • id:ansible-lint 附加依赖项:
    • 安塞布尔

如果您使用扩展要求,您可能需要根据以下内容进行更深入的阅读:

如果您有其他 Ansible 集合依赖项(requirements.yml)

pre-commit.ci
将无法安装它们,因为它运行在 离线模式

© www.soinside.com 2019 - 2024. All rights reserved.