Drone Gogs自动构建

前提条件

  • 1、安装 Docker、Docker-Compose

安装Gogs、Drone

  • 将以下代码复制到新建的docker-compose.yml文件中,执行启动命令:docker-compose up -d

  • 该docker-compose启动Drone的是一个以Sqlite做为存储数据库,可选配mysql,postgres可根据自己情况进型配置,见文档

    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
    version: '2'

    services:
    gogs:
    image: registry.saas.hand-china.com/tools/gogs:latest
    ports:
    - "10022:22"
    - 10080:3000
    volumes:
    - /vagrant/gogs-data:/data
    restart: always
    mysql:
    image: registry.saas.hand-china.com/tools/mysql:5.7.12
    ports:
    - 3306:3306
    volumes:
    - /vagrant/mysql-data:/var/lib/mysql
    restart: always
    environment:
    - MYSQL_ROOT_PASSWORD=root
    - MYSQL_DATABASE=gogs
    drone-server:
    image: registry.saas.hand-china.com/tools/drone:0.5
    ports:
    - 80:8000
    volumes:
    - /var/lib/drone:/var/lib/drone
    restart: always
    environment:
    # 开启注册,此配置允许任何人自注册和登录系统
    - DRONE_OPEN=true
    # 设置管理员用户
    - DRONE_ADMIN=adminuser
    # 开启Gogs驱动
    - DRONE_GOGS=true
    # Gogs服务器地址
    - DRONE_GOGS_URL=http://192.168.56.21:10080
    # 此SECRET为任意值
    - DRONE_SECRET=handhand
    drone-agent:
    image: registry.saas.hand-china.com/tools/drone:0.5
    command: agent
    restart: always
    depends_on: [ drone-server ]
    volumes:
    - /var/run/docker.sock:/var/run/docker.sock
    environment:
    # Drone Server 地址
    - DRONE_SERVER=ws://192.168.56.21/ws/broker
    # 与Drone Server一致即可
    - DRONE_SECRET=handhand
  • Mysql启动成功后,将gogs数据库设置为UTF-8格式。

  • Gogs启动成功后,即可通过浏览器访问,第一次进入时按提示设置信息即可。

  • Drone启动成功后,即可通过浏览器访问,使用Gogs账号登录,找到项目开启管理即可。


    上图配置了名为demo项目触发Push事件时进行自动构建。

安装Drone CLI

  • 在Linux系统上安装

    1
    2
    wget http://downloads.drone.io/release/linux/amd64/drone.tar.gz | tar zx
    sudo install -t /usr/local/bin drone
  • 设置用户认证

    1
    2
    3
    4
    # drone-server地址
    export DRONE_SERVER=http://192.168.56.21
    # token刚才drone的管理界面account中点show_token
    export DRONE_TOKEN=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0ZXh0IjoiYWRtaW51c2VyIiwidHlwZSI6InVzZXIifQ.p2KhqJ-hl7lVdWawKtowBucWRANmYLv6ZqY64-gE660

自动构建yml文件配置

  • 在项目根路径新建.drone.yml文件,添加以下代码进行测试

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    workspace:
    base: /go
    path: src/192.168.56.21/adminuser/demo

    pipeline:
    build:
    image: registry.saas.hand-china.com/tools/golang:latest
    commands:
    - go get
    - go build
    #- go test

    services:
    postgres:
    image: registry.saas.hand-china.com/tools/postgres:9.4.5
    environment:
    - POSTGRES_USER=myapp
  • 此时Push代码到项目时,就会触发Drone进行自动构建了。

setzero wechat