在单独的步骤中执行时找不到 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 可执行文件 (<gcloud_sdk_dir>/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可执行文件