最近我在我的 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。
创建完 Token 之后一定要复制下来,这一步结束后你将再也无法看到这个 Token。
第二步是全局安装 Vercel CLI,如果你安装过可以跳过这一步。
npm i -g vercel
第三步,在 Vercel 中创建一个项目,随便选择一个模板就可以。不过需要注意项目名要取对。
第四步,在本地项目文件夹中通过 vercel link 命令连接到 Vercel 项目。
这个过程需要你填写 Token、选择 GitHub、并填写第三步创建的项目名。
成功之后会在项目根目录下生成 .vercel/project.json 文件。
里面的 JSON 会有 projectId 和 orgId 两个字段,这两个字段我们接下来会用到。
第五步,在 GitHub 仓库中,找到 Settings -> Secrets and variables -> Actions 页面。
点击 New repository secret 创建私钥。
三个私钥的名字分别是 VERCEL_TOKEN
、VERCEL_ORG_ID
和 VERCEL_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 分支是不会触发的。