解决Netlify免费Build额度太少的问题

解决Netlify免费Build额度太少的问题

2024-01-25
#工具箱

这个月因为测试主题,所以build时常用的多了一些,今天上Netlify后台一看才发现Build时常已经超过了45分钟,估计账单出来了之后还必须要交完费才能正常访问,各位用Netlify的用户要注意一下这个问题了。

Netlify每个月只有300分钟的Build时常,相较于Github Action的2000分钟,为了避免之后Netlify还出现这种情况,所以研究了一下,看能不能在Github上完成build操作,Netlify只做静态网站运行。

根据这个需求,用ChatGPT简单糊了一个Action配置,目前能用,没什么问题。

配置中需要用到 NETLIFY_AUTH_TOKEN 可以在Netlify后台 Personal access tokens 里获取,NETLIFY_SITE_ID 直接在站点信息里就能看到。

另外,如果想要使用webhook触发Github hook,需要使用 repository_dispatch 来自定义action类型,具体可以参考:触发工作流的事件考

最后的Action如下。

on: 
repository_dispatch:
  types:
    - update

jobs:
build_deploy:
  runs-on: ubuntu-latest
  steps:
    - uses: actions/checkout@master

    - name: Set Node.js 20.x
      uses: actions/setup-node@master
      with:
        node-version: 20.x        

    - name: Run install
      uses: borales/actions-yarn@v4
      with:
        cmd: install # will run `yarn install` command

    - name: Build production bundle
      uses: borales/actions-yarn@v4
      with:
        cmd: prod # will run `yarn prod` command


    - name: Deploy to Netlify
      uses: netlify/actions/cli@master
      env:
        NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
        NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }}
        build_directory: dist
      with:
        args: deploy --prod

这个时候我们就可以通过代码发起POST请求触发Action了。

代码中的 TRIGGER_TOKEN前文提到的 去 Github 生成 一个具有 rep 权限的 token(要常规模式的 token,不要问我怎么知道的)

curl -X POST https://api.github.com/repos/:owner/:repo/dispatches \
  -H "Accept: application/vnd.github.everest-preview+json" \
  -H "Authorization: Bearer TRIGGER_TOKEN" \
  --data '{"event_type": "TRIGGER_EVENT"}'

结合我们上次提到的 用 GithubAction 替代 Zapier?? 一文,依旧可以通过这个方式来配合Ghost的webhook触发Github Action的webhook。

actionflow的配置文件如下:

on:
webhook:
jobs:
request:
  name: Make a HTTP Request
  runs-on: ubuntu-latest
  steps:
    - name: Make a HTTP Request
      uses: actionsflow/axios@v1
      id: info
      with:
        url: https://api.github.com/repos/rebron1900/11ty-theme-notability/dispatches
        method: POST
        headers: '{"Accept":"application/vnd.github.everest-preview+json", "Authorization":"Bearer ${{secrets.ACTION_TOKEN}}"}'
        data: '{"event_type": "update"}'
💡
不知道我的私有库可以用这个方式发布吗??下次试试。

加入评论