物联网架构成长之路(47)-利用GitLab实现CI持续集成
0.前言
前段时间,考虑到要练习部署一套CI/CD的系统。一开始考虑到Jenkins,随着这两天的了解,发现最新版的GitLab已经提供有CI/CD集成了。所以本次博客,干脆一步到位,直接用GitLab里面的CI/CD模块。Jenkins可能需要更高级的应用场合。经过测试GitLab自带的功能完全符合我的需求。
1. 安装GitLab和GitLab-CI(gitlab-runner)
英语比较好的,可以直接看官方文档。https://docs.gitlab.com/omnibus/docker/#install-gitlab-using-docker-compose https://docs.gitlab.com/ee/ci/quick_start/README.html
下面提供我使用的 docker-compose.yml
1 version: '3' 2 services: 3 gitlab: 4 image: twang2218/gitlab-ce-zh:latest 5 #image: gitlab/gitlab-ce:rc 6 restart: always 7 hostname: '172.16.23.203' 8 environment: 9 GITLAB_OMNIBUS_CONFIG: | 10 external_url 'http://172.16.23.203:8929'11 gitlab_rails["time_zone"] = "Asia/Shanghai"12 ports: 13 - 8929:892914 - 1080:8015 - 1443:44316 - 1022:2217 volumes: 18 - /root/workspace/docker/gitlab/1/config:/etc/gitlab 19 - /root/workspace/docker/gitlab/1/logs:/var/log/gitlab 20 - /root/workspace/docker/gitlab/1/data:/var/opt/gitlab 21 gitlab-runner: 22 image: gitlab/gitlab-runner:latest 23 restart: always 24 volumes: 25 - /root/workspace/docker/gitlab/2/config:/etc/gitlab-runner 26 - /var/run/docker.sock:/var/run/docker.sock
执行docker-compose up -d 就运行起来,几点需要说明的
1. gitlab的image,可以选择中文版或者英文版
2. hostname 这里指定本机IP地址
3. gitlab环境变量,external_url表示提供访问的IP和端口,时区配置上海
4. 端口映射,默认是80端口,由于我上面配置了8929,所以映射8929到Host主机
5. volumes 配置持久化数据
6. 这里的/var/run/docker.sock 要映射到主机,因为会用到主机的一些资源,同时还会在docker里面安装docker
下面是运行效果,第一次运行会比较久,因为要拉取镜像和初始化GitLab
2. 登录使用GitLab
首次登录,设置密码。 登录默认用户名是root
利用模版,新建一个Spring项目
利用IDE,或者其他工具,或者直接在GitLab修改代码
3. 配置CI/CD,把机器(gitlab-runner)注册到GitLab中
可以在项目配置CI/CD机器,也可以在个人所有项目下配置,也可以由管理员配置所有项目下CI/CD机器。原理和流程都是一样的,只是比Jenkins更加细粒度控制而已。
进入gitlab-runner的Docker,执行初始化命令 gitlab-ci-multi-runner register,完整命令如下:
1 sudo docker exec -it gitlab-runner gitlab-ci-multi-runner register
需要录入的信息,安装上图进行,填写,后续还可以修改。
如果需要修改,可以修改之前volumes配置的路径下, config/config.toml
1 concurrent = 1 2 check_interval = 0 3 4 [session_server]