【发布时间】:2021-07-31 02:43:48
【问题描述】:
更新
这是 travis 文件的一部分
before_install:
#openssl stuff regarding credentials.tar.gz
- if [ ! -d "${GAE_PYTHONPATH}" ]; then python scripts/fetch_gae_sdk.py $(dirname
"${GAE_PYTHONPATH}"); fi
- if [ ! -d $HOME/google-cloud-sdk/bin ]; then rm -rf $HOME/google-cloud-sdk; curl
https://sdk.cloud.google.com | bash; fi
- tar -xzf credentials.tar.gz
- "$HOME/google-cloud-sdk/bin/gcloud components update"
- "pip install -U cryptography"
- "$HOME/google-cloud-sdk/bin/gcloud auth activate-service-account --key-file travis-credentials.json" # ERROR HAPPENS HERE
#ERROR IS = Gcloud crashed (AttributeError): '_RSAPrivateKey' object has no attribute 'sign'
- "$HOME/google-cloud-sdk/bin/gcloud auth configure-docker"
这是我无法理解的。我假设如果它与 gcloud 的突然版本升级有关并且它与 crpyotgraphy 不兼容,那么很多应用程序都会失败,我的修复尝试会修复它。但这在我收到上述电子邮件之前一直有效,所以我认为在那封电子邮件之后有些事情搞砸了,但这只是一个疯狂的猜测。
所有 Travis 文件
language: python
python: 2.7
branches:
only:
- master
services:
- docker
cache:
directories:
- "$HOME/google-cloud-sdk/"
env:
- GAE_PYTHONPATH=${HOME}/.cache/google_appengine PATH=$PATH:${HOME}/google-cloud-sdk/bin
PYTHONPATH=${PYTHONPATH}:${GAE_PYTHONPATH} CLOUDSDK_CORE_DISABLE_PROMPTS=1
before_install:
#unrelated stuff
- if [ ! -d "${GAE_PYTHONPATH}" ]; then python scripts/fetch_gae_sdk.py $(dirname
"${GAE_PYTHONPATH}"); fi
- if [ ! -d $HOME/google-cloud-sdk/bin ]; then rm -rf $HOME/google-cloud-sdk; curl
https://sdk.cloud.google.com | bash; fi
- tar -xzf credentials.tar.gz
- "$HOME/google-cloud-sdk/bin/gcloud components update"
- "pip install -U cryptography"
- "$HOME/google-cloud-sdk/bin/gcloud auth activate-service-account --key-file travis-credentials.json"
- "$HOME/google-cloud-sdk/bin/gcloud auth configure-docker"
install:
#push image to gcr
script:
- echo "done"
question 这里提出了同样的问题,但更新加密模块并没有解决问题(我尝试了 3 个不同的版本,从最新版本到答案中列出的版本 -> 2.6.1)。 3 天前,我收到了一封来自 google 的电子邮件,内容如下。
您好 Cloud Shell 用户,
距您从 Google 打开 Cloud Shell 已有 120 多天 云平台控制台。 7 天后,您的 Cloud Shell 主目录 将自动安排删除。
要保留您的 Cloud Shell 主目录及其数据,只需登录并 打开 Cloud Shell。
我打开 shell 以使其保持激活状态,但是当我尝试使用 travis 部署我的 django 应用程序时,当我尝试执行 gcloud 命令时出现以下错误。
$HOME/google-cloud-sdk/bin/gcloud auth activate-service-account --key-file travis-credentials.json
ERROR: gcloud crashed (AttributeError): '_RSAPrivateKey' object has no attribute 'sign'
我尝试了 2.6.1、2.8(我以前的版本)、3.4.1(最新版本),但它们都不起作用。关于如何解决这个问题的任何想法?我的最后一次构建是一个月前,它成功运行,没有更改任何配置
【问题讨论】:
-
Google Cloud SDK (
gcloud) 包含自己的 Python 版本。安装 SDK 时,您启用和禁用了哪些选项?问题是您安装的密码学已过时。pip install -U cryptography。或者 SDK 是旧版本。 -
我在 Cloud Shell 中更新了密码学并手动运行 gcloud 组件更新。这给出了一个错误并给了我一长串库来手动安装 sudo apt get (他们声称这是等效的操作)我还将我的 django 项目中的加密版本更新为 3.3.2,但它没有工作。由于版本过时,我真的很难低于那些工作了很长时间的东西现在被破坏了(特别是时间很可疑,因为我在这封电子邮件之前从未收到过这个错误。)我是否遗漏了什么/你是不是通过更新 sdk 来表达别的意思?
-
我错过了您在使用 Cloud Shell 时遇到的问题。重置 Cloud Shell。你在安装任何与 Python 相关的东西吗?不要安装任何会覆盖系统环境的东西,因为这些更改将会丢失。而是使用 virtualenv 并将 Python 的安装和更新保存到您的 HOME 目录本地。
-
我想我无法解释这一点。我的问题通常发生在 Travis 尝试通过构建我的 django 应用程序来创建 docker 映像时。但是当它执行我在我的问题中陈述的命令时,我得到了这个错误。这是我第一次尝试从 cloud shell 做一些事情来尝试修复它。通常我总是在 Google Compute Engine 中使用普通的虚拟机。(或使用 travis 的 gcloud)。我正在更新导致问题失败的 travis 命令,这可能会有所帮助
-
更新 travis 命令有帮助吗?另外,我假设你是想回复@JohnHanley,所以我会在这里标记他们。
标签: google-cloud-platform cryptography travis-ci gcloud google-cloud-shell