我正试图构建一个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-through设置的信誉:
git config --local credential.username google-svc-account
git config --local credential.helper store --file=/tmp/creds
我宁愿不将requirements.txt文件与特定的用户id绑定。
尝试重置git配置
git config --global --unset credential.helper
git config --global --add --path credential.helper gcloud