Fork me on GitHub

Gitlab之Gitlab-CI体验

Gitlab-CI体验

GitLab CI介绍

持续集成(CI):通常使用CI来做一些自动化工作,比如程序的打包,单元测试,部署等,这种构建方式避免了打包环境差异引起的错误,提高了工作效率。
GitLab-CI是GitLab官方提供的持续集成服务,我们可以在仓库的根目录下新建.gitlab-ci.yml文件,自己定义持续集成流程模板,并且在GitLab中配置runner,在之后的每次提交合并中将会触发构建,并且可以通过GitLab的hook, 在代码提交的各个环节自动地完成一系列的构建工作,总之对于一些非复杂性的集成需求,都是可以满足的。

环境说明

系统信息

1
2
3
4
5
6
# cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)
# uname -r
3.10.0-327.el7.x86_64
# uname -m
x86_64

Docker版本信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# docker version
Client:
Version: 17.06.2-ce
API version: 1.30
Go version: go1.8.3
Git commit: cec0b72
Built: Tue Sep 5 19:59:06 2017
OS/Arch: linux/amd64

Server:
Version: 17.06.2-ce
API version: 1.30 (minimum version 1.12)
Go version: go1.8.3
Git commit: cec0b72
Built: Tue Sep 5 20:00:25 2017
OS/Arch: linux/amd64
Experimental: false

其他应用信息

1
2
3
4
5
6
7
8
9
GitLab 10.3.3

# gitlab-runner -v
Version: 10.3.0
Git revision: 5cf5e19a
Git branch: 10-3-stable
GO version: go1.8.5
Built: Fri, 22 Dec 2017 08:47:19 +0000
OS/Arch: linux/amd64

GitLab部署

1
2
3
4
5
6
7
8
9
10
docker run --detach \
--hostname linux-node8.example.com \
--env GITLAB_OMNIBUS_CONFIG="external_url 'http://192.168.200.108/'; gitlab_rails['gitlab_shell_ssh_port'] = 2289;" \
--publish 443:443 --publish 80:80 --publish 2289:2289 \
--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

注释:根据环境差异替换external_url及publish端口即可,注意映射端口和external_url的一致性

初次登录设置用户密码
设置密码:12345678(8位字符)

登录界面
默认管理用户为root

登录主界面

Gitlab-Runner部署

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

GitLab注册Runner

获取基础信息


根据提示获取注册runner时的必要信息URL及Token

配置runner

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 ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9eddd011fa8e gitlab/gitlab-runner:latest "/usr/bin/dumb-ini..." 2 minutes ago Up 2 minutes gitlab-runner
62efad621e50 gitlab/gitlab-ce:latest "/assets/wrapper" 15 minutes ago Up 15 minutes (healthy) 0.0.0.0:443->443/tcp, 22/tcp, 0.0.0.0:2289->2289/tcp, 0.0.0.0:8080->80/tcp gitlab
# docker exec -it 9eddd011fa8e sh
# gitlab-runner register
Running in system-mode.

Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
http://192.168.200.108/
Please enter the gitlab-ci token for this runner:
b7kHJBwHQeNdzHy4eFxo
Please enter the gitlab-ci description for this runner:
[9eddd011fa8e]:
Please enter the gitlab-ci tags for this runner (comma separated):
one-runner
Whether to run untagged builds [true/false]:
[false]:
Whether to lock the Runner to current project [true/false]:
[true]:
Registering runner... succeeded runner=LmehsQ2K
Please enter the executor: parallels, ssh, shell, virtualbox, docker+machine, docker-ssh+machine, kubernetes, docker, docker-ssh:
shell
Runner registered successfully. Feel free to start it, but if it\'s running already the config should be automatically reloaded!

GitLab查看注册runner信息

再次修改runner配置

实践案例讲解

创建Groups

创建Projects

创建Users

由于没有配置Email,无法直接创建用户,需要注册用户

配置项目

给用户授权

添加.gitlab-ci.yml配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
[root@linux-node8 ~]# git clone http://192.168.200.108/php/sa_project1.git
Cloning into 'sa_project1'...
Username for 'http://192.168.200.108': madongsheng
Password for 'http://[email protected]':
warning: You appear to have cloned an empty repository.
[root@linux-node8 ~]# cd sa_project1/
[root@linux-node8 sa_project1]# touch README.md
[root@linux-node8 sa_project1]# git add README.md
[root@linux-node8 sa_project1]# git commit -m "add README"
[master (root-commit) d4d50a9] add README
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 README.md
[root@linux-node8 sa_project1]# git push -u origin master
Username for 'http://192.168.200.108': madongsheng
Password for 'http://[email protected]':
Counting objects: 3, done.
Writing objects: 100% (3/3), 215 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To http://192.168.200.108/php/sa_project1.git
* [new branch] master -> master
Branch master set up to track remote branch master from origin.
[root@linux-node8 sa_project1]# cat .gitlab-ci.yml
stages:
- build
- test
- deploy

build:
stage: build
script:
- echo "build"
tags:
- one-runner

test:
stage: test
script:
- echo "test"
tags:
- one-runner

deploy:
stage: deploy
script:
- echo "deploy"
tags:
- one-runner
[root@linux-node8 sa_project1]# git add .gitlab-ci.yml
[root@linux-node8 sa_project1]# git commit -m 'add .gitlab-ci.yml'
[master 31438ad] add .gitlab-ci.yml
1 file changed, 25 insertions(+)
create mode 100644 .gitlab-ci.yml
[root@linux-node8 sa_project1]# git push -u origin master
Username for 'http://192.168.200.108': madongsheng
Password for 'http://[email protected]':
Counting objects: 4, done.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 402 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To http://192.168.200.108/php/sa_project1.git
d4d50a9..31438ad master -> master
Branch master set up to track remote branch master from origin.

验证结果



参考资料

GitLab-Runner官网资料
.gitlab-ci.yml配置

======================================================
希望各位朋友支持一下

本文作者:dongsheng
本文地址https://mds1455975151.github.io/archives/c46f1d68.html
版权声明:转载请注明出处!

坚持技术分享,您的支持将鼓励我继续创作!