跳到主要内容

部署gitea+drone

部署gitea

docker run -itd \
-p 8080:3000 \
-p 8022:22 \
-v ~/gitea:/data \
--name gitea \
gitea/gitea

使用以上的命令可以将 gitea 服务部署在宿主机的 8080 端口上

相关的数据文件映射到 ~/gitea 目录中, 方便日后可能会出现的修改

配置gitea

初次打开gitea时需要先配置一些东西

第一步 先确认数据库

支持 MySQL,PostgreSQL,MSSQL,SQLite3 三种数据库

gitea-db

为了方便, 我一般选择使用 SQLite3, 省的多部署一个数据库服务

第二步 确认服务器设置

gitea-service

只建议修改以下配置

  • 站点名称: 浏览器打开时标签页显示的文字
  • 基础URL: 平时访问时使用的地址, 本文将服务开在了 8080 端口, 所以建议使用 http://localhost:8080/

由于我用容器启动的服务, 所以不需要考虑各种路径问题

第三步 可选设置

gitea-last

建议只填写一个 管理员账号 即可

配置应用

进入gitea之后点击右上角的用户,在下拉中选择设置

gitea-setting

在打开后的页面点击应用tab页

gitea-yy

然后填写最下方的 管理 OAuth2 应用程序

gitea-auth

这里的应用名称可以随便填, 只是个标识

下面的 重定向URI 非常重要, 格式必须是 {drone的地址}/login

待会要在 8081 端口上部署drone服务

这些填写好之后点击创建应用

gitea-copy

之后会切换到新的页面, 注意要把其中的 客户端ID客户端密钥 保存下来

部署drone

# gitea 的地址 必须保证在 drone 部署的机器上可以访问到
gitea_server="http://172.30.4.210:8080/"
# drone 的域名
drone_server="172.30.4.210:8081"
# http 或 https
drone_proto="http"
# admin 用户名
admin_user="root"
# openssl rand -hex 16 随机生成一个
drone_rpc_secret="ce6a54f5255f0f0851eab0899a9678ee"
# gitea 中配置的 客户端ID
drone_client_id="3255522c-6d75-44c9-ae4e-357f82c2de9c"
# gitea 中配置完应用之后会同时产生一个 secret 客户端密钥
client_secret="gto_wi3unbbltz2cyerd2jbiu2xu7ogeo7m2tjm2arwf2ydz5i57znta"

docker rm -f drone runner

docker run -itd \
-p 8081:80 \
-v ~/drone:/data \
-v /var/run/docker.sock:/var/run/docker.sock \
-e DRONE_GITEA_SERVER=${gitea_server} \
-e DRONE_GITEA_CLIENT_ID=${drone_client_id} \
-e DRONE_GITEA_CLIENT_SECRET=${client_secret} \
-e DRONE_RPC_SECRET=${drone_rpc_secret} \
-e DRONE_SERVER_HOST=${drone_server} \
-e DRONE_SERVER_PROTO=${drone_proto} \
-e DRONE_LOGS_TRACE=true \
-e DRONE_USER_CREATE=username:${admin_user},admin:true \
--restart=always \
--detach=true \
--name=drone \
drone/drone

docker run -itd \
-p 8082:3000 \
-v /var/run/docker.sock:/var/run/docker.sock \
-e DRONE_RPC_PROTO=${drone_proto} \
-e DRONE_RPC_HOST=${drone_server} \
-e DRONE_RPC_SECRET=${drone_rpc_secret} \
-e DRONE_RUNNER_CAPACITY=2 \
-e DRONE_RUNNER_NAME=${HOSTNAME} \
-e DRONE_LOGS_TRACE=true \
-e DRONE_AGENTS_ENABLED=true \
--restart always \
--name runner \
drone/drone-runner-docker

复制上面的简单脚本, 修改一下参数

  • drone_client_id: 之前保存的客户端ID
  • client_secret: 之前保存的客户端密钥
  • admin_user: 管理员登录的账户名称
  • gitea_server: gitea的地址
  • drone_server: drone的域名
  • drone_proto: drone的地址类型,http/https
  • drone_rpc_secret: rpc密钥, 可以用 openssl rand -hex 16 生成

执行脚本即可部署 drone + runner

备注

这里的 172.30.4.210 是本地docker的地址, 使用局域网地址也可以, 但是不能使用 localhost 127.0.0.1

然后浏览器访问 http://172.30.4.210:8081

drone-home

各个版本的drone可能会有点不一样, 如果和截图差不多的, 可以直接点击图中的按钮

如果不一样, 可以直接在浏览器中访问 http://172.30.4.210:8081/login

drone-auth

如果已经登录过 gitea,则会直接尝试获取授权, 点击确认即可

没登录的话输入账号密码登录即可

成功之后可能会有跳转, 各个版本可能会不同

不管这些可能的差异, 直接访问部署的 drone的地址 http://172.30.4.210:8081