如果在 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 许可。











暂无评论内容