Gitlab通过drone持续集成

Posted by 聪少 on 2018-08-07

最近在研究容器云方面的知识,顺势研究了一下cicd方面的知识,
持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。
好处多多,这里就不一一列举,有兴趣出门右转google!
下面主要介绍一下Drone与Gitlab集成使用。

Docker安装

自行Google

Gitlab

简介

GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。

安装

创建脚本:

1
touch run.sh

将下面内容拷贝进去

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

#! /bin/bash
mkdir /root/gitlab
cd /root/gitlab
mkdir config
mkdir data
mkdir logs
sudo docker run -d \
-p 8088:8088 \
--name gitlab \
--publish 8929:80 --publish 2289:22 \
--env GITLAB_OMNIBUS_CONFIG="external_url 'http://10.77.0.129:8088/'; gitlab_rails['lfs_enabled'] = true;" \
-v $PWD/config:/etc/gitlab \
-v $PWD/logs:/var/log/gitlab \
-v $PWD/data:/var/opt/gitlab \
gitlab/gitlab-ee:latest
注意: 上面的IP地址换成自己本机的IP地址

赋执行权限并执行

1
chmod +x run.sh; ./run.sh

观察日志并耐心等待。。。 (大概两分钟左右吧)

1
docker logs -f gitlab

注册自己的账号

gitlab

授权

点击账户下的 Settings->Applications 根据下图依次设置
gitlab2

gitlab3

注意: Redirect URI组成是 droneurl+/authorize,我的drone地址为http://10.77.0.129。所以这里我填写http://10.77.0.129/authorize

gitlab4

创建测试工程

简单测试工程,里面包换一个main.go和一个.drone.yml(drone cicd依赖脚本)文件

gitlab5
main.go

1
2
3
4
5
6
7
8
9
package main

import (
"fmt"
)

func main() {
fmt.Println("I'm ok!")devops
}

.drone.yml

1
2
3
4
5
6
7
pipeline:
build:
image: golang
commands:
# - go get
- go build
- go test

到这里Gitlab暂时告一段落。

Drone

介绍

Drone 是一个轻量级,为容器构建的强大的持续交付平台。 Drone 以 Docker 镜像的方式在 Dockerhub 上打包和发布。

安装

1
touch docker-compose.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
version: '2'

services:

drone-server:
image: drone/drone:0.8

ports:
- 80:8000
- 9000
volumes:
- /var/lib/drone:/var/lib/drone/
restart: always
environment:
- DRONE_OPEN=true
# Drone地址,此处不要加端口,端口映射在上面port中设置
- DRONE_HOST=http://10.77.0.129
- DRONE_GITLAB=true
# gitlab授权拷贝过来(不要用我这里的)
- DRONE_GITLAB_CLIENT=8a51041eabe5bd80973b0a6be5b6bbd281c31790278c1a8ed87371f83673bc9b
- DRONE_GITLAB_SECRET=1456caaee04a1e37bd64af2e4fc5f60b068a1c7b9d68953221a033f5518bbaae
# gitlab地址
- DRONE_GITLAB_URL=http://10.77.0.129:8088
- DRONE_GITLAB_SKIP_VERIFY=true
# 通信密钥,随便写,要和下面drone-agent里面保持一致
- DRONE_SECRET=scc123scc

drone-agent:
image: drone/agent:0.8

restart: always
depends_on:
- drone-server
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
- DRONE_SERVER=drone-server:9000
- DRONE_SECRET=scc123scc
- DOCKER_API_VERSION=1.24
1
docker-compose up -d

drone1
drone2

登陆

访问http://10.77.0.129会自动跳出gitlab授权页面

cicd1

Failed to activate your repository! 这个错误需要使用gitlab root账号去设置里面勾选一下
Outbound requests
Expand
Allow requests to the local network from hooks and services.如下图:

drone_gitlab_set_2
drone_gitlab_3

ci测试

随意修改一下代码提交一次触发自动构建

cicd2

OK!到这里就差不多了,祝你成功!!!!😂