无法将 gsutil cp 与 gitlab CI 一起使用
Posted
技术标签:
【中文标题】无法将 gsutil cp 与 gitlab CI 一起使用【英文标题】:Can't use gsutil cp with gitlab CI 【发布时间】:2021-08-19 16:27:40 【问题描述】:我在 mac mini 服务器上使用 gitlab runner。 在使用名为“runner”的用户时,我设法使用了这个命令:
gsutil ls -l gs://tests/ |grep staging | sort -k 2 | tail -n 3| head -n 2 |awk 'print $3' | gsutil -m cp -I .
我设法获取文件,但是在 gitlab-ci.yml 中使用相同的命令,如下所示:
stages:
- test
test:
stage: test
when: always
script:
- gsutil ls -l gs://tests/ |grep staging | sort -k 2 | tail -n 3| head -n 2 |awk 'print $3' | gsutil -m cp -I .
我得到错误:
bash: line 141: gsutil: command not found
我还检查了 gitlab runner 使用的是我使用的同一个用户。
gitlab runner 配置了shell executor。
更改命令以保存 gsutil 的完整路径也无济于事。
我在 gitlab-ci.yml 中添加了whoami
,得到了同一个用户“runner”的结果
【问题讨论】:
即使运行器配置为使用 shell 执行器,它也以不同的用户身份运行:gitlab-runner
。确保该用户有权访问gsutil
。当您使用您的用户帐户登录时,whereis gsutil
和 which gsutil
的输出是什么?
我忘了提到即使使用从which gsutil
获得的完整路径也会发生此错误
【参考方案1】:
我设法通过使用这个解决方案解决了这个问题:
gcloud-command-not-found-while-installing-google-cloud-sdk
在使用 gsutil 命令之前,我将这 2 行包含在我的 gitlab-ci.yml 中。
source '[path-to-my-home]/google-cloud-sdk/path.bash.inc'
source '[path-to-my-home]/google-cloud-sdk/completion.bash.inc'
【讨论】:
以上是关于无法将 gsutil cp 与 gitlab CI 一起使用的主要内容,如果未能解决你的问题,请参考以下文章
Docker 构建失败 - 带有 GKE 的 Gitlab CI。无法通过 tcp://localhost:2375 连接到 Docker 守护程序。 docker 守护进程是不是正在运行?