前言
GitLab 是使用 Git 作为代码管理工具,并在此基础上搭建起来的 Web 服务。GitLab 含有全部历史记录和修订追踪能力,不依赖于网络连接或中心服务器。其最大特色就是“分支”及“合并”的操作非常快速、简便。
作为目前使用最为广泛的代码管理工具之一,GitLab 被人们广泛使用。而针对 GitLab,也存在很多种自动化集成部署的解决方案。
本文将简单介绍如何使用 Docker 的方式搭建简单的 GitLab+Jenkins
的集成环境,一起来看看吧。
准备
本文基于滴滴云通用型云服务器,具体配置为:CentOs7.4;4核 CPU;8GB 内存;40GB 普通云盘,如下图。
安装 Docker
工欲善其事必先利其器,首先将 yum 更新到最新版本。
$ sudo yum update
安装需要的软件包, yum-util 提供 yum-config-manager 功能,另外两个是 devicemapper 驱动依赖的。
$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
设置 yum 源
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
安装 Docker-ce
$ sudo yum install docker-ce
安装 Docker
$ sudo yum install <FULLY-QUALIFIED-PACKAGE-NAME>
例如:sudo yum install docker-ce-17.12.0.ce
启动 Docker
$ sudo systemctl start docker
Docker 安装完成之后就可以开始安装 GitLab 和 Jenkins 了。
拉取并启动 GitLab
拉取 GitLab Docker 镜像
$ sudo docker pull gitlab/gitlab-ce:latest
启动GitLab
$ sudo docker run --detach \
--hostname 你服务器的IP \
--publish 443:443 --publish 80:80 --publish 22:22 \
--name gitlab-ce \
--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
这样一个简单的 GitLab环境就搭建成功了。
安装 Jenkins
下载 Docker 的 Jenkins 镜像
$ sudo docker pull jenkins:latest
启动 Jenkins 的 Docker 镜像
$ sudo docker run -d --name myjenkins -v $HOME/jenkins:/var/ -p 8888:8080 -p 55000:50000 -p 45000:45000 jenkins:latest
首次登录Jenkins,要求输入 Administrator password
。由于 Jenkins 运行在 Docker 中,应当先按如下命令进入此 container 的 bash,再按照提示的路径即可找到。
$ docker exec -it <CONTAINERID> bash
$ cat /var/jenkins_home/secrets/initialAdminPassword
生成 Jenkins 的 SSH KEY
登录成功后,按提示安装默认插件,这会耗费几分钟时间,我们在这段时间里可以生成一下 SSH KEY
以供后面的配置使用。
$ ssh-keygen
配置 GitLab
登录 GitLab 创建自己的项目(此过程不再赘述),并将生成的 Jenkins 的公钥配置到 GitLab 中。
创建 Jenkins 任务
在 Jenkins 中创建一个新任务,具体配置如下。
General
勾选 GitHub 项目,填写项目 URL。
源码管理
勾选 Git,填写 Repository URL,并添加拥有访问权限的用户。
Repository URL:项目的 Git 地址。
Credentials:点击Add按钮添加用户(用户名密码和SSH两种方式均可)。
Branch Specifier (blank for ‘any’):选择要 checkout 的 Git 分支。
构建触发器
勾选触发远程构建,输入下列命令生成 token,将生成的 token 填写在身份验证令牌处。
$ openssl rand -hex 12
其他配置项
构建环境、构建、构建后操作请根据项目实际需求填写。
配置 Webhooks
添加
打开 Git 项目的 Integrations 配置项,按如下要求填写:
- URL 地址:TOKEN_NAME 即上述生成的 token。
- Trigger:指触发规则,即什么时候请求上述 URL 进行构建,根据实际需求勾选。
测试
添加成功后,在当前页点选 Test 下拉框,选择触发类型进行测试,即可在 Jenkins 中看到一项构建任务被触发了。
可能存在的问题
测试 GitLab Webhook 时,可能会出现通信问题,原因时 Jenkins 本身禁止跨站点请求。
解决办法:
进入 Jenkins-系统管理-Configure Global Security
勾选:Allow anonymous read access
取消勾选:防止跨站点请求伪造
结语
至此,一个简单的 GitLab+Jenkins
的集成环境就搭建好了。由于篇幅有限,未能详尽的介绍 Jenkins 的强大功能以及支持的复杂场景、