基於gogs和drone的一個輕量級的開發部署自動化流程

jcc123發表於2022-08-14

install

git clone https://github.com/wpjscc/gogs-drone
sudo docker-compose up

訪問

gogs 127.0.0.1:3000

drone 127.0.0.1:8000

賬號密碼通用

安裝 exec-pipes

官網

下面是 linux的可以直接用

mkdir /etc/drone-runner-exec
mkdir /var/log/drone-runner-exec

vi /etc/drone-runner-exec/config
DRONE_RPC_PROTO=http
DRONE_RPC_HOST=127.0.0.1:8000
DRONE_RPC_SECRET=gjO9kVnS7PdixaGF
DRONE_LOG_FILE=/var/log/drone-runner-exec/log.txt


./drone-runner-exec service install
./drone-runner-exec service start

# 驗證安裝成功
cat /var/log/drone-runner-exec/log.txt

新建一個倉庫

可以參考 github.com/wpjscc/gogs-drone-nginx

裡面是一個很簡單的例子,部署了一個nginx

進入 127.0.0.1:8000

點選同步

1

下面會出現一個剛新建的倉庫

點選進入

開啟這個專案

1

接下來進入到gogs的管理web鉤子,那裡會出現一個連結(剛上方點選開啟後會這個連結會自動同步到這裡),點選那個連結

1

點選測試推送,就可以在drone裡看到一個任務在執行了

1

執行成功後

訪問 127.0.0.1:8080

就可以看到nginx的歡迎頁面了

1

done

配置檔案說明

---
kind: pipeline
type: exec
name: default

platform:
  os: linux
  arch: amd64

steps:
- name: build
  commands:
  - docker run -d -p 8080:80  nginx

其中的

docker run -d -p 8080:80  nginx

可以換成任何你想要的命令,最終會執行宿主主機上。

方案分享

我的方案是這樣的。

我本地有一臺閒置的電腦,除了上方的軟體外,還安裝了

我的配置檔案是這樣的.drone.yml

---
kind: pipeline
type: exec
name: default

platform:
  os: linux
  arch: amd64

steps:
- name: build
  commands:
  - dep deploy -vv

根目錄會有一個deployer.php檔案,.drone.yml就不用動了,只需在deploer.php中寫部署邏輯即可。

我在 deployer.php 裡實現了打包docker鏡象,然後釋出到k8s中。也可以手動執行釋出,不依賴於自動打包環境

dep deploy -vvv

openvpn 用於遠端訪問。

gogs,我只是用它中轉到drone,實際程式碼還是儲存在gitee或github中,可以配置下.git/config

[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
        ignorecase = true
        precomposeunicode = true
[remote "origin"]
        url = 倉庫1
        url = 倉庫2
        fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
        remote = origin
        merge = refs/heads/master

這樣就可以觸發drone構建了

本作品採用《CC 協議》,轉載必須註明作者和本文連結
NOT IS BECAUSE I WANT TO WRITE, BUT I WANT TO INCREASE, SO I GO TO WRITE~~

相關文章