【问题标题】:Google App Engine, Google Cloud Console, Jenkins trigger builds remotely, gcloud command not foundGoogle App Engine、Google Cloud Console、Jenkins 触发器远程构建,未找到 gcloud 命令
【发布时间】:2016-01-14 20:38:44
【问题描述】:

我正在尝试使用 URL 远程部署我的 GAE 应用程序,这部分运行良好。 Jenkins 正确检查了最新版本,但在尝试使用 Google Cloud Help 中指定的命令进行构建时:

gcloud --project=<project-id> preview app deploy -q app.yaml

我收到以下错误消息:

[workspace] $ /bin/sh -xe /opt/bitnami/apache-tomcat/temp/hudson7352698921882428590.sh
+ gcloud --project=XYZXYZXYZ preview app deploy -q app.yaml
/opt/bitnami/apache-tomcat/temp/hudson7352698921882428590.sh: 2:
/opt/bitnami/apache-tomcat/temp/hudson7352698921882428590.sh: gcloud: not found
Build step 'Execute shell' marked build as failure

我已将项目 ID 更改为我的,但我无法弄清楚为什么它缺少 gcloud 命令..

编辑

我跑了

/usr/local/bin/gcloud --project=<project-id> preview app deploy -q app.yaml

现在我得到了这个错误:

Traceback (most recent call last):
File "/usr/local/bin/../share/google/google-cloud-sdk/./lib/googlecloudsdk/gcloud/gcloud.py", line 199, in <module>
_cli = CreateCLI()
File "/usr/local/bin/../share/google/google-cloud-sdk/./lib/googlecloudsdk/gcloud/gcloud.py", line 197, in CreateCLI
return loader.Generate()
File "/usr/local/bin/../share/google/google-cloud-sdk/./lib/googlecloudsdk/calliope/cli.py", line 384, in Generate
cli = self.__MakeCLI(top_group)
File "/usr/local/bin/../share/google/google-cloud-sdk/./lib/googlecloudsdk/calliope/cli.py", line 546, in __MakeCLI
log.AddFileLogging(self.__logs_dir)
File "/usr/local/bin/../share/google/google-cloud-sdk/./lib/googlecloudsdk/core/log.py", line 546, in AddFileLogging
_log_manager.AddLogsDir(logs_dir=logs_dir)
File "/usr/local/bin/../share/google/google-cloud-sdk/./lib/googlecloudsdk/core/log.py", line 330, in AddLogsDir
log_file = self._SetupLogsDir(logs_dir)
File "/usr/local/bin/../share/google/google-cloud-sdk/./lib/googlecloudsdk/core/log.py", line 407, in _SetupLogsDir
os.makedirs(day_dir_path)
File "/usr/lib/python2.7/os.py", line 150, in makedirs
makedirs(head, mode)
File "/usr/lib/python2.7/os.py", line 150, in makedirs
makedirs(head, mode)
File "/usr/lib/python2.7/os.py", line 150, in makedirs
makedirs(head, mode)
File "/usr/lib/python2.7/os.py", line 157, in makedirs
mkdir(name, mode)
OSError: [Errno 13] Permission denied: '/.config'
Build step 'Execute shell' marked build as failure

最终编辑

对于后来来到这里的任何人,我并没有完全解决这个问题,但至少我通过谷歌在指南Push-to-Deploy with Jenkins 中编写的命令创建了一个全新的 VM 设法解决了这个错误:

$ PASSWORD=<password>                # 12 or more chars, with letters and numbers
$ PROJECT_ID=<project-id>
$ BITNAMI_IMAGE=<bitnami-image>      # e.g. bitnami-jenkins-1-606-0-linux-debian-7-x86-64


$ gcloud compute \
    instances create bitnami-jenkins \
    --project ${PROJECT_ID} \
    --image-project bitnami-launchpad \
    --image ${BITNAMI_IMAGE} \
    --zone us-central1-a \
    --machine-type n1-standard-1 \
    --metadata "bitnami-base-password=${PASSWORD},bitnami-default-user=user,bitnami-key=jenkins,bitnami-name=Jenkins,bitnami-url=//bitnami.com/stack/jenkins,bitnami-description=Jenkins,startup-script-url=https://dl.google.com/dl/jenkins/p2dsetup/setup-script.sh" \
    --scopes "https://www.googleapis.com/auth/userinfo.email,https://www.googleapis.com/auth/devstorage.full_control,https://www.googleapis.com/auth/projecthosting,https://www.googleapis.com/auth/appengine.admin" \
    --tags "bitnami-launchpad"

至少有了这个新的虚拟机,我可以继续前进,现在我已经接近让它工作了,但我遇到了另一个错误,我现在已经创建了另一个问题: Gcloud preview app can't parse my yaml

【问题讨论】:

    标签: google-app-engine jenkins google-cloud-platform gcloud


    【解决方案1】:

    尝试使用完整路径指定 gcloud 可执行文件 - 它可能无法在 jenkins 的 shell PATH 环境中访问。

    【讨论】:

    • 这至少产生了另一个错误,我更新了原始帖子。我无法从 jenkins 运行 sudo 来修复 .config 权限。
    • 好的,至少原来的问题已经解决了 :) 新问题 -> 新问题。现在你进入了非 GAE 相关的、jenkins 特定的东西。这似乎是一个很好的起点:stackoverflow.com/questions/22814559/…。我只是在猜测,但这在创建.config 目录时看起来像是权限问题。抱歉 - 我还没有使用 jenkins。
    【解决方案2】:

    OSError: [Errno 13] Permission denied: '/.config' 表明 Jenkins 正在尝试将根目录用作配置目录,可能是因为 $HOME 目录配置异常。

    尝试将$CLOUDSDK_CONFIG 设置为指向 Jenkins 用户有权访问的目录:

    CLOUDSDK_CONFIG=/tmp /home/margorjon/google-cloud-sdk/bin/gcloud version
    

    【讨论】:

    • 我在我的 Execute Shell 中设置它并得到:IOError: [Errno 13] Permission denied: '/tmp/logs/2015.10.17/10.13.48.205831.log',仍然是权限错误...该死的。
    • 如果我在脚本中运行id,它会返回:uid=999(tomcat) gid=999(tomcat) groups=999(tomcat)
    • 将 SSH 用户更改为 tomcat 从以下开始:sh: 7: /etc/profile.d/bitnami.sh: source: not found
    • /tmp 只是一个建议;您可以使用tomcat 用户具有写入权限的任何目录。
    • 是的,我一直在尝试,但我什至无法授予对 /home/tomcat 中某些内容的访问权限,它仍然显示为 Permission Denied,并且检查 fodler 的权限会引导你相信 tomcat 可以完全访问它们..
    【解决方案3】:

    正如 Dan Cornilescu 所说,路径环境变量设置不正确。运行:

    ln -s /var/jenkins_home/google-cloud-sdk/bin/gcloud /usr/local/bin/gcloud

    在您的工作节点中将 gcloud 符号链接到全局路径

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-11
      • 2018-07-23
      • 1970-01-01
      • 2020-03-07
      • 1970-01-01
      • 1970-01-01
      • 2022-08-16
      • 1970-01-01
      相关资源
      最近更新 更多