在单独的步骤中执行时找不到 gsutil 命令 - bitbucket 管道

Posted

技术标签:

【中文标题】在单独的步骤中执行时找不到 gsutil 命令 - bitbucket 管道【英文标题】:gsutil command not found when executing in a seperate step - bitbucket pipelines 【发布时间】:2021-04-25 09:18:17 【问题描述】:
image: node:14.15.4
pipelines:
branches:
'INSTALL STEP':
  - step:
      name: Install Gcloud and transfer files
      script:
        - echo "starting build"
        - <<I INSTALL GCLOUD HERE FROM A SEPERATE SH FILE, ALSO PATHS ARE SET>>
  - step:
      name: gsutil execution
      script:
        - gsutil cp <<some code goes here>>

我面临的问题是,如果我将 gsutil 放在单独的步骤中,则会以 gsutil: command not found 的形式出现错误。如果我把它放在我安装 gcloud 的脚本中,它工作正常。请帮忙。

【问题讨论】:

【参考方案1】:

我最初认为包含 gsutil 可执行文件 (&lt;gcloud_sdk_dir&gt;/bin/) 的目录可能不在运行命令时使用的 PATH 中。您可以通过在两种情况下运行 echo $PATH 并比较它们来验证这一点。

但是,在查看 bitbucket 文档之后,您似乎需要将在一个步骤中生成的文件(例如您安装的 gcloud 文件)声明为“工件”,以便在后续步骤中使用它们。

https://support.atlassian.com/bitbucket-cloud/docs/use-artifacts-in-steps/

【讨论】:

好的,谢谢您的回答。一个问题是,所以如果我将文件保存为工件,我该如何在下一步执行 gsutil 命令??它仍然给我找不到 gsutil 命令。 Andrew 的回答更详细地说明了如何做到这一点,但总体思路是:在后续步骤中,您要么需要使用其绝对路径调用 gsutil(而不仅仅是 @987654325 @),或导出 PATH 环境变量,使其包含包含 gsutil 可执行文件的目录,然后再运行其他命令。【参考方案2】:

您的第二步将失败,因为:

管道中的每个步骤都运行一个单独的 Docker 容器。如果需要,您可以通过选择不同的图像为每个步骤使用不同类型的容器。

例如,如果您希望第二步访问“file.txt”,则需要将其定义为工件。

artifact:
    - files/*.txt

声明gcloud 如下所示。但是,您还需要考虑其他依赖项,包括设置 PATH

- step:
    name: Install Gcloud and transfer files
    script:
      - echo "starting build"
      - <<I INSTALL GCLOUD HERE FROM A SEPERATE SH FILE, ALSO PATHS ARE SET>>
    artifact:
      - /usr/lib/google-cloud-sdk/**
       . . .

由于每个步骤都在 Docker 容器中运行,因此如果需要,您还可以为每个步骤声明不同的容器。您可以改用 Google SDK Docker 映像来确保依赖关系正确。

- step:
    name: Install Gcloud and transfer files
    image: google/cloud-sdk:160.0.0
    script:
      - npm install
      - npm test
      - npm run build
    artifact:
      - files/to/transfer

【讨论】:

您好,我能得到一些关于如何在 BB Pipelines 上使用 gcloud cli 的答案吗?这里是社区问题链接:community.atlassian.com/t5/Bitbucket-questions/…谢谢!

以上是关于在单独的步骤中执行时找不到 gsutil 命令 - bitbucket 管道的主要内容,如果未能解决你的问题,请参考以下文章

从 groovy 脚本运行 gsutil:找不到 Python 可执行文件

尝试使用 yarn encore dev 命令时找不到命令“encore”

在netbeans中运行makefile时找不到sdl2-config可执行文件

gsutil 命令删除前一天的旧文件

在 python 中安装 Imblearn 时找不到版本错误

通过桌面图标运行 bash 脚本时找不到节点命令