簡體   English   中英

在 Google Cloud Build 中使用 gcloud compute scp 時出錯

[英]Error using gcloud compute scp with Google Cloud Build

我一直在嘗試使用 Google Cloud Build 觸發器運行gcloud compute scp命令。 我希望將我的代碼復制到列出的服務器中的相應目錄。

但是,當我在 Cloud Shell 中執行gcloud compute scp * username@instance-name:/home/directory --zone=us-central1-a --recurse時,它起作用了,這有點奇怪。

但是當我在cloudbuild.yaml文件中寫入等效項時,它失敗並出現錯誤: *: No such file or directory

以下是我的cloudbuild.yaml的內容:

- name: 'gcr.io/cloud-builders/gcloud'
  args: ['compute' , 'scp' , '*', 'username@instance-name:/home/directory' , '--zone=us-central1-a', '--recurse']

我也嘗試過使用remote-builder ,但也失敗並出現錯誤:

ssh: connect to host <ip_address> port 22: Connection timed out
lost connection
ERROR: (gcloud.compute.scp) [/usr/bin/scp] exited with return code [1].

我還通過將源*替換為/workspace/*./*等來嘗試其他組合,但它們都不起作用。 使用 source as /workspace/執行是可行的,但會復制整個workspace目錄,而不是根據需要復制目錄的內容。

我也試過運行以下設置,但也失敗了。

cloudbuild.yaml

- name: 'ubuntu'
  args: ['bash', '-c' , 'scp', '*', 'username@instance-name:/home/directory']

錯誤:

Already have image: ubuntu
scp: command not found

同樣,我只想使用 Cloud Build 將我的代碼復制到 VM。 請幫忙。

對於“gcr.io/cloud-builders/gcloud”容器鏡像選項:

星號“*”由bash解釋並在將引用對象傳遞給命令之前展開,並且由於直接使用此容器映像中的gcloud而不是通過bash作為中介,“*”未展開,而是按字面意思傳遞到gcloud命令,它沒有找到任何名為“*”的文件。 如果您需要復制存儲庫中的所有代碼(遞歸目錄及其文件),請使用相同的命令,但寫入根符號“/”(順便說一下,它是一個文字 - 不可擴展 - 到bash ),代替 ”*”。

對於 bash 的 OS 容器映像選項:

容器鏡像必須默認安裝scp才能以這種方式工作,而“ubuntu”鏡像默認沒有。 您可以使用默認安裝了openssh-client package 的圖像,或者將其安裝到位然后運行命令,如下所示(對於步驟語法,請檢查):

steps:
- name: 'ubuntu'
  entrypoint: 'bash'
  args:
  - '-c'
  - |
    sudo apt update && sudo apt install openssh-client -y && scp * username@instance-name:/home/directory

我遇到過同樣的問題。 我最終創建了兩個步驟:

  - name: 'google/cloud-sdk:slim'
    args:
      - compute
      - scp
      - '--recurse'
      - '--compress'
      - /workspace/dist
      - 'build@instance-1:/var/www/'
      - '--zone'
      - us-west2-a
    id: copy-file-to-server
    entrypoint: gcloud
  - name: 'google/cloud-sdk:slim'
    args:
      - compute
      - ssh
      - '--zone'
      - us-west2-a
      - build@instance-1
      - '--'
      - 'mv /var/www/dist /var/www/$_SHORT_SHA '
    id: rename-dist
    entrypoint: gcloud

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM