【发布时间】:2022-02-03 08:12:49
【问题描述】:
我刚刚遇到了一个非常奇怪的问题,我真的不明白目前正在发生什么......
在进行一些 e2e 测试时,我有一个项目,一切正常。出于某种原因,我不得不使用我的一些私有存储库(来自 gitlab),因为我开发了一些与数据库和其他目的相关的层。
问题是,当我尝试从 docker compose 命令运行 go test 时,它现在失败并显示以下消息:
e2e_tests_1 | FAIL gitlab.com/foo-bar-group/awesome-api/tests/e2e [setup failed]
e2e_tests_1 | # gitlab.com/foo-bar-group/awesome-api/tests/e2e
e2e_tests_1 | internal/domain/models/file_infos.go:7:2: gitlab.com/emixam23-generic-utils/google-cloud-storage@vxxx: invalid version: git fetch -f origin refs/heads/*:refs/heads/* refs/tags/*:refs/tags/* in /go/pkg/mod/cache/vcs/xxx: exit status 128:
e2e_tests_1 | fatal: could not read Username for 'https://gitlab.com': terminal prompts disabled
e2e_tests_1 | FAIL
我有一个简单的 docker compose,它运行 3 个容器(mongodb、elasticsearch、自定义 golang docker 映像)。我的 Dockerfile 有一个小脚本,可以帮助我(并且正在工作)知道什么时候一切都准备好进行全面测试
Dockerfile
FROM golang:1.17.6
WORKDIR /app
ENV GO111MODULE on
# Download wait for it tool.
ADD https://raw.githubusercontent.com/vishnubob/wait-for-it/master/wait-for-it.sh /wait-for-it
RUN chmod +x /wait-for-it
docker-compose.tests-e2e.yml
version: "3.7"
services:
mongodb_e2e_tests:
image: mongo:5.0.4
elasticsearch_e2e_tests:
image: docker.elastic.co/elasticsearch/elasticsearch:7.15.0
environment:
- "discovery.type=single-node"
e2e_tests:
build:
context: .
dockerfile: Dockerfile.e2e_tests
environment:
# ...
depends_on:
- mongodb_e2e_tests
- elasticsearch_e2e_tests
volumes:
- .:/app
command: sh -c "/wait-for-it elasticsearch_e2e_tests:9200 -- /wait-for-it mongodb_e2e_tests:27017 -- go test ./tests/e2e/... -p 1 -v -count=1"
一切似乎都像以前一样工作,直到 go test ./tests/e2e/... -p 1 -v -count=1 从现在开始,在 go get 时间,无法获取我的私人存储库...
感谢您的帮助.. 我确实搜索过注入 SSH,所以设置了 git 和其他所有东西.. 它似乎与 docker-compose 相关...不是我的 Dockerfile 图像或我的 golang 命令
再次感谢..
最好的,
最大
【问题讨论】:
-
基于 ssh 密钥的身份验证是您想要的,那么它将对 Go “正常工作”。如果您在 docker compose 中运行 go build,medium.com/@tonistiigi/… 可以帮助您安全可靠地公开 git authnz 的 ssh 凭据。
标签: git docker go docker-compose gitlab