基于gogs和drone的一个轻量级的开发部署自动化流程

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 协议》,转载必须注明作者和本文链接
Make everything simple instead of making difficulties as simple as possible
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!