使用 Github Actions 部署 React App 到 Netlify

1,412 阅读2分钟

GitHub Actions 是 GitHub 的持续集成服务。

Netlify 是静态网站自动部署平台,是目前比较简单的自动化部署方案。

部署静态网站到 Netlify 上有两种方法。

  • 第一种是不用 GitHub actions,直接使用 netlify 连接到我们的GitHub仓库,netlify 会自动为我们设置好 CI/CD pipeline,只要我们 push 到相应的 branch 上,netlify 就会自动完成部署。我们也可以在 site setting 里对部署进行更多的设置。

  • 第二种是不直接连接 Github repo 到 Netlify,用 GitHub Actions 设置CI/CD workflow。

为什么用 Github Actions

首先,Netlify 的免费额度一个月只有300分钟 build time,如果我们有多个部署环境,经常部署的话,这点时间可能不够用。如果使用 GitHub Actions,会有2000分钟的build time。其次,如果不使用 GitHub Actions,我们对 build process 没有什么选择,只能使用 Netlify 自带的设置,灵活性比较低。

使用 GitHub Actions 部署到 Netlify

(这里的 React App 是我使用 create-react-app --use-npm 创建的全新的 React App)

主要有3步:

  • 创建 Netlify site
  • 获取 NETLIFY_AUTH_TOKENNETLIFY_SITE_ID
  • 设置 GitHub Actions

第一步

首先,登陆 Netlify。

netlify-app
这里不要点击 new site from Git,我们要自己 setup CI/CD,不想让 Netlify 直接连接到GitHub,所以要先拖拽一个空文件夹到虚线框里面,创建一个啊 disconnected Netlify Site,之后我们会通过 Github actions 上传我们的 build 到 Netlify。

完成上传后,我么看到 Netlify Site 页面。

netlify-site

第二步

接下来,需要获取两个 secret,为之后需要用到的 Netlify CLI actions 提供身份验证。 第一个是 NETLIFY_AUTH_TOKEN,在 Netlify 页面右上角点击 User settings -> Applications -> Personal access tokens 中点击 New access token,创建之后先不要关闭这个页面,等下要复制粘贴。

第二个是 NETLIFY_SITE_ID,在 Neilify Site 的 Setting 中,Site Information 下面有一个 API ID 就是我们的 NETLIFY_SITE_ID

api-id

然后在 GitHub Repo 的 设置中添加这两个 secrets。

secrets

第三步

最后,在 GitHub Repo 中选择 Actions,然后点击 Set up a workflow yourself。 在编辑器中粘贴下面的简易workflow。

name: Production workflow

on:
  push:
    branches:
      - master

jobs:
  deploy:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v1

      - name: Use Node.js 12.x
        uses: actions/setup-node@v1
        with:
          node-version: 12.x
      - run: npm install
      - run: npm run build --if-present

      - name: Deploy to netlify
        uses: netlify/actions/cli@master
        env:
          NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
          NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }}
        with:
          args: deploy --dir=build --prod
          secrets: '["NETLIFY_AUTH_TOKEN", "NETLIFY_SITE_ID"]'

这里我们使用了 netlify 官方的 cli actions:netlify/actions/cli@master

workflow

然后点击右上角 start commit

回到 Netlify Site 页面,点击链接就可以看到我们的网站了!

eager-lamport-d46805.netlify.app/

github.com/qiweiii/rea…