2017-03-22 55 views
0

我們目前在Google容器引擎上託管我們的Ruby on Rails網站。我正在將我們的部署從第三方CI遷移到新的Google Container Builder。唯一阻礙我的是從私人Github回購站安裝我們的寶石。我已經創建了一個存儲在雲存儲中的SSH密鑰,我使用gsutil命令加載。我已經確保關鍵在那裏,並具有正確的文件權限(使用簡單的busybox ls構建步驟),但不知道如何讓Bundler/git稍後使用它。我嘗試了一些解決方案,使用這個answer的環境變量(例如GIT_SSH_COMMAND),但沒有成功。在Google容器製作工具中使用SSH密鑰

我通過添加SSH密鑰並使用ssh-add來處理我們當前的配置項,因此git稍後可以找到它。然而,基本的Google圖像似乎並沒有使用ssh-agent。

任何建議(或黑客:)來解決這個問題?

回答

1

在從Google團隊獲得一些幫助和反覆試驗後,我發現以下策略有效。

在我cloudbuild.yaml添加以下構建步驟:

- name: ruby:2.2 args: ['bash', './devops/cloud_bundle_install.sh']

./devops/cloud_bundle_install.sh如下:

eval `ssh-agent` mkdir -p /root/.ssh ssh-keyscan github.com >> ~/.ssh/known_hosts mv /workspace/<KEY_DOWNLOADED_VIA_GSUTIL> ~/.ssh/id_rsa chmod 600 ~/.ssh/id_rsa ssh-add /workspace/.ssh/id_rsa bundle package --all --all-platforms

+0

不錯,很高興你得到了這個工作! –

1

我會爲您提供兩種選擇。

1)由於您已將您的ssh密鑰存儲在雲存儲中,因此可以使用gsutil cloud-builder將其從您的構建上下文中拉出。自述文件提供了將文件從GCS複製到構建工作區的示例。

請注意,您可能必須將set up the Builder Service Account to have read access指定給包含憑據的GCS對象。

一旦您在工作區中獲得憑據,您應該可以按照自己的意願進行操作。

2)如果你connect your GitHub repository to a Cloud Source Repository,那麼你可以直接從那裏獲取源代碼,假設你的Builder服務帳戶可以訪問CSR。 (如果它在同一個項目中,默認情況下它將具有讀權限)。

完全披露:我是Container Builder後面的工程團隊的Google員工。