使用Github动作安排Netlify的重复构建

276 阅读3分钟

如果您发现自己需要定期重建一个Netlify应用程序,Github行动可能适合您。这假定你已经集成了Github和Netlify,并且你的网站已经从Github上建立。

使其发挥作用的一般步骤是。

  • 在我们的资源库中创建一个Github动作
  • 在我们的Action yaml文件中使用schedule 字段,以类似于cron的时间表来运行动作。
  • 在行动中,向我们从Netlify获得的构建钩子URL发送POST请求。

让我们来看看如何设置这一切。

创建动作

在我们的Github资源库中,任何行动都会放在.github/workflows 目录中。让我们把代码放在该目录下的一个main.yml 文件中。

/.github/workflows/main.yml

name: Schedule Netlify Build
on:
  workflow_dispatch:
  schedule:
    - cron: '0 14 * * *' # Once a day around 10am ET
jobs:
  build:
    name: Request Netlify Webhook
    runs-on: ubuntu-latest
    steps:
      - name: POST to Build Hook
        env:
          BUILD_KEY: ${{ secrets.NETLIFY_BUILD_KEY }}
        run: curl -X POST -d {} https://api.netlify.com/build_hooks/$env:BUILD_KEY

我们将我们的行动命名为 "Schedule Netlify Build",并告诉它在两个条件下触发。"workflow_dispatch",这将允许我们从Github用户界面手动触发该动作,更重要的是,"schedule",这将告诉Github在类似cron的时间表上运行该动作。

在这个例子中,我们每天在UTC的第14个小时运行我们的cron工作。

我们的cron job将执行一个curl POST请求到https://api.netlify.com/build_hooks/$env:BUILD_KEY 。注意,我们在这个URL中的$env:BUILD_KEY --我们不想把构建密钥直接放在我们的代码中,因为它很敏感。相反,我们将把它存储在Github Secrets中,作为NETLIFY_BUILD_KEY

现在这一切都已经完成了!我们可以把它推送到我们的Github仓库。如果我们立即进行测试,就会失败,因为我们还需要从Netlify获得构建密钥并将其保存到Github Secrets。

获取Netlify的构建密钥

在Netlify中,你可以按照以下的一般导航路径来获得构建钩子区域。

  1. 点击你的网站
  2. 点击网站设置
  3. 点击构建和部署
  4. 在这个页面上应该有一个Build hooks部分

在构建钩子部分,你应该可以点击添加构建钩子。你可以选择给你的钩子命名(任何东西都可以,也许可以用 "Scheduled github action build"),你可以选择哪个分支来构建。 image.png 一旦你点击保存,你应该看到一个构建钩子链接,看起来像这样。

https://api.netlify.com/build_hooks/some-random-string

你要复制这个URL末尾的随机字符串--这就是将进入Github Secrets的内容。

将构建密钥添加到Github Secrets中

在Github中,导航到设置,然后是秘密。在那里,你应该看到一个新仓库秘密的按钮。

当添加你的秘密时,一定要把它命名为NETLIFY_BUILD_KEY ,并且只把你的密钥的随机字符串部分放入框中。

image.png

测试我们的行动

测试我们行动的一个方法是等到明天上午10点,但这似乎是一个漫长的等待。相反,我们确保给自己一个选项来手动触发我们的Github行动,所以让我们试一试。

点击行动,在左边的菜单中点击你的行动,点击运行工作流下拉菜单,然后点击运行工作流

image.png 你应该能够从这里看到你的构建成功完成。我也建议在Netlify方面确认你的网站被重建。