logo头像
Snippet 博客主题

gogs-drone自动化部署

第一步docker 部署

docker 安装

docker-compose 安装

第二步 gogs drone compose 文件下载

https://github.com/alicfeng/gogs-drone-docker.git

cd gogs-drone-docker

1
docker-compose up -d

启动完之后配置

  1. gogs 地址 : http://ip:3000/

    gogs类似gitlab,做代码管理的工具,刚开始安装的时候你需要自己创建帐号密码,然后把自己的项目推送到环境上去。

upload successful

需要查看下钩子能否推送到drone这边,有可能配置错误,导致推送不成功。点击编辑里面有一个测试推送的设置,默认hook是不需要鉴权的。

upload successful

  1. drone 的默认地址: http://ip:8000/

upload successful

当gogs配置好之后,drone 默认基本不需要变动,不过服务器的配置可以在drone里面去配置,可以在.drone.yml里面写死,但是不如在drone配置可以统一管理和保密。

go 部署的文件配置

下面的 host ,password 等就是在drone 工程里面配置的变量

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
52
53
54
55
56
57
58
59
60
61
kind: pipeline
name: code_manager_backstage
workspace:
base: /var/goproject/src
path: code_manager_backstage

steps:
- name: build
image: golang:1.14.4
environment:
GOOS: linux
GOARCH: amd64
commands:
- export GOPATH=/var/goproject
- export PATH=$PATH:$GOROOT/bin
- go env -w GO111MODULE=on
- go env -w GOPROXY=https://goproxy.io,direct
- go version
- go env
- go mod tidy
- go mod vendor
- go build -i -o bin/code_manager_backstage main.go
- name: deploy_server
image: appleboy/drone-scp
settings:
host:
from_secret: host
port:
from_secret: port
username:
from_secret: username
password:
from_secret: password
target:
from_secret: target
source: ./bin
rm: false
when:
branch:
- master
- name: run
image: appleboy/drone-ssh
settings:
host:
from_secret: host
port:
from_secret: port
username:
from_secret: username
password:
from_secret: password
command_timeout: 2m
script:
- cd /generatecode/code_manager_backstage
- rm -rf code_manager_backstage
- cp bin/code_manager_backstage code_manager_backstage
- ./restart.sh
- nohup ./code_manager_backstage 1>/code_manager_backstage/log/nohup`date +%Y-%m-%d`.log 2>&1 &
trigger:
branch:
- master

遇到的问题

  1. Gogs Webhook to Drone is Failing With HTTP 400 Errors

从gogs hook推送到drone 失败, 因为密码文本被修改,修改。
需要:

1
2
3
remove the hook from Gogs
disable the repository in Drone
re-enable the repository in Drone