windows 环境下编译kestra并启动

kestra 是一个任务调度编写工具,支持100多个插件执行,

kestra-io/kestra: :zap: Universal Workflow Orchestration Platform --- Code in any language, run anywhere. 800+ plugins for data, infrastructure, and AI automation.代码下载后可直接支持docker compose up -d启动系统

以下为手工编译并启动系统,参考文档kestra.io/docs/config...

1 环境

java :java version "21.0.6" 2025-01-21 LTS

npm:10.2.0

Gradle 9.0.0

Docker version 28.1.1,

Os windows10

2 兼容性代码修改

原有系统代码在windows环境下直接编译会报错,需要对部分代码进行修改 ui/package.json

swift 复制代码
 "prepare": "cd .. && husky ui/.husky && rm -f .git/hooks/*",
 修改为
 "prepare": "cd .. && husky ui/.husky && del /f /q .git\\hooks\\*",

ui/plugins/filename.ts

javascript 复制代码
    const match = path.match(/.*\/src\/(.*)\.vue$/);
    return match ? match[1].toLowerCase() : path;
 修改为
     // 使用更通用的正则表达式来匹配路径
    const match = path.match(/.*[\/\\]src[\/\\](.*)\.vue$/);
    if (!match) return path;
    
    // 将路径分隔符转换为正斜杠,并确保路径在JavaScript字符串中正确转义
    const normalizedPath = match[1].replace(/\\/g, '/').toLowerCase();
    
    // 手动转义反斜杠和其他特殊字符
    return normalizedPath.replace(/\\/g, '\\\\').replace(/"/g, '\\"');

ui/src/components/executions/Executions.vue

javascript 复制代码
 import FlowExecutionFilterLanguage from "../../composables/monaco/languages/filters/impl/flowExecutionFilterLanguage.js";
 修改为
import FlowExecutionFilterLanguage from "../../composables/monaco/languages/filters/impl/flowExecutionFilterLanguage.ts";

ui/src/components/flows/FlowTriggers.vue

javascript 复制代码
 import {storageKeys} from "../../utils/constants.js";
 修改为
 import {storageKeys} from "../../utils/constants.ts";

ui/src/components/kv/KVs.vue

javascript 复制代码
 import useRouteContext from "../../mixins/useRouteContext.js";
 修改为
 import useRouteContext from "../../mixins/useRouteContext.ts";

ui/src/components/secrets/Secrets.vue

javascript 复制代码
 import useRouteContext from "../../mixins/useRouteContext.js";
 修改为
 import useRouteContext from "../../mixins/useRouteContext.ts";

ui/src/components/taskruns/TaskRuns.vue

javascript 复制代码
 import TaskRunFilterLanguage from "../../composables/monaco/languages/filters/impl/taskRunFilterLanguage.js";
 修改为
 import TaskRunFilterLanguage from "../../composables/monaco/languages/filters/impl/taskRunFilterLanguage.ts";

3 修改配置

docker-compose.yml

yaml 复制代码
    image: kestra/kestra:latest
    pull_policy: always
    修改为
    image: kestra/kestra:1.0.0-SNAPSHOT
    pull_policy: never

添加文件挂载配置

arduino 复制代码
D:\code\kestra\kestra\config\application.yml:/app/config/application.yml

application.yml文件挂载内容

yaml 复制代码
datasources:
  postgres:
    url: jdbc:postgresql://postgres:5432/kestra
    driverClassName: org.postgresql.Driver
    username: kestra
    password: k3str4
kestra:
  # server:
  #   basicAuth:
  #     username: admin@kestra.io # it must be a valid email address
  #     password: Admin1234 # it must be at least 8 characters long with uppercase letter and a number
  repository:
    type: postgres
  storage:
    type: local
    local:
      basePath: "/app/storage"
  queue:
    type: postgres
  tasks:
    tmpDir:
      path: /tmp/kestra-wd/tmp
  url: http://localhost:8080/
  plugins:
    repositories:
      central:
        url: https://repo.maven.apache.org/maven2/
    configs:
      - type: io.kestra.plugin.scripts.python.Script
        values:
          pythonPath: /usr/bin/python3

4 编译系统

依次执行以下命令后,构建镜像:kestra/kestra:1.0.0-SNAPSHOT

css 复制代码
gradle build
gradle -q executableJar --no-daemon --priority=normal

copy build\executable\* docker\app\kestra

docker build --compress --rm -f ./Dockerfile --build-arg="APT_PACKAGES=python3 python3-venv python-is-python3 python3-pip nodejs npm curl zip unzip jattach" --build-arg="PYTHON_LIBRARIES=kestra" -t kestra/kestra:1.0.0-SNAPSHOT ./

5 启动系统:docker compose up -d

6 添加python插件

bash 复制代码
下载插件:
docker exec -it <kestra-container-id> /app/kestra plugins install io.kestra.plugin:plugin-script-python:LATEST
 
验证插件:
/app/kestra plugins list | grep python

7 重新启动系统:docker compose up -d,就可以使用python脚本编写调度任务

相关推荐
Younglina6 小时前
三个晚上,我和 WorkBuddy 做了个生图网站
前端·后端·ai编程
金銀銅鐵8 小时前
[Java] 用 CLI 展示 EnumSet 增减元素时的内部变化(下)
java·后端·ai编程
陈随易8 小时前
副业搞钱点子之收入查看器
前端·后端
Profile排查笔记8 小时前
浏览器指纹逆向怎么分析:从网络请求追踪到 JavaScript 采集链
前端·人工智能·后端·自动化
lazy H8 小时前
【计算机网络】第 5 篇:TCP 和 UDP 有什么区别?从 Java 后端场景理解两种传输协议
经验分享·后端·网络协议·tcp/ip·计算机网络·1024程序员节
东宇科技9 小时前
crmeb开源版本安装步骤2026-10-20
后端·php·crmeb
IT_Octopus9 小时前
Apollo 配置中心入门:一所“小学校“读懂 Portal、Meta Server、Config Service
java·后端·spring
CHHH_HHH10 小时前
【Linux网络篇】初识网络与Socket编程基础
linux·服务器·c语言·开发语言·网络·后端·1024程序员节
弦儿10 小时前
后端 Web 实战:员工管理(新增员工 + 事务管理 + 文件上传)
java·后端
Gopher_HBo10 小时前
Go reflect包值操作 Value 的读写、可设置性与 interface 布局
后端