gitlab ci/cd

轻量级自动化部署方式,采用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里有,如下图
image.png

如果正确部署完该Runner会跟你项目绑定

image.png

.gitlab-ci.yml编写

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

你可能感兴趣的:(gitlab ci/cd)