在我设置的新 CentOS VM 上运行 github linter 工作流程时,出现以下错误:
Run ansible-lint --parseable ./ansible Traceback (most recent call last): File "/usr/local/bin/ansible-lint", line 8, in <module> sys.exit(_run_cli_entrypoint()) File "/usr/local/lib/python3.9/site-packages/ansiblelint/__main__.py", line 344, in _run_cli_entrypoint sys.exit(main(sys.argv)) File "/usr/local/lib/python3.9/site-packages/ansiblelint/__main__.py", line 197, in main initialize_options(argv[1:]) File "/usr/local/lib/python3.9/site-packages/ansiblelint/__main__.py", line 110, in initialize_options options.cache_dir = get_cache_dir(options.project_dir) File "/usr/local/lib/python3.9/site-packages/ansible_compat/prerun.py", line 13, in get_cache_dir basename = project_dir.resolve().name.encode(encoding="utf-8") AttributeError: 'str' object has no attribute 'resolve' Error: Process completed with exit code 1.
我尝试了以下软件包版本,但均因上述错误而失败:
使用 pip,还安装了以下依赖项:
是否存在一些 linter 依赖项或我缺少的其他内容?
linter 作业中的步骤是:
- name: 'Lint yaml - ansible, GH actions and GH workflows' run: yamllint -f parsable ./ if: always()
根据错误日志,似乎是在运行 ansible-lint 命令时出现了问题,其中涉及到了解析项目目录路径。根据错误消息的跟踪信息,出现问题的代码位于 ansible_compat/prerun.py 文件中。
ansible-lint
ansible_compat/prerun.py
问题可能出在 Python 版本不兼容性或依赖项问题上。在您的情况下,您可以尝试以下解决方案:
确认 Python 版本:请确保您在 CentOS VM 上使用的 Python 版本与您在本地环境中使用的版本相同。可以通过在终端中运行 python --version 命令来检查 Python 版本。如果版本不匹配,尝试安装或切换到正确的 Python 版本。
python --version
更新依赖项:尝试更新您的依赖项,特别是 ansible-lint 和相关的依赖项。您可以使用以下命令来更新这些依赖项:
pip install --upgrade ansible-lint ansible-core ansible-compat
这将安装最新版本的这些包。然后重新运行您的 GitHub Linter 工作流程,看看问题是否得到解决。
如果上述解决方案仍然无法解决问题,您可能需要进一步调查和尝试不同的组合或版本。您还可以查看 ansible-lint 和相关依赖项的文档、问题跟踪器或社区支持论坛,以获取关于此错误的更多信息和解决方案。