作者:那永A_334 | 来源:互联网 | 2022-12-09 12:10
我一直在尝试从我的Docker Hub存储库中将私有(自定义)MySQL映像作为服务引入gitlab-ci.yml管道.我添加了一个尝试使用我的用户名和密码(CI变量)登录dockerhub的before_script.失败的构建日志中没有输出表明登录到Docker Hub是否成功,但我假设没有,因为我的图像的拉动失败并显示以下消息(编辑:或者它甚至从未尝试过,因为gitlab试图获取在运行before脚本之前的服务?):
存储库不存在或可能需要'docker login'(executor_docker.go:168:0s)
我正在使用共享运行器(因为我相信这是我使用gitlab.com的唯一选择吗?)我已经看到了很多关于docker的gitlab ci标记的提及但是我没有找到解释如何促进这个的文档.
我确信我只是忽略了某些事情/不理解或在我的搜索中遇到了相应的解决方案,所以如果我只是缺乏经验并且事先感谢任何帮助,那么道歉.
我的gitlab-ci(maven变量是因为这个项目的构建依赖于私有maven repo.数据库和redis主机变量在运行时被注入我的应用程序,因此他们知道要指向哪个容器)
image: maven:3.5.0-jdk-8
before_script:
- "docker login -u$DOCKER_USER -p$DOCKER_PASS" #pipeline variables
variables:
MAVEN_CLI_OPTS: "-s .m2/settings.xml --batch-mode"
MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository"
DATABASE_HOST: mysql
REDIS_HOST: redis
services:
- name: privaterepo/private-mysql-schema
alias: mysql
- name: redis:latest
alias: redis
stages:
- build
maven-build:
stage: build
script: "mvn $MAVEN_CLI_OPTS package -B"
artifacts:
paths:
- target/*.jar
Ruwanka Madh..
11
第一件事是设置GitLab CI以在需要时提供私有docker注册表的凭据.要做到这一点,你应该遵循文档中的特定部分,作为一个完整的答案
使用docker login
或以其他方式获取docker注册表URL,用户名和密码(我不得不花一些时间来找出docker hub的注册表)
DOCKER_AUTH_CONFIG
在GitLab CI变量部分中定义varialbe它看起来像
{
"auths":{
"registry.hub.docker.com":{
"auth":"xxxxxxxxxxxxxxxxxxxxxxxxxxxx" // base 64 encoded username:password
}
}
}
声明图像/服务image: registry.hub.docker.com/ruwanka/helloworld:0.1
中.gitlab-ci.yml
这应该完全满足拉图像的要求.文档中还有另一部分列出了运行者允许服务列表的要求.如果它没有指定任何它应该没问题,你可能不得不调整它,如果它不起作用.
最终的yaml如下所示
image: registry.hub.docker.com/ruwanka/helloworld:0.1
build:
script:
- echo "hello"
# more steps
services:
- registry.hub.docker.com/ruwanka/helloworld:0.1
gitlab作业日志的片段
1> Ruwanka Madh..:
第一件事是设置GitLab CI以在需要时提供私有docker注册表的凭据.要做到这一点,你应该遵循文档中的特定部分,作为一个完整的答案
使用docker login
或以其他方式获取docker注册表URL,用户名和密码(我不得不花一些时间来找出docker hub的注册表)
DOCKER_AUTH_CONFIG
在GitLab CI变量部分中定义varialbe它看起来像
{
"auths":{
"registry.hub.docker.com":{
"auth":"xxxxxxxxxxxxxxxxxxxxxxxxxxxx" // base 64 encoded username:password
}
}
}
声明图像/服务image: registry.hub.docker.com/ruwanka/helloworld:0.1
中.gitlab-ci.yml
这应该完全满足拉图像的要求.文档中还有另一部分列出了运行者允许服务列表的要求.如果它没有指定任何它应该没问题,你可能不得不调整它,如果它不起作用.
最终的yaml如下所示
image: registry.hub.docker.com/ruwanka/helloworld:0.1
build:
script:
- echo "hello"
# more steps
services:
- registry.hub.docker.com/ruwanka/helloworld:0.1
gitlab作业日志的片段