gpt4 book ai didi

git - 在 GitLab CI 下的 Docker Compose 中从 git 构建时出现 "error initializing submodules"

转载 作者:行者123 更新时间:2023-12-02 19:32:59 28 4
gpt4 key购买 nike

我最近更改了我的 docker-compose.yml 中的一个项目在 GitLab CI 中使用 Git 存储库(通过 HTTP,而不是 HTTPS 或 SSH)而不是相对路径。

这在我的本地机器上运行良好,如果我以自己的身份登录 CI 服务器。

当它在 GitLab 下运行时,它会到达 docker-compose build步骤并退出并出现错误(此处显示启用了 CI_DEBUG_TRACE--verbose 上的 docker-compose 标志):

$ docker-compose --verbose build
++ docker-compose --verbose build
compose.config.config.find: Using configuration files: ./docker-compose.yml
docker.auth.find_config_file: Trying paths: ['/home/gitlab-runner/.docker/config.json', '/home/gitlab-runner/.dockercfg']
docker.auth.find_config_file: No config file found
urllib3.connectionpool._make_request: http://localhost:None "GET /v1.25/version HTTP/1.1" 200 559
compose.cli.command.get_client: docker-compose version 1.18.0, build 8dd22a9
docker-py version: 2.6.1
CPython version: 2.7.13
OpenSSL version: OpenSSL 1.0.1t 3 May 2016
compose.cli.command.get_client: Docker base_url: http+docker://localunixsocket
compose.cli.command.get_client: Docker version: KernelVersion=3.10.0-693.21.1.el7.x86_64, Components=[{u'Version': u'18.02.0-ce', u'Name': u'Engine', u'Details': {u'KernelVersion': u'3.10.0-693.21.1.el7.x86_64', u'Os': u'linux', u'BuildTime': u'2018-02-07T21:17:42.000000000+00:00', u'ApiVersion': u'1.36', u'MinAPIVersion': u'1.12', u'GitCommit': u'fc4de44', u'Arch': u'amd64', u'Experimental': u'false', u'GoVersion': u'go1.9.3'}}], Arch=amd64, BuildTime=2018-02-07T21:17:42.000000000+00:00, ApiVersion=1.36, Platform={u'Name': u''}, Version=18.02.0-ce, MinAPIVersion=1.12, GitCommit=fc4de44, Os=linux, GoVersion=go1.9.3
compose.project.build: ldap uses an image, skipping
compose.service.build: Building cas
compose.cli.verbose_proxy.proxy_callable: docker build <- (pull=False, labels=None, target=None, nocache=False, container_limits={u'memory': None}, cache_from=None, extra_hosts=None, network_mode=None, tag=u'<our project>_cas', buildargs={}, rm=True, stream=True, path='http://<our gitlab url>/gitlab/docker/rubycas-server-docker.git', dockerfile=None, forcerm=False, shmsize=None)
docker.api.build._set_auth_headers: Looking for auth config
docker.api.build._set_auth_headers: No auth config in memory - loading from filesystem
docker.auth.find_config_file: Trying paths: ['/home/gitlab-runner/.docker/config.json', '/home/gitlab-runner/.dockercfg']
docker.auth.find_config_file: No config file found
docker.api.build._set_auth_headers: No auth config found
urllib3.connectionpool._make_request: http://localhost:None "POST /v1.25/build?q=False&pull=False&remote=http%3A%2F%2F<our gitlab url>%2Fgitlab%2Fdocker%2Frubycas-server-docker.git&t=<our project>_cas&nocache=False&forcerm=False&rm=True HTTP/1.1" 500 802
compose.cli.verbose_proxy.proxy_callable: docker build -> <generator object _stream_helper at 0x7fb49ebb1eb0>
compose.cli.errors.log_api_error: error initializing submodules: usage: git submodule [--quiet] add [-b <branch>] [-f|--force] [--name <name>] [--reference <repository>] [--] <repository> [<path>]
or: git submodule [--quiet] status [--cached] [--recursive] [--] [<path>...]
or: git submodule [--quiet] init [--] [<path>...]
or: git submodule [--quiet] deinit [-f|--force] [--] <path>...
or: git submodule [--quiet] update [--init] [--remote] [-N|--no-fetch] [-f|--force] [--rebase] [--reference <repository>] [--merge] [--recursive] [--] [<path>...]
or: git submodule [--quiet] summary [--cached|--files] [--summary-limit <n>] [commit] [--] [<path>...]
or: git submodule [--quiet] foreach [--recursive] <command>
or: git submodule [--quiet] sync [--recursive] [--] [<path>...]
: exit status 1

我关注了 GitLab documentation on submodules并没有运气。

据我所知,项目中甚至没有任何子模块是由 git 构建的。

如果有帮助,这里是 docker-compose.yml 的问题服务:
cas:
build:
context: http://<our gitlab url>/gitlab/docker/rubycas-server-docker.git
depends_on:
- "ldap"
networks:
- test-net
ports:
- "8080:8080"

以及从 git 中提取的项目的 Dockerfile(在我进行故障排除时添加了子模块行,似乎没有帮助):
FROM ruby:2.1.5

# Repo dependencies
RUN apt-get update && apt-get -y install git sqlite3

# Code
RUN git clone https://github.com/rubycas/rubycas-server.git /rubycas-server/
COPY config.yml /rubycas-server/

WORKDIR /rubycas-server/

# Pull submodules
RUN git submodule sync --recursive && git submodule update --init --recursive

# Need to downgrade to Ruby 2.1.5 but latest rack-test requires 2.2.2
RUN sed -i 's/"rack-test"/"rack-test", "~> 0\.7\.0"/' rubycas-server.gemspec

# Ruby dependencies (include database adapter)
RUN gem install bundler
RUN bundle install && bundle add sqlite3

# Create the database file and log - they're empty
RUN sqlite3 cas.db ''
# RUN touch cas.log

CMD bundle exec rubycas-server -c config.yml

最佳答案

实际解决方案

服务器使用的是非常旧版本的 git。手动将 git 包升级到最新版本解决了这个问题并允许我使用最新的 docker-ce版本。

这似乎是 docker-ce 的最新边缘版本的问题。 .我从 18.02.0.ce-1.el7.centos 降级至17.12.1.ce-1.el7.centos通过禁用 docker-ce-edge repo并重新安装,问题就解决了。

关于git - 在 GitLab CI 下的 Docker Compose 中从 git 构建时出现 "error initializing submodules",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49240573/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com