Docker HubやGoogle container Registryと同様に、GitLabにもGitLab Container Registryが備わっている。

$ docker login registry.gitlab.com
$ docker build -t registry.gitlab.com/hoge/myproject .
$ docker push registry.gitlab.com/hoge/myproject
コンテナイメージの名前を変数化
job01:
stages:
- build
- test
- deploy
variables:
CONTAINER_NAME: ${CI_PROJECT_NAME}_${APP_NAME}
CONTAINER_IMAGE: ${CI_REGISTRY}/${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}/${APP_NAME}
packaged_web_app:
stage: packaged
before_script:
- docker login -u gitlab-ci-token -p ${CI_BUILD_TOKEN} ${CI_REGISTRY}
script:
- cd ./${APP_NAME}
- docker build . -t ${CONTAINER_IMAGE}
only:
- branches
except:
- master
tags:
- shell
- gitlab-runner01
deploy_web_demo:
stage: deploy
variables:
SERVICE_DOMAIN: gitlab-service.example.com
before_script:
- docker rm -f ${CONTAINER_NAME} || true
script:
- docker run --name ${CONTAINER_NAME} -p 80:8080 -d ${CONTAINER_IMAGE}
- sleep 3
- curl http://${SERVICE_DOMAIN}/${APP_NAME}
only:
- master
when: manual
environment:
name: production
url: http://${SERVICE_DOMAIN}/${APP_NAME}/
tags:
- shell
- gitlab-runner01
なるほど、大まかにイメージはできてきた