diff --git a/content/stuff/drone部署和与gitea的集成.md b/content/stuff/drone部署和与gitea的集成.md new file mode 100644 index 0000000..adf90a8 --- /dev/null +++ b/content/stuff/drone部署和与gitea的集成.md @@ -0,0 +1,79 @@ +--- +title: "Drone部署和与gitea的集成" +date: 2023-08-07T19:09:08+08:00 + +--- + +原本的博客是直接使用的非开发模式的hugo server,但随着博客内容增多,内存占用巨大,经历昨晚内存溢出至交换区使服务器超高磁盘IO,所有服务无响应后决定将静态页面直接由原有反向代理的nginx直接托管 + +为了便于专注创作,在gitea上引入drone CI来做简单的持续集成变得有所必要,毕竟每次提交后都要手动pull和构建远远不够优雅:D + +本文记录drone CI的docker-compose 方式部署并与已经完成部署的gitea docker集成,官方文档不推荐此种方式部署,也不建议gitea和drone部署在一台服务器上(预算不足暂出此策) + +首先需要在gitea上创建OAth2应用令牌并设置应用的重定向URL + +![](../../static/images/%E6%9D%82%E7%89%A9/Drone%E9%83%A8%E7%BD%B2%E5%92%8C%E4%B8%8Egitea%E7%9A%84%E9%9B%86%E6%88%90/OAth2.png) + +生成用于Drone的server和runner间通信的通信密钥 + +```bash +openssl rand -hex 16 +``` + +drone-server的docker-compose文件 + +```yaml +version: "3" + +services: + drone-server: + image: drone/drone:2.13.0 + container_name: drone-server + restart: always + ports: + - "7500:80" + volumes: + - ./data:/data + environment: + - DRONE_GITEA_SERVER= Gitea 服务器地址,例如 https://gitea.inksoul.top。注意填写准确的 http(s) 协议,否则你会看到来自 Gitea 的错误报告:unsupported protocol scheme + - DRONE_GITEA_CLIENT_ID=Gitea OAuth 客户端ID + - DRONE_GITEA_CLIENT_SECRET=Gitea OAuth 客户端密钥 + - DRONE_RPC_SECRET=在准备工作中使用 openssl rand -hex 16 生成的共享密钥。这个密钥用于验证 Drone Server 和 Runner 之间的 RPC 连接。因此,在 Server 和 Runner 上都必须使用相同的密钥 + - DRONE_SERVER_HOST=访问 Drone 时所用的域名或 IP 地址。如果使用 IP 地址,还应该包含端口 + - DRONE_SERVER_PROTO=设置服务器的协议,使用:http 或 https。 默认为 https + - DRONE_USER_CREATE=管理员配置,这里的管理员用户名是Git仓库的用户名,不一定是Git仓库的管理员,只要是Git仓库的用户即可,例如 username:inksoul,admin:true +``` + +在完成域名解析绑定和nginx中反向代理设定后,就可以拉取容器并启用了 + +nignx反向代理则在官方文档中有指出 + +```conf + location / { + + proxy_pass http://localhost:port/; + proxy_set_header X-Forwarded-For $remote_addr; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header Host $http_host; + proxy_redirect off; + proxy_http_version 1.1; + proxy_buffering off; + proxy_pass_request_headers on; + } +``` + +完成准备后即可运行启动drone-server + +```bash +docker-compose up -d +``` + +随后可以安装负责流水线的droen-runner + +``` + + +``` + + + diff --git a/hugobuild.drone.yml b/hugobuild.drone.yml new file mode 100644 index 0000000..72c0791 --- /dev/null +++ b/hugobuild.drone.yml @@ -0,0 +1,18 @@ +kind: pipeline +type: docker +name: blog-publish + +steps: + - name: build + image: inksoul/hugo-rsync + volumes: #挂载数据卷 + - name: blog + path: /data + commands: + - hugo + - rsync -a --delete --exclude '.user.ini' public/ /data + +volumes: #声明数据卷 + - name: blog + host: + path: /home/ubuntu/myWork/Blog/InkSoul/public \ No newline at end of file diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..0a8753f --- /dev/null +++ b/readme.md @@ -0,0 +1 @@ +[![Build Status](https://drone.inksoul.top/api/badges/inksoul/InkSoul/status.svg)](https://drone.inksoul.top/inksoul/InkSoul) \ No newline at end of file diff --git a/static/images/杂物/Drone部署和与gitea的集成/OAth2.png b/static/images/杂物/Drone部署和与gitea的集成/OAth2.png new file mode 100644 index 0000000..c4ae00c Binary files /dev/null and b/static/images/杂物/Drone部署和与gitea的集成/OAth2.png differ