轻量级自动化部署方式,采用gitlab原有组件runner完成自动化部署,抛弃臃肿的jenkins,全程基于docker-in-docker模式,无需像传统部署那样安装额外环境来打包发布,当然效率上较差于传统的部署方式。
安装jenkins
这个不多说,中文版的 gitlab
安装Runner
docker run -d --name gitlab-runner --restart always \
-v /runner/gitlab-runner/config:/etc/gitlab-runner \
-v /var/run/docker.sock:/var/run/docker.sock \
gitlab/gitlab-runner:latest
配置启动Runner
docker exec -it gitlab-runner gitlab-runner register -n \
--url http://192.168.101.136:30859 \
--registration-token 6dv_3yytXBEUbxBBY2Ec \
--tag-list=c# \
--description "project_build_runner" \
--docker-image "mengzyou/docker:19.03" \
--docker-privileged=true \
--docker-pull-policy="if-not-present" \
--docker-volumes /var/run/docker.sock:/var/run/docker.sock \
--docker-volumes /opt/data/gitlab-runner/.m2:/root/.m2 \
--executor docker
++注意++
- docker-privileged=true 这个要设置为true,否则docker-in-docker模式失效
- tag-list 是和你自动化部署项目匹配的标识,可配置多个,逗号隔开
- url/registration-token 在你项目设置的CI/CD里有,如下图
如果正确部署完该Runner会跟你项目绑定
image.png.gitlab-ci.yml编写
stages:
- test_build
- official_build
test_build:
stage: test_build
image: docker:stable
services:
- docker:dind
tags:
- c# //这个要和你配置的tag-list存在这个标签
only:
- test //只允许test分支执行这个模块代码
script:
- docker stop websocket_test || exit_code=$?
- docker build -t websocket:test .
- docker run -d --rm --name websocket_test -p 8001:80 -t websocket:test
official_build:
stage: official_build
tags:
- c#
only:
- master
script:
- docker build -t websocket:$CI_PIPELINE_ID .
- docker push image // 这个推送到你自己的镜像库
完成!
image.png
网友评论