使用 GitHub Actions 自动验证和部署 Kestra 工作流

如果在 Git 仓库中管理工作流,可以在合入 main 分支前自动验证格式是否正确,还可将 main 分支中的工作流自动部署到 Kestra 实例。

可使用三个 GitHub Action:

– Validate Flows:在部署前验证工作流。

– Deploy Flows:将工作流部署到 Kestra 服务器。

– Deploy Namespace Files:将命名空间文件部署到服务器。

验证工作流

Validate Flows Action 在提交推送到 main 或对 main 创建拉取请求时,检查指定 directory 下的全部工作流。完整输入参数见官方 GitHub Actions 参考。

下例执行以下步骤:

1. 向 main 推送提交或对 main 创建 PR 时触发。

2. 检出仓库,让后续步骤能够访问文件。

3. 验证 ./kestra/flows 目录中的全部工作流。

name: Kestra CI/CD

on:

  push:

    branches: [ "main" ]

  pull_request:

    branches: [ "main" ]




jobs:

  validate:

    runs-on: ubuntu-latest

    name: Kestra validate

    steps:

      - name: Checkout repo content

        uses: actions/checkout@v4




      - name: Validate all flows

        uses: kestra-io/validate-flows-action-v2@main

        with:

          directory: ./kestra/flows

          server: https://server-url.com

部署工作流

Deploy Flows Action 在新提交推送到 main 时部署。指定包含工作流的 directory,并可指定目标 namespace。完整输入参数见官方 GitHub Actions 参考。

要部署到多个命名空间,可添加多个 Deploy Flows 步骤,分别指定不同 namespace 和 directory。

下例:

1. 提交推送到 main 时触发。

2. 检出仓库。

3. 将 kestra/flows 中的工作流部署到实例的 company.team 命名空间。

name: Kestra CI/CD

on:

  push:

    branches: [ "main" ]




jobs:

  deploy:

    runs-on: ubuntu-latest

    name: Kestra deploy

    steps:

      - name: Checkout repo content
        uses: actions/checkout@v4




      - name: Deploy flows

        uses: kestra-io/deploy-flows-action-v2@main

        with:

          namespace: company.team

          directory: ./kestra/flows

          server: https://server-url.com

部署命名空间文件

Deploy Namespace Files Action 可以将配置文件或其他资源部署到命名空间,方便在工作流之间管理共享文件。

下例:

1. 提交推送到 main 时触发。

2. 检出仓库。

3. 把配置文件部署到 company.team 命名空间。

name: Kestra CI/CD

on:

  push:

    branches: [ "main" ]




jobs:

  deploy-nsfiles:

    runs-on: ubuntu-latest

    name: Kestra deploy namespace files

    steps:

      - name: Checkout repo content
        uses: actions/checkout@v4




      - name: Deploy namespace files

        uses: kestra-io/deploy-namespace-files-action@main

        with:

          namespace: company.team

          localPath: ./config/app.yaml

          namespacePath: config/app.yaml

          server: https://server-url.com

身份验证

Kestra 实例启用身份验证时,需要添加属性,让 Action 能够向实例认证。

基本身份验证

如果使用用户名与密码的基本身份验证(例如开源版),可通过 GitHub Secrets 添加 user 和 password:

name: Kestra CI/CD

on:

  push:

    branches: [ "main" ]




jobs:

  deploy:

    runs-on: ubuntu-latest

    name: Kestra deploy

    steps:

      - name: Checkout repo content
        uses: actions/checkout@v4




      - name: Deploy flows

        uses: kestra-io/deploy-flows-action-v2@main

        with:

          namespace: company.team

          directory: ./kestra/flows

          server: https://server-url.com

          user: ${{ secrets.KESTRA_USERNAME }}

          password: ${{ secrets.KESTRA_PASSWORD }}

这里使用 ${{ secrets.name }} 表达式引用 user、password,避免把它们直接提交到仓库。

API 令牌

使用企业版时,也可以改用 API Token:

name: Kestra CI/CD

on:

  push:

    branches: [ "main" ]




jobs:

  deploy:

    runs-on: ubuntu-latest

    name: Kestra deploy

    steps:

      - name: Checkout repo content

        uses: actions/checkout@v4




      - name: Deploy flows
        uses: kestra-io/deploy-flows-action-v2@main

        with:

          namespace: company.team

          directory: ./kestra/flows

          server: https://server-url.com

          apiToken: ${{ secrets.KESTRA_API_TOKEN }}

设置分支规则集

团队协作时,可为 main 设置规则集,防止把有错误的工作流意外部署到生产实例。

在 GitHub 仓库 Settings 中进入 Rules,再进入 Rulesets,创建新的分支规则集。

Action 会自动部署 main 中的全部工作流,因此规则集要保护 main。设置以下分支规则:

– Require a pull request before merging:禁止直接向 main 提交。

– Require status checks to pass:合并 PR 前必须通过 Validate Flows 检查。

分支规则集

启用后,工作流进入生产前必须经过 PR,因此可以运行验证,并要求验证成功后才允许合并。

验证失败的拉取请求

上图工作流缩进错误,验证失败,因此修复之前无法合并。

—

原文:Automate Flow Validation and Deployment via GitHub Actions CI/CD。作者:Kestra 文档贡献者。本文为中文翻译,代码和截图来源保留。文档仓库采用 Apache-2.0 许可。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容