为了清楚起见,我说的是可用于3.x的secrets
配置。
我不是在谈论使用环境变量(来自主机或来自 Gitlab CI/CD 设置)传递密钥/令牌。docker-compose
假设我有这个docker-compose
配置:
version: "3.7"
services:
my-app:
image: ubuntu:18.04
container_name: my-app-container
command: tail -f /dev/null
secrets:
- my_app_secrets
secrets:
my_app_secrets:
file: /path/to/secrets.txt
当我手动启动容器时
$ docker-compose up -d
$ docker-compose exec my-app bash
/run/secrets/my_app_secrets在容器内变为可用,包含与secrets.txt完全相同的内容。路径/run/secrets/由secrets
配置定义。
现在我需要对 Gitlab CI 管道使用相同的设置。不幸的是,我似乎找不到要放入.gitlab-ci.yml或/etc/gitlab-runner/config.toml的配置,这将允许我指定相同的secrets
配置。我确定它没有安装,因为我使用了一个自定义ENTRYPOINT
脚本来检查/run/secrets/my_app_secrets文件并且它不存在。
if [[ ! -e "/run/secrets/my_app_secrets" ]];
then
print_error "Did not find mounted app secrets from host"
return 1
fi
我现在的当前解决方案是使用[runners.docker]volumes
部分下的配置,并将/path/to/secrets.txt挂载为常规卷。
volumes = [
"/path/to/secrets.txt:/run/secrets/my_app_secrets"
]
但我认为这种重复配置,我手动指定/run/secrets/secret_name路径。
还有另一种方法可以secrets
为 gitlab-runner 指定配置吗?
环境细节:
- Gitlab CE 12.8.6
- gitlab-runner 12.7.1
- 码头工人 19.03.6
- 码头工人撰写 1.24.0