搭建 gitlab-ci 持续集成环境

搭建 gitlab-ci 持续集成环境

安装docker

https://www.docker.com/get-docker

添加 hosts

1
2
3
4
5
6
7
# 「192.168.99.1 」 为宿主机的ip
192.168.99.1 gitlab.jajabjbj.top
192.168.99.1 rancher.jajabjbj.top
192.168.99.1 jenkins.jajabjbj.top
192.168.99.1 docker.jajabjbj.top
192.168.99.1 harbor.jajabjbj.top

注意: 这里不能使用127.0.0.1,应为在docker容器中的127.0.0.1 和宿主机的127.0.0.1是两个不同的ip,如果docker容器内解析这个域名就好得到错误的ip,这里「192.168.99.1 」 为你宿主机电脑上面的虚拟网卡的固定ip,可以安装 VirtrualBox 等软件后,宿主机上面会自动创建虚拟网卡。

安装 nginx proxy

安装 nginx-proxy 的目的是为了让宿主机器通过一个端口号,向外以多个不同容器的方式提供多个服务。

1
2
3
4
5

sudo docker run -d -p 80:80 --name nginx-proxy \
-v /var/run/docker.sock:/tmp/docker.sock:ro \
jwilder/nginx-proxy

安装gitlab

1
2
3
4
5
6
7
8
9
10
11
12
13
14

mkdir -p /srv/gitlab

sudo docker run -d --privileged \
--env GITLAB_OMNIBUS_CONFIG="external_url 'http://gitlab.jajabjbj.top/'" \
--env VIRTUAL_HOST=gitlab.jajabjbj.top \
--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


1
2
3
4
5
6
7
8
# pages 服务
gitlab_rails['lfs_enabled'] = true

pages_external_url 'http://gitlab.jajabjbj.top'

gitlab_rails['pages_path'] = "/tmp/pages"

gitlab_rails['lfs_enabled'] = true

安装并添加 gitlab-runner

docker 镜像运行方式

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

在gitlab 上创建一个项目,打开项目CI设置,在项目里面添加一个 gitlab-runner

添加界面会提供一个「gitlab-ci token」: UbK4qdLj1hvBsVxTSUJ5

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
  
> docker exec -it gitlab-runner bash
> gitlab-ci-multi-runner register \
--docker-volumes /var/run/docker.sock:/var/run/docker.sock \
--docker-privileged

Running in system-mode.

Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
http://gitlab.jajabjbj.top/
Please enter the gitlab-ci token for this runner:
UbK4qdLj1hvBsVxTSUJ5
Please enter the gitlab-ci description for this runner:
[4857c90d8789]: mac-docker
Please enter the gitlab-ci tags for this runner (comma separated):

Whether to lock the Runner to current project [true/false]:
[true]: false
Registering runner... succeeded runner=UbK4qdLj
Please enter the executor: shell, ssh, docker+machine, docker, docker-ssh, parallels, virtualbox, docker-ssh+machine, kubernetes:
docker
Please enter the default Docker image (e.g. ruby:2.1):
node
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!

注意

gitlab-ci 中要使用docker in docker 时, 必须在gitlab-ci.yml 中添加 docker:dind :

1
2
3
image: docker:latest
services:
- docker:dind