本地运行
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
中指定身份验证,例如通过环境变量?我花了一段时间才将其拼凑在一起(真的太长了),但我发现了 https://github.com/ansible/ansible-lint/issues/3865,他们指出了https://ansible。 readthedocs.io/projects/lint/configuring/#pre-commit-setup
特别是关于 additional_dependency
的部分预提交是自动设置 ANSIBLE_COLLECTIONS_PATH,并且没有找到来自完整 ansible 安装的组件,因此我需要的模块不在它选择的搜索路径中。
现在我正在使用它,一切似乎又正常运行了:
挂钩:
如果您使用扩展要求,您可能需要根据以下内容进行更深入的阅读:
如果您有其他 Ansible 集合依赖项(requirements.yml)
将无法安装它们,因为它运行在 离线模式pre-commit.ci