devspace执行api-test命令提示unknown flag: --omit错误 如何调整命令写法
问题根因
- 当前命令写法未明确分隔
devspace自身参数和容器内执行命令,--omit参数被devspace误识别为自身flag,才会抛出「未知flag」错误 - 命令中的
&&符号会被本地shell直接解析,导致coverage report甚至整条命令的后半段会被放到本地执行,而非传入容器 - 你之前执行的
devspace enter --image-selector ${APP-NAME}/${API-DEV} ./manage.py show migrations可以正常运行,是因为命令中没有和devspace冲突的flag参数,也没有&&这类会被本地shell提前解析的特殊符号,所以可以被正常传入容器。
解决方案
调整命令写法,通过--分隔devspace参数和容器命令,同时用bash -c包裹整条需要串行执行的测试命令,修改后的完整配置如下:
- name: api-test description: Runs API tests in container command: | devspace enter --image-selector ${APP-NAME}/${API-DEV} -- bash -c "coverage run --omit='src/manage.py,src/config/*,*/.venv/*,*/*__init__.py,*/tests.py,*/admin.py' src/manage.py test src && coverage report"
修改说明
- 新增的
--是多数CLI工具的通用参数分隔符,明确告诉devspace后续的所有内容都属于要在容器内执行的目标命令,不会被devspace解析为自身参数,直接解决--omit被误识别的问题 - 用
bash -c "..."把整条coverage相关的命令包裹为单个字符串参数,保证&&连接的两条命令都会在容器内部的shell环境执行,不会被本地shell截断处理。如果命令内部需要用到双引号,转义内部双引号即可。
内容的提问来源于stack exchange,提问作者strumpy_strudel
相关产品推荐
相关产品推荐

