手把手教你将 Github 私有仓库部署到 Vercel

3,805 阅读3分钟

最近我在我的 Web3 社群找了一群 Web3 爱好者组建了一个 DAO,正在 builidng 一款标准的 Web3 产品,通过这个产品来帮助一些朋友熟悉 Web3 产品从零到一完整的 building 过程。

所以我在 GitHub 创建了一个组织,项目的代码暂时也不打算开源。所以仓库都选择私有。

项目的运行平台使用的仍然是 Vercel。

Vercel 有三个付费计划,分别是 Hobby、Pro 和 Enterprise。

其中 Hobby 是免费的,Pro 是每个月 20 美元。

在项目初期,我们通常都会为了降低成本而选择 Hobby。等到项目成熟后才会升级到 Pro。

但 Hobby 有个问题,那就是不能将 GitHub 私有仓库连接到 Vercel 中。

之前我也有碰到过这个问题,解决方案有几种。

比如换成 BitBucket 私有仓库。

如果你坚持使用 GitHub 私有仓库,那么可以通过 GitHub Actions 的方式去部署项目。

由于我已经几年没用使用 GitHub Actions 这种方式连接 Vercel 了,很多操作和配置已经发生了变化,所以这里做一个记录,帮助一些对这些平台不熟悉的朋友。

Vercel 有一个教程:vercel.com/guides/how-…

但是教程中有一大堆文档链接,如果你不熟悉这些平台的话将会很麻烦。

所以你可以直接看我这篇文章,可以帮你节省很多时间。

第一步是登陆到 Vercel 的控制台。找到 Settings -> Tokens。然后创建一个 Token。

注意不要选择过期时间,因为我们一直要使用这个 Token。

Pasted image 20230205180012.png

创建完 Token 之后一定要复制下来,这一步结束后你将再也无法看到这个 Token。

Pasted image 20230205180224.png

第二步是全局安装 Vercel CLI,如果你安装过可以跳过这一步。

npm i -g vercel

第三步,在 Vercel 中创建一个项目,随便选择一个模板就可以。不过需要注意项目名要取对。

Pasted image 20230205180612.png

第四步,在本地项目文件夹中通过 vercel link 命令连接到 Vercel 项目。

这个过程需要你填写 Token、选择 GitHub、并填写第三步创建的项目名。

成功之后会在项目根目录下生成 .vercel/project.json 文件。

Pasted image 20230205180840.png

里面的 JSON 会有 projectId 和 orgId 两个字段,这两个字段我们接下来会用到。

第五步,在 GitHub 仓库中,找到 Settings -> Secrets and variables -> Actions 页面。

Pasted image 20230205181035.png

点击 New repository secret 创建私钥。

三个私钥的名字分别是 VERCEL_TOKENVERCEL_ORG_IDVERCEL_PROJECT_ID。这里不建议你修改。

第六步,在本地项目根目录下创建 .github/workflows/preview.yaml 文件,这个也是 GitHub Actions 的配置文件。

文件内容 Vercel 已经帮我们写好了,我们可以直接复制过来。

name: Vercel Preview Deployment

env:

	VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }}
	
	VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }}

on:

	push:

		branches-ignore:

			- main

jobs:

	Deploy-Preview:
	
		runs-on: ubuntu-latest
		
		steps:
		
			- uses: actions/checkout@v2
			
			- name: Install Vercel CLI
			
			run: npm install --global vercel@latest
			
			- name: Pull Vercel Environment Information
			
			run: vercel pull --yes --environment=preview --token=${{ secrets.VERCEL_TOKEN }}
			
			- name: Build Project Artifacts
			
			run: vercel build --token=${{ secrets.VERCEL_TOKEN }}
			
			- name: Deploy Project Artifacts to Vercel
			
			run: vercel deploy --prebuilt --token=${{ secrets.VERCEL_TOKEN }}

你也可以根据自身情况对这个配置文件中的步骤做一些调整。

第七步,把这个配置文件推送到 GitHub。

到这里,所有的配置就全部完成了。

需要注意,只有 PR 到 main 才会触发 Actions 进行 Deploy。如果直接 Push 到 main 分支是不会触发的。