Docker环境下的Gitlab搭建和Gitlab-CI相关配置

Docker环境配置

根据Docker官方文档或者是中文文档,不同系统有不同安装Docker-CE的方式,这里不再赘述。

Gitlab安装配置

有了Docker环境以后,安装软件变的容易许多,安装Gitlab只需要两个步骤。

安装Gitlab-CE

下载Gitlab镜像

1
docker pull gitlab/gitlab-ce

运行Gitlab容器

1
2
3
4
5
6
7
8
9
docker run --detach \
--hostname 10.0.17.157 \
--publish 443:443 --publish 80:80 --publish 1022:22 --publish 4567:4567 --publish 5000:5000 --publish 5001:5001 \
--name gitlab \
--restart always \
--volume /srv/gitlab/config:/etc/gitlab \
--volume /srv/gitlab/logs:/var/log/gitlab \
--volume /srv/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest

–hostname:部署Gitlab的ip或是域名
–publish或者是-p:443端口和80端口就不需要解释了,1022,4567,5000,5001是后续配置和开启Docker私服所需要的端口,不需要的可以不开
–name: docker容器的名称
–restart always:根据docker服务自启动
后面挂载的是相关的配置,日志和数据信息,这个数据一定要绑定到宿主目录,防止丢失,并且可以直接在宿主机上直接修改配置文件。

安装Gitlab-runner

Gitlab-runner是运行Gitlab-CI对项目中配置好的.gitlab-ci.yml脚本,或是执行Auto-DevOps任务所需要的程序,跟Gitlab独立,可以部署在别的机器上,以免影响Gitlab的性能

下载镜像

1
docker pull gitlab/gitlab-runner

运行runner容器

1
2
3
4
5
docker run -d --name runner --restart always \
-p 8093:8093 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /srv/gitlab-runner/config:/etc/gitlab-runner \
gitlab/gitlab-runner

ps:开了8093端口是Gitlab11.4版本后可以在CI任务执行时进行远程调试

下载maven的docker镜像

因为我这里主要是java程序为主,主要使用maven进行编译打包,我使用的是maven:3-jdk8,有需要其他环境的需要下载相应的docker镜像或是自己写dockerfile进行定制

1
docker pull maven:3-jdk-8

相关配置

Gitlab启动完成以后,有相关第一次管理员登入,相关配置以后就可以进行基本的项目管理。

Gitlab-runner注册

在管理员页面打开runner的管理网页,或者是打开http://gitlab-ip/admin/runners页面,可以看到页面上有手动设置runner的指南,现在就可以对刚才新建的runner容器进行注册

docker exec -it runner gitlab-runner register

Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):

第一个输入的就是你Gitlab服务器的地址,网页上有显示,粘贴尽量就完了

Please enter the gitlab-ci token for this runner:

第二个需要输入的tocken,也是粘贴过来就完了

Please enter the gitlab-ci description for this runner:

第三个是输入描述,或者说就是名称

Please enter the gitlab-ci tags for this runner (comma separated):

第四个是这个runner的tag,tag可以对runner进行区分,可以根据环境进行区分,或者是对任务类别进行区分,打了tag的runner只会执行相应tag的任务(也可以设置成接受其他任务)

Please enter the executor: ssh, docker-ssh+machine, kubernetes, docker, docker-ssh, parallels, shell, virtualbox, docker+machine:

第五个设置运行的环境,我这里使用的是docker

Please enter the default Docker image (e.g. ruby:2.1):
最后一个设置默认的docker镜像我这里使用的是maven:3-jdk-8

总结

至此基本的Gitlab和runner配置已经完成,下一篇会对实际应用进行配置,对一个简单的JavaWeb项目进行自动化部署