我想利用gitlab-ci并执行以下操作:
foo
的本地分支推送到Gitlab存储库中,其中包含Dockerfile.foo
(除其他外)foo
分支合并到master
master
分支中,每有一个合并请求成功运行,分支中就会有一个.gitlab-ci.yml
来运行管道,这将:登录docker hub,构建一个名为foo:latest的docker image并将其推送到docker hub。到目前为止,我收到的是以下Yaml,但它不起作用。
stages:
- build
docker-build:
image: docker:latest
stage: build
services:
- docker:dind
before_script:
- docker login -u "$DOCKER_REGISTRY_USER" -p "$DOCKER_REGISTRY_PASSWORD"
script:
- docker build -f Dockerfile.$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME -t $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME:latest .
- docker push <some-docker-hub-repo>/$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME:latest
only:
- merge_requests
如果在only
中包含- master
并给出一个特定的名称而不是$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME
,则该名称有效。但是,这不是我想要做的,因为我要合并到master
的每个源分支,以该分支的名称构建并推送一个docker映像它到码头枢纽。最后,由于某种原因,合并请求成功完成后,环境变量$ CI_MERGE_REQUEST_SOURCE_BRANCH_NAME返回nil。你能帮我吗?