最近想在自己机器上面搭建一个CI/CD
系统,发现Drone
比较好用。(之前尝试过gitlab
,这个东西太占电脑的资源了,运行几分钟,就报资源不足了)
这篇文章是基于MacOS
搭建的,因为Linux
上面搭建网络问题比较好解决,所以就不给出Linux
下的模板了。
这里就直接给出docker-compose.yml
的配置:
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 62 63 64 65 66
| version: '3'
services: gitea: image: gitea/gitea:latest ports: - "3000:3000" - "22:22" volumes: - ./gitea-data:/data
drone_server: image: drone/drone:latest container_name: drone_server ports: - 8080:80 restart: always depends_on: - gitea environment: - DRONE_GITEA_SERVER=http://host.docker.internal:3000 - DRONE_GITEA_CLIENT_ID=48515522-4a19-4d5b-86e6-2a1269338829 - DRONE_GITEA_CLIENT_SECRET=Z02uD6kHYerX8FnZY2gRUDpJx3IqTHTriIVuZsVpuGNe - DRONE_RPC_SECRET=7a5fe2cad36b1d69f443c9aad4761bbe - DRONE_SERVER_HOST=host.docker.internal:8080 - DRONE_SERVER_PROTO=http - DRONE_USER_CREATE=username:codinghuang,admin:true - DRONE_GITEA_SKIP_VERIFY=true - DRONE_LOGS_TRACE=true - DRONE_AGENTS_ENABLED=true - DRONE_COOKIE_SECRET=correct-horse-battery-staple - DRONE_GIT_ALWAYS_AUTH=true
drone_runner: image: drone/drone-runner-docker:latest container_name: drone_runner ports: - 7080:3000 restart: always depends_on: - drone_server volumes: - /var/run/docker.sock:/var/run/docker.sock environment: - DRONE_RPC_PROTO=http - DRONE_RPC_HOST=host.docker.internal:8080 - DRONE_RPC_SECRET=7a5fe2cad36b1d69f443c9aad4761bbe - DRONE_RUNNER_CAPACITY=2 - DRONE_RUNNER_NAME=drone-runner-1 - DRONE_LOGS_TRACE=true
|
然后按照以下步骤即可完成搭建。
配置hosts
1
| 127.0.0.1 host.docker.internal
|
使用方法
配置gitea
创建容器
1
| docker-compose up -d gitea
|
初始化gitea网站信息
然后访问gitea
网站
此时会进入gitea
的初始化界面,我们需要把localhost
全部换成host.docker.internal
,然后确认配置即可。如果点击确认后跳转到登陆界面失败,那么我们可以手动在浏览器里面输入http://host.docker.internal:3000/
访问gitea
网站。接着,注册一个用户即可。
授权的 OAuth2 应用
点击 “设置” -> “应用”。然后在 “管理 OAuth2 应用程序” 这一栏里面填写”应用名称”和”重定向 URI”,其中”应用名称”可以随便填,”重定向 URI”必须填写:
1
| http://host.docker.internal:8080/login
|
填写完点击确认之后,会得到 “客户端ID” 和 “客户端密钥”,这两个得记下来,然后分别填写到docker-compose.yml
里面的DRONE_GITEA_CLIENT_ID
和DRONE_GITEA_CLIENT_SECRET
这两个环境变量里面。
启动drone服务
接着,访问Drone
的管理网站,第一次进入需要授权,点击授权,输入刚才注册的gitea
用户名和密码。
然后,在gitea
里面随便上传一个项目,然后刷新Drone
网站,将会发现项目被同步到里面来了。