如何解决在单独的步骤中执行时找不到 gsutil 命令 - bitbucket 管道
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 的脚本中,它工作正常。请帮忙。
解决方法
我最初认为包含 gsutil 可执行文件 (<gcloud_sdk_dir>/bin/
) 的目录可能不在您的命令运行时使用的 PATH
中。您可以通过在两种情况下运行 echo $PATH
并进行比较来验证这一点。
但是,在查看了 bitbucket 文档之后,您似乎需要将在一个步骤中生成的文件(例如您安装的 gcloud 文件)声明为“工件”,以便在后续步骤中使用它们。
https://support.atlassian.com/bitbucket-cloud/docs/use-artifacts-in-steps/
,您的第二步将失败,因为:
管道中的每一步都运行一个单独的 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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。