繁体   English   中英

Docker-Compose - 在 go 测试中导入私有存储库

[英]Docker-Compose - Import private repositories in go test

我刚刚遇到了一个非常奇怪的问题,我真的不明白目前正在发生的事情..

我有一个项目,同时进行了一些 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 组合,它运行 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 获得时间,无法获取我的私人存储库...

Thanks for any help.. I really did search to inject SSH, so setup git and everything but.. It seems to have something to do with docker-compose... not my Dockerfile image or my golang command

再次感谢..

最好的,

最大限度

你检查过这个答案吗?
https://stackoverflow.com/a/38237165/4486909

go get默认禁用“终端提示”。
这可以通过设置 git 的环境变量来改变:
env GIT_TERMINAL_PROMPT=1

尝试将以下变量添加到您的 docker-compose env部分:
GIT_TERMINAL_PROMPT=1

此外,您可以通过以下方式获得 go:
TERM=xterm

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM