搭建环境
ip | 角色 |
---|---|
10.0.7.20 | Gitea |
10.0.7.40 | drone server/runner |
搭建Gitea
本文采用docker方式搭建
cat docker-compose.yaml
version: "3"
networks:
gitea:
external: false
services:
server:
image: gitea/gitea:latest
container_name: gitea
environment:
- USER_UID=1000
- USER_GID=1000
- DB_TYPE=mysql
- DB_HOST=db:3306
- DB_NAME=gitea
- DB_USER=gitea
- DB_PASSWD=gitea
restart: always
networks:
- gitea
volumes:
- ./gitea:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "3000:3000"
- "222:22"
depends_on:
- db
db:
image: mysql:8
restart: always
environment:
- MYSQL_ROOT_PASSWORD=gitea
- MYSQL_USER=gitea
- MYSQL_PASSWORD=gitea
- MYSQL_DATABASE=gitea
networks:
- gitea
volumes:
- mysql_db:/var/lib/mysql
volumes:
mysql_db:
运行Gitea
docker-compose up -d
查看运行结果
[root@10 gitea]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a3f073d7d034 gitea/gitea:latest "/usr/bin/entrypoint…" 42 seconds ago Up 11 seconds 0.0.0.0:3000->3000/tcp, :::3000->3000/tcp, 0.0.0.0:222->22/tcp, :::222->22/tcp gitea
8db614e594b5 mysql:8 "docker-entrypoint.s…" 42 seconds ago Up 41 seconds 3306/tcp, 33060/tcp
设置及访问web页面
http://10.0.7.20:3000
服务器地址填写
管理员账号设置
管理员账号登陆
创建git仓库
配置Gitea
创建管理 OAuth2 应用程序
配置webhook
Drone server及runner搭建
配置server/runner
[root@10 drone]# cat docker-compose.yaml
version: "3"
networks:
drone:
volumes:
drone_data:
services:
server:
image: drone/drone
container_name: drone
restart: always
environment:
- DRONE_GITEA_SERVER=http://10.0.7.20:3000
- DRONE_GITEA_CLIENT_ID=f5028918-5a2c-4db7-9f07-5f78c56bb11e ###(客户端ID)
- DRONE_GITEA_CLIENT_SECRET=YKXuTXorxZw3MVswjg1dUJyPLEcitLdZ3vC3jAuPVXah ####(客户端秘钥)
- DRONE_RPC_SECRET=super-duper-secret
- DRONE_SERVER_HOST=10.0.7.40 ####(drone服务器地址)
- DRONE_SERVER_PROTO=http ###(http协议)
- DRONE_GIT_ALWAYS_AUTH=true
- DRONE_GIT_USERNAME=(gitea-应用-tokens用户)
- DRONE_GIT_PASSWORD=(gitea-应用-tokens用户令牌)
- DRONE_USER_CREATE=username:root,admin:true,,token:55f24eb3d61ef6ac5e83d550178638dc (用于生成admin管理员,用于docker容器挂载本地文件使用,否则无法挂载提示untrusted repositories cannot mount host volumes)
- TZ=Asia/Shanghai
ports:
- "80:80"
- "443:443"
volumes:
- drone_data:/data
networks:
- drone
runner:
image: drone/drone-runner-docker
container_name: runner
restart: always
environment:
- DRONE_RPC_PROTO=http
- DRONE_RPC_HOST=10.0.7.40
- DRONE_RPC_SECRET=super-duper-secret ####(与server端一致即可)
- DRONE_RUNNER_CAPACITY=4
- DRONE_RUNNER_NAME=runner
- TZ=Asia/Shanghai
- DRONE_DEBUG=true
- DRONE_TRACE=true
#- DRONE_UI_USERNAME=root
#- DRONE_UI_PASSWORD=
ports:
- "3000:3000"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
networks:
- drone
depends_on:
- server
ssh: ####(drone 用户支持ssh 管道服务)
image: drone/drone-runner-ssh
container_name: ssh
restart: always
environment:
- DRONE_RPC_PROTO=http
- DRONE_RPC_HOST=10.0.7.40
- DRONE_RPC_SECRET=super-duper-secret
ports:
- "4000:3000"
networks:
- drone
启动
访问drone
http://10.0.7.40
测试Gitea-webhook
测试gieta we-hook
关于webhook失败问题解决方法(补充说明)
需要在gitea中配置允许webhook的ip
修改映射出来的gitea/conf/app.ini,添加以下内容
[webhook]
ALLOWED_HOST_LIST = 10.0.7.0/16
Drone 使用docker管道实例
1. 查看gitea及drone
2. 创建并提交.drone.yaml
[root@10 project]# ls -al
总用量 8
drwxr-xr-x 3 root root 53 8月 25 16:57 .
drwxr-xr-x. 5 root root 54 8月 25 15:15 ..
-rw-r--r-- 1 root root 125 8月 15 16:22 .drone.yml
drwxr-xr-x 8 root root 166 8月 25 16:57 .git
-rw-r--r-- 1 root root 12 8月 25 15:49 README.md
cat .drone.yml
kind: pipeline
type: docker
name: default
steps:
- name: greeting
image: alpine
commands:
- echo hello
- echo world
3. 查看运行结果
git执行fiirt commit 提交后,drone执行指定命令成功
4. 用户界面展示
若没有上图这个选项则说明并未使用admin用户。请参考上面drone的compose文件重新设置。
Drone 使用命令行管道实例
1. 安装drone-runner-exec
需要在runner所在服务器(10.0.7.40)上安装 drone-runner-exec
方式一
curl -L https://github.com/drone-runners/drone-runner-exec/releases/latest/download/drone_runner_exec_linux_amd64.tar.gz | tar zx
sudo install -t /usr/local/bin drone-runner-exec
方式二
浏览器地址栏输入https://github.com/drone-runners/drone-runner-exec/releases/latest/download/drone_runner_exec_linux_amd64.tar.gz
下载成功后,将tar包上传到drone-runner所在服务器
执行:
tar -zxvf drone_runner_exec_linux_amd64.tar.gz -C /usr/sbin
[root@10 ~]# ls /usr/sbin/drone*
/usr/sbin/drone-runner-exec
配置drone-runner-exec 环境变量
mkdir /etc/drone-runner-exec
touch /etc/drone-runner-exec/config
vim /etc/drone-runner-exec/config (以下3个参数对照上述docker-compose文件填写)
DRONE_RPC_PROTO=http
DRONE_RPC_HOST=10.0.7.40
DRONE_RPC_SECRET=super-duper-secret
启动drone-runner-exec
drone-runner-exec service install
drone-runner-exec service start (启动命令)
drone-runner-exec service stop (停止命令)
注: exec问题谢谢网友分享,参考链接
https://blog.csdn.net/weixin_36766709/article/details/116795778
2. 更改并提交.drone.yaml
[root@10 project]# cat .drone.yml
kind: pipeline
type: exec
name: default
platform:
os: linux
arch: amd64
steps:
- name: greeting
commands:
- echo Linux yyds
3. 查看运行结果
Drone 使用ssh管道实例
之前部署drone server/runner dockr-compose文件中已经部署drone/drone-runner-ssh容器
1. 安装使用drone/drone-runner-ssh
2. 更改并提交.drone.yaml
1. 远程服务器地址10.0.7.0
在10.0.7.0 中创建 /tmp/drone_test.log
echo "third commit" >> /tmp/drone_test.log
2. 修改.drone.yaml
kind: pipeline
type: ssh
name: default
server:
host: 10.0.7.0
user: root
password: 1@3$qWeR
steps:
- name: greeting
commands:
- cat /tmp/drone_test.log
3.查看运行结果