使用自動部署(即 CircleCI)透過 SSH 連接到 Google Compute Engine

使用自動部署(即 CircleCI)透過 SSH 連接到 Google Compute Engine

我正在嘗試使用 CircleCI 透過 SSH 連接到我的 Compute Engine 實例,其命令在 config.yml 中如下所示:

gcloud --quiet compute ssh [INSTANCE_NAME] --zone northamerica-northeast1-a --project [PROJECT_NAME] cd /var/www/dev

我可以成功進行身份驗證並在 CircleCI 日誌中看到命令提示字元。但是,SSH之後的命令並沒有被執行。我在這裡做錯了什麼?

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Wed Sep 12 15:53:55 2018 from 18.212.180.159

[USER_NAME]:~$

我希望在身份驗證成功後運行 cd 命令。

答案1

使用 SSH,似乎您無法僅透過傳遞命令來更改目錄,這是 SSH 的限制伺服器故障後。通常,您可以透過使用 flag 來使用 SSH 運行可執行文件-c,類似地使用--command與 gcloud 類似這個例子

gcloud compute ssh --zone=us-east1-c test --command="nohup ping -i 5 google.com > foo.out 2> foo.err < /dev/null &"

-t然而,從上面的伺服器故障貼文來看,除了在一個語句中執行多個命令之外,似乎還可以透過使用標誌來實現更改目錄。幸運的是,gcloud 也可以透過添加來使用此類標誌--ssh-flag。這是更改目錄並輸出系統路徑的範例。

gcloud compute ssh --zone=us-central1-c  instance-2 --ssh-flag="-t" --command="cd /bin; pwd"
/bin
Connection to xx.xx.xx.xx closed.

pwd請注意,執行最後一個指令後,SSH 將退出(連線關閉) 。若要保持登入狀態並按照貼文中的建議使用bash --login

我不確定在circleCI中如何運行命令,但通常要在linux中運行命令,您可以直接指定完整路徑,而不是更改目錄。例如,/some/directory/executablefile將運行executablefile.

相關內容