使用 Github Action自动执行 Netlify 部署
GitHub Actions 在众多使用场景中都非常实用,例如在特定操作(如推送到某个分支)时触发 CI/CD 构建。还可以扩展为在特定时间运行定时任务(cron job)。
在本文中,我们将探讨如何利用 GitHub Actions 在指定时间触发 Netlify 的构建任务。

本博客是部署在 Netlify 上,技术栈是Nextjs + Notion,虽然可以做到在 Notion 发布内容之后实时更新,但是为了优化 SEO 和网站速度,内容更新之后最好还是重新 build 部署。
然后就有了这样的一个需求,需要定时触发 Netlify 部署本博客站点,时间可以根据自己内容的更新频率和实际需要来定,本文以每天 0 点触发 Netlify 的编译部署为例。
要实现这种方法,你需要拥有一个 GitHub 账户,并且网站已托管在 Netlify 上,同时启用了持续部署功能。
1、什么是 Netlify Build Hooks?
在 Netlify 中,Build Hooks 是一种 Webhook URL,可以用来触发新的构建和部署。你可以点击这里了解更多详情。
你可以在 Netlify 的项目“设置 > 构建与部署 > 持续部署 > Build Hooks”中找到 Build Hooks。

2、配置创建 Netlify Build Hooks
从上一步中找到添加 Build Hook 的设置,点击“添加 Build Hook”按钮,填写名称并选择对应的 GitHub 分支。

注意这种方法要求你的 GitHub 仓库已连接到 Netlify,并且启用了持续部署功能。
创建完成后,复制提供的 URL,在后续设置中会用到。

3、创建 GitHub Actions secrets and variables
在Github 的项目Setting下设置 github actions 所需要的变量。
例如,创建NETLIFY_BUILD_HOOK变量,value 为上一步获得的 Netlify build hook 地址。

4、实现 GitHub Actions
最后创建 Github Actions 相关代码。
在你的Github项目根目录下创建一个名为 .github 的文件夹,在其中再创建一个名为 workflows 的子文件夹,然后在 workflows 文件夹中创建一个 main.yml 文件,并粘贴以下代码。
# .github/workflows/main.yml
name: Trigger Netlify Build
on:
schedule:
- '0 0 * * *' # Run at 0000 daily
workflow_dispatch: # 手动触发
jobs:
build:
name: Request Netlify Webhook
runs-on: ubuntu-latest
steps:
- name: Curl request
env:
NETLIFY_BUILD_HOOK: ${{ secrets.NETLIFY_BUILD_HOOK }}
run: curl -X POST -d {} $NETLIFY_BUILD_HOOK
最终的文件路径应为:.github/workflows/main.yml
完成上述操作后,将代码推送到仓库。
最终,Workflow 将在指定时间自动执行。上面示例代码中设置的为 UTC 时间每天的 0 点。
如果需要设置 cron 时间,可以参考 https://crontab.guru/ 获取帮助。
参考资料
使用 Site ID和Personal Access Token****[未验证]
name: Netlify Scheduled Deployment
on:
schedule:
- cron: '0 0 * * *' # This runs every 24 hours at midnight UTC
workflow_dispatch: # Allows manual triggering of the action from GitHub Actions
jobs:
deploy:
if: github.ref == 'refs/heads/main' # Specify the branch 'main' to trigger on
runs-on: ubuntu-latest
steps:
- name: Trigger Netlify Build with Cache Clearing
run: |
# Call the Netlify API to trigger a new build and clear the cache
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${{ secrets.NETLIFY_ACCESS_TOKEN }}" \
-d '{"clear_cache": true}' \
https://api.netlify.com/api/v1/sites/${{ secrets.NETLIFY_SITE_ID }}/builds
继续阅读
基于全文检索与主题相似度
使用自定义 GitHub Actions CI/CD 部署到 Vercel
除了上一篇介绍的 使用 Github Action自动执行Vercel 部署** **使用Deploy Hooks 的方式进行部署之外,还可以有更复杂的场景。 比如可以将 Vercel 与 GitHub Actions 一起使用作为您的 CI/CD 提供程序,在每次推送代码时生成预览部署,并在代码合并到main分支时部
使用 Github Action自动执行Vercel 部署
之前本网站部署在 Netlify 上的,有过一篇文章**使用 Github Action自动执行 Netlify 部署****。 **以解决每周自动部署网站的功能,详细可点击查看。 最近想查看下国内访问网站的速度情况,所以使用 itdog ping 工具进行了测试,发现国内的情况十分不理想。 所以萌生了起换到 verc
GitHub Actions:带有输入的调度和计划工作流程
最近编写了一个项目,需要每天定时从 producthunt 抓取数据并生成阅读良好的 markdown 文档,项目已经上线,[参考地址](https://indiehack.org/)。 除此之外,还希望能够输入日期,手动触发抓取这一天的数据。 也就是,工作流有输入。当工作流由 cron 触发时,我需要它使用一些默认变