背景
之前搭建了gitea私仓,使用了两年多时间,最近打算搭建个ci,提高自己代码的质量。搭建可以参考:
https://www.zeekling.cn/articles/2020/02/23/1582470250287.html
前期准备
创建OAuth2应用
在应用下面面创建OAuth2,输入自己drone需要使用的域名和login地址:
提交之后可以看到生成的密钥等信息:
创建共享Secret
执行下面命令生成共享Secret:
openssl rand -hex 16
bea26a2221fd8090ea38720fc445eca6
下载安装镜像
执行下面命令安装镜像,设计到的几个参数需要注意:
- DRONE_GITEA_SERVER:gitea地址。
- DRONE_GITEA_CLIENT_ID:客户端id,第一步配置产生的。
- DRONE_GITEA_CLIENT_SECRET:客户端密钥,第一步配置产生的。
- DRONE_RPC_SECRET:客户端密钥,上一步生成的。
- DRONE_RPC_HOST:drone的域名,可以使用ip。
#!/bin/bash
docker pull drone/drone:2
docker stop drone
docker rm drone
docker run -d --name=drone \
--env=DRONE_GITEA_SERVER=https://git.zeekling.cn \
--env=DRONE_GITEA_CLIENT_ID=客户端ID \
--env=DRONE_GITEA_CLIENT_SECRET=客户端密钥 \
--env=DRONE_RPC_SECRET=bea26a2221fd8090ea38720fc445eca6 \
--env=DRONE_SERVER_HOST=doc.zeekling.cn \
--env=DRONE_SERVER_PROTO=https \
--publish=9080:80 \
--publish=8443:443 \
--restart=always \
--detach=true \
drone/drone:2
docker pull drone/drone-runner-docker:linux-amd64
docker stop drone-runner
docker rm drone-runner
docker run -d --name=drone-runner \
--link drone:drone \
-p 9030:3000 \
--env=DRONE_RPC_PROTO=https \
--env=DRONE_RPC_HOST=doc.zeekling.cn \
--env=DRONE_RPC_SECRET=bea26a2221fd8090ea38720fc445eca6 \
--env=DRONE_RUNNER_CAPACITY=2 \
-v /var/run/docker.sock:/var/run/docker.sock \
drone/drone-runner-docker:linux-amd64
安装drone-runner-exec
参照https://docs.drone.io/runner/exec/installation/linux/安装。
配置drone
打开drone地址:https://doc.zeekling.cn/
登录成功之后找到需要添加ci的项目,点击active;
配置下面信息:
新增.drone.yml
文件,配置如下:
kind: pipeline
type: docker
name: default
steps:
- name: build
image: maven
volumes:
- name: cache
path: /root/.m2
commands:
- mvn clean install -DskipTests
trigger:
branch:
- master
event:
- pull_request
- push
volumes:
- name: cache
host:
path: /root/.m2
提交代码,提交mr会开始跑ci,等待代码合入之后也会重新跑ci。