【问题标题】:Docker-Compose - Import private repositories in go testDocker-Compose - 在 go test 中导入私有存储库
【发布时间】: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


【解决方案1】:

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

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

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

另外,你可以试试这个:
TERM=xterm

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-26
    • 1970-01-01
    • 1970-01-01
    • 2018-12-13
    • 1970-01-01
    • 2018-01-06
    • 2015-06-24
    • 2016-10-16
    相关资源
    最近更新 更多