CICD初探(一)Gitlab通过drone持续集成

CICD初探(一)Gitlab通过drone持续集成

Tue Aug 7, 2018

1000 Words|Read in about 2 Min
Tags: devops  

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

Docker安装

自行Google

Gitlab

简介

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

安装

创建脚本:

touch run.sh

将下面内容拷贝进去


#! /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地址

赋执行权限并执行

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

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

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

package main

import (
	"fmt"
)

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

.drone.yml

pipeline:
  build:
    image: golang
    commands:
      # - go get
      - go build
      - go test

到这里Gitlab暂时告一段落。

Drone

介绍

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

安装

touch docker-compose.yml
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
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!到这里就差不多了,祝你成功!!!!😂

See Also

Tue Aug 7, 2018

1000 Words|Read in about 2 Min
Tags: devops