10

我正在尝试构建一个 Dockerfile,通过 pip 将需求安装到它构建的容器中。我认为谷歌的 SDK/云控制台中可能没有设置正确的东西。我收到此错误:

me@cloud-q2smart:~/github/jokepkg/test$ sudo pip install -r test-ggl-install/requirements.txt 
Obtaining funniest from git+https://source.developers.google.com/p/cloud-q2smart/r/jokepkg#egg=funniest-0.1 (from -r test-ggl-install/requirements.txt (line 1))
Updating ./src/funniest clone
git: 'credential-gcloud.sh' is not a git command. See 'git --help'.
Username for 'https://source.developers.google.com':

该消息看起来像是试图将“credential-gcloud.sh”传递给 git,而 git 回应说它不知道这对它意味着什么。谷歌为身份验证设置的一些内部手段似乎被破坏了。

我真的很想从私人仓库正确安装它。我不希望开发团队仅仅因为身份验证机制被破坏而不得不将他们的流程更改为更麻烦的东西。

......但这很棘手......因为pip在幕后做了一些事情来调用git,看起来谷歌正试图在幕后做一些事情来告诉git如何进行身份验证。

我创建了一个项目,试图在谷歌云源的私有仓库中安装一个简单的 python 包。运行它的说明如下:

( Start up google cloud shell )
$ git clone https://github.com/jnorment-q2/jokepkg.git
# pull down my sample package
$ cd jokepkg
# ( create repo in cloud )
$ git remote add google https://source.developers.google.com/p/cloud-q2smart/r/jokepkg
$ git push google master
# Change to test directory and attempt to build Dockerfile
$ cd test
$ docker build -t test --no-cache .

这应该尝试在我的 Jenkins CI 创建的完全相同类型的容器中构建基于需求的依赖项,以用作临时构建环境。第一个将是成功的,因为那个是公共回购,并且没有任何安全配置。当它到达谷歌版本时它将失败。我不确定如何从 Dockerfile 解决这个问题。

如果有人能引导我朝着正确的方向前进,我将不胜感激。

我可以将凭证文件推送到构建环境/构建从属设备中,但无论谷歌正在做什么似乎都优先于我通过以下方式为 git 设置的凭证:

git config --local credential.username google-svc-account
git config --local credential.helper store --file=/tmp/creds

...我宁愿不将 requirements.txt 文件绑定到特定的用户 ID。

4

1 回答 1

0

尝试重置 git 配置

git config --global --unset credential.helper

git config --global --add --path credential.helper gcloud
于 2020-10-27T08:58:09.177 回答