【问题标题】:Travis -Gcloud crashed (AttributeError): '_RSAPrivateKey' object has no attribute 'sign'Travis -Gcloud 崩溃(AttributeError):'_RSAPrivateKey' 对象没有属性'sign'
【发布时间】: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


【解决方案1】:

显然,这个问题与我使用的 gcloud 版本有关。我总是获取最新版本(目前是 331.0.0)。虽然不可取,但将 gcloud SDK 降级到 330.0.0 解决了这个问题。

gcloud  components update --version 330.0.0

【讨论】:

    猜你喜欢
    • 2019-11-23
    • 2020-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-31
    • 1970-01-01
    相关资源
    最近更新 更多