发布于 

通过Drone CI将Gitea托管的Hexo部署到Vercel

随着即将毕业,GitHub学生优惠也即将到期,很多特权不能再使用,这其中就包括GitHub Action和私有仓库GitHub Page。为了打破这种束缚,同时也希望能把自己的数据掌握在自己手里,于是使用Gitea搭建了自己的私有Git仓库。

随之而来的问题就是,私有部署无法使用GitHub Action和诸如Vercel、Netfily这些三方的部署平台,于是采用Drone + Gitea实现流水线的搭建,通过FTP将文件传输到服务器上。但是由于域名备案的原因,国内的CDN和服务器再一次无法使用。于是目光再次瞄准Vercel。

Vercel基于亚马逊的网络搭建了自己的泛播网络,对于不同的网络环境(包括国内)都十分友好。但是目前Vercel只支持关联几家主流的Git提供商,于是瞄准了Vercel提供的CLI工具。通过CLI工具来实现流水线部署的工作。

这里我已经打包好了Vercel需要用到的镜像,内置如下环境:

  • nodejs 18.13.0
  • Vercel CLI 28.13.2

此处默认您已经搭建好了Gitea、Drone环境,并已成功关联Drone与Gitea。成功上传了您的Hexo代码到Gitea中

在hexo根目录下增加.drone.yml文件,代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
kind: pipeline
type: docker
name: blog-job
steps:
- name: Push to Vercel
image: ripic/vercel-cli:vercel28.13.2-node18.13.0-alpine
environment:
VERCEL_TOKEN:
from_secret: vercel_token
VERCEL_ORG_ID:
from_secret: vercel_org_id
VERCEL_PROJECT_ID:
from_secret: vercel_project_id
commands:
- vercel pull --yes --environment=production --token=$VERCEL_TOKEN
- vercel build --prod --token=$VERCEL_TOKEN
- vercel deploy --prebuilt --prod --token=$VERCEL_TOKEN
trigger:
event:
- push

获取vercel_org_id、vercel_project_id步骤不可省略!

如已有Vercel项目,请直接将vercel_org_idvercel_project_id配置进Drone CI的Secret中。如果不存在项目,请本地安装Vercel CLI工具,新建文件夹,执行vercel login进行登录,运行vercel link按照提示新建一个项目,vercel_org_idvercel_project_id将会保存在.vercel/project.json文件中。

https://vercel.com/account/tokens获取vercel_token并保存。

启用Drone,并上传Git,部署即可自动进行。