通过GitHub Actions部署GCP Cloud Function失败,请求解决
问题根源
你的requirements.txt文件被错误写入了Poetry创建虚拟环境的日志行(即Creating virtualenv xxxxxx-nJ6OriN1-py3.8 in /github/home/.cache/pypoetry/virtualenvs),这行不属于合法的Python依赖包声明格式,导致Cloud Build解析依赖时失败。
解决步骤
检查并修正依赖导出命令
你在GitHub Actions工作流中应该是用Poetry导出依赖到requirements.txt,确保使用纯导出命令,避免将Poetry的运行日志混入文件。正确的poetry export命令示例:poetry export --format requirements.txt --output requirements.txt --without-hashes不要将
poetry install的输出重定向到requirements.txt,该命令的日志会包含虚拟环境创建信息,这是导致问题的核心原因。清理仓库中的错误文件
手动删除仓库内requirements.txt第一行的无效日志内容,确保文件仅包含合法的依赖声明(如requests==2.31.0这类格式),提交该修改到仓库。调整GitHub Actions工作流配置
确保工作流中生成requirements.txt的步骤仅执行poetry export,示例配置片段:- name: 安装Poetry run: pip install poetry - name: 导出依赖到requirements.txt run: poetry export --format requirements.txt --output requirements.txt --without-hashes部署Cloud Function前,可添加步骤校验
requirements.txt内容,比如:grep -v "Creating virtualenv" requirements.txt > temp.txt && mv temp.txt requirements.txt本地验证流程
在本地执行poetry export命令,检查生成的requirements.txt是否仅包含依赖列表,确认无误后再触发GitHub Actions工作流。
内容的提问来源于stack exchange,提问作者marian.vladoi

