如何在GitLab Runner中向Python InteractiveConsole输入命令
解决GitLab Runner中执行Flask Shell命令的问题
你之前的配置里,flask shell启动交互式控制台后,GitLab Runner会把后续的Python代码当成独立的Shell命令执行,而非输入到交互式环境中,所以控制台直接退出,后续命令也无法生效。以下是两种可行的解决方法:
方法一:使用flask shell -c直接执行代码
Flask Shell支持-c参数直接传入要执行的Python代码,无需进入交互式环境,最适合CI这种非交互式场景。修改你的before_script段,将最后三行替换为:
flask shell -c "from app import db; db.create_all()"
修改后的完整配置如下:
py_test: image: python:3.8.0-slim stage: test before_script: - pip install pytest-html - pip install -r requirements.txt - export FLASK_APP=app - flask shell -c "from app import db; db.create_all()" script: - mkdir pytest_reports - pytest --html=pytest_reports/pytest_report.html artifacts: when: always paths: - pytest_reports/
方法二:通过管道传递命令到交互式Shell
如果需要模拟交互式输入的场景,可以用echo将命令通过管道传给flask shell:
echo -e "from app import db\ndb.create_all()" | flask shell
把这段替换原配置中flask shell及后续两行即可。这种方式会启动交互式Shell并自动输入执行命令,执行完成后自动退出。
两种方法都能完成数据库初始化的操作,推荐优先使用方法一,因为更简洁且适配CI的非交互式运行环境。
内容的提问来源于stack exchange,提问作者placebo_me_please
相关产品推荐
相关产品推荐

