天天看點

Gogs+Drone搭建CI/CD平台過程

Gogs 是由 Go 語言編寫的 Git 伺服器,由中國人主導開發的一款開源項目,搭建友善并且擁有完善的中文文檔,配合 Drone 可以實作持續內建/持續部署。本文介紹如何通過 Docker 搭建 Gogs+Drone 環境。

環境

linux
Docker && docker-compose
           

部署

  1. 建立目錄(不是必須的,可以放在任何目錄裡面)
mkdir drone
cd drone
mkdir gogs drone # 存放相關資料
           
  1. 編寫 docker-compose.yaml
version: "2"
services:
  gogs:
    container_name: gogs
    image: gogs/gogs:0.11.86
    ports:
      - 3000:3000
      #- 22:22
    volumes:
      - ./gogs/data:/data
    environment:
      - TZ=Asia/Shanghai
    restart: always

  drone-server:
    image: drone/drone:1.2.1
    container_name: drone-server
    ports:
      - 8000:80
      - 443:443
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./drone/:/var/lib/drone
    environment:
      - DRONE_DEBUG=true
      - DRONE_OPEN=true
      - DRONE_LOGS_TRACE=true
      - DRONE_GIT_ALWAYS_AUTH=false
      - DRONE_AGENTS_ENABLED=true
     
      - DRONE_SERVER_HOST=drone-server
      - DRONE_SERVER_PROTO=http
      - DRONE_RPC_SECRET=${SECRET}

      - DRONE_PROVIDER=gogs
      - DRONE_GOGS=true
      - DRONE_GOGS_SKIP_VERIFY=false
      - DRONE_GOGS_SERVER=http://gogs:3000

      - DRONE_USER_CREATE=username:${ACCOUNT},admin:true
      - DRONE_DATABASE_DATASOURCE=/var/lib/drone/drone.sqlite
      - DRONE_DATABASE_DRIVER=sqlite3
      - TZ=Asia/Shanghai
    restart: always

  drone-agent:
    image: drone/agent:1.2.1
    container_name: drone-agent
    depends_on:
      - drone-server
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - DRONE_DEBUG=true
      - DRONE_MAX_PROCS=5
      # 内部配置設定ip
      - DOCKER_HOST=tcp://docker-bind:2375
      - DRONE_RPC_SERVER=http://drone-server:80
      - DRONE_RPC_SECRET=${SECRET}

      - TZ=Asia/Shanghai
    restart: always

  docker-bind:
     image: docker:dind
     privileged: true
     command: --storage-driver=overlay

           

在目前目錄下建立 .env 檔案,内容根據實際情況填寫

account 注意:gogs安裝過程中會有新增賬號,注意這個賬号和這個要相同
SECRET=123456
ACCOUNT=xxx
           
  1. 運作

    docker-compose up -d

    待啟動完成之後,通路Gogs(ip/域名:3000),進入安裝界面

    Install

    資料庫類型按照實際環境選擇,本文采用 SQLite3 方式。将域名和應用 URL 中的 IP/域名 換成本地 IP/域名,然後安裝,其餘不用修改,安裝成功之後,新增賬號

賬号填寫 .env 檔案中配置的賬号

注冊的賬号同樣可以在Drone(ip/域名:8000)中登入。

  1. 測試

    建立一個 demo 項目并送出到 git 倉庫,登入Drone,同步并激活倉庫

    回到gogs,點選倉庫設定->管理web鈎子,此時自動生成了一個鈎子,測試

在你的項目根目錄,添加.drone.yml 檔案,

Gogs+Drone搭建CI/CD平台過程

并寫入内容如下

kind: pipeline
name: greeting

steps:
- name: demo
  image: alpine
  commands:
  - echo Hello World
           
注意,沒有.drone.yml檔案,web鈎子測試将會失敗

另附參考:

https://segmentfault.com/a/1190000023161472
           

後記:推送是已經沒問題了,可是drone的ACTIVITY FEED

的記錄始終是pending狀态,百度了下,資料少的可憐,暫時沒解決!法克爾!!!