ビルドするコンテナーに pip 経由で要件をインストールする Dockerfile をビルドしようとしています。Google の 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 はそれが何を意味するのか分からないと応答しています。Google が認証用に設定した内部手段が壊れているようです。
プライベートリポジトリから正しくインストールしてもらいたいです。認証メカニズムが壊れているという理由だけで、開発チームがプロセスをより面倒なものに変更する必要はありません。
...しかし、それはトリッキーです... pip は舞台裏で git を呼び出すために何かを行い、Google は舞台裏で何かを実行して git に認証方法を伝えようとしているように見えます。
シンプルな python パッケージを Google クラウド ソースのプライベート リポジトリにインストールしようとするプロジェクトを作成しました。実行する手順は次のとおりです。
( 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 が一時的なビルド環境として使用するために作成するコンテナーとまったく同じ種類のコンテナーで、要件ベースの依存関係を構築しようとする必要があります。最初のものは公開リポジトリであり、セキュリティのために構成するものがないため、成功します。Google版になると失敗します。Dockerfile からこれを解決する方法がわかりません。
誰かが私を正しい方向に導くことができれば、私はそれを感謝します.
認証情報ファイルをビルド環境/ビルドスレーブにプッシュしても問題ありませんが、Googleが行っていることは何でも、私がgitに設定した認証情報よりも優先されているようです:
git config --local credential.username google-svc-account
git config --local credential.helper store --file=/tmp/creds
... requirements.txt ファイルを特定のユーザー ID に結び付けたくありません。