2015-11-23 96 views
1

我從bitnami-jenkins映像創建了一個新的計算引擎實例,以自動部署我的應用程序引擎應用程序。我用下面的命令這樣做:Jenkins推送應用程序引擎部署失敗

gcloud compute instances create deployer 
--project myapp --image-project bitnami-launchpad 
--image bitnami-jenkins-1-638-1-linux-debian-7-x86-64 
--zone us-central1-a --machine-type g1-small 
--metadata "bitnami-base-password=mypassword,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 "jenkins" 

一旦機器被創造了,我創建了一個工作部署代碼如下所述:

https://cloud.google.com/tools/cloud-repositories/docs/push-to-deploy

然而,我的工作失敗,出現以下錯誤:

ERROR: Error Response: [403] Request had insufficient authentication scopes. 
ERROR: (gcloud.preview.app.deploy) Could not retrieve the default Google Cloud Storage bucket for [myapp]. Please try again or use the [bucket] argument. 

有沒有其他人遇到過這個?我有另一臺jenkins機器,上面有一個老版本的gcloud。它從不拋出與雲存儲桶相關的任何錯誤。所以我有一個預感,它與gcloud的新版​​本有關。

請幫忙。謝謝。

編輯:這是gcloud命令的輸出與--verbosity debuggcloud output

回答

4

當我試圖重現這種使用最新版本的SDK雲的(0.9.88),我收到以下錯誤信息:

ERROR: (gcloud.preview.app.deploy) Required scopes ['https://www.googleapis.com/auth/cloud-platform'] missing from ['https://www.googleapis.com/auth/appengine.admin', 'https://www.googleapis.com/auth/devstorage.full_control', 'https://www.googleapis.com/auth/projecthosting', 'https://www.googleapis.com/auth/userinfo.email']. This VM instance probably needs to be recreated with the missing scopes. 

解決方法是重新創建的VM,如前,但範圍https://www.googleapis.com/auth/cloud-platform添加到--scopes標誌中提供的列表中。

我會確保文檔得到修復以反映這一點。 編輯:文檔現在已修復。

+0

將其添加到作用域列表後工作。非常感謝。 :) – mynk

1

這個答案是誤導性的;它誤認了真正的問題。我將它留在這裏作爲後代。


這看起來像在谷歌Compute Engine的服務帳戶和谷歌雲存儲桶之間相互作用的打嗝。

要變通,請create a Cloud Storage bucket Jenkins VM上的service account可以讀取/寫入或更改Cloud Storage存儲桶staging.<appname>.appspot.com上的權限。如果您不熟悉gsutil(執行此操作的命令行工具),則最簡單的方法是Google Developer's Console


So I have a hunch that it is related to newer versions of gcloud.

是的,它是。 gcloud的新版本使用不同的部署機制(這會更快)。

+0

感謝Zachary的迴應,但我在jenkins中使用的服務帳戶(名爲myapp)已經擁有'擁有者'權限,可以訪問雲存儲桶'myapp.appspot.com'和'staging.myapp.appspot .COM」。 – mynk

+0

那麼,例如,下面的命令成功了嗎? 'touch foo &&& tmp/google-cloud-sdk/bin/gsutil cp foo gs:// zjntestbucket2/foo' –

+0

這很有效。我可以在'myapp.appspot.com'和'staging.myapp.appspot.com'上覆制'foo'。 'gsutil'唯一的區別在於'/ usr/local/bin',而不是'/ tmp/google-cloud-sdk/bin'。但我仍然看到'認證範圍不足'的錯誤。 – mynk

相關問題