构建和运行 hatchet-api

构建和运行 hatchet-api

前提条件

  1. 安装 Go(如果尚未安装)

  2. 安装 Node.js(用于 nodemon)

  3. 启动依赖的服务(postgres、RabbitMQ)
    可以用https://gitee.com/zhenleo/hatchet-demo中docker-compose启动

    复制代码
    docker-compose up -d postgres rabbitmq

快速启动(开发环境)

使用任务运行器(推荐):

bash 复制代码
# 启动数据库和 API
task start-api

直接使用启动脚本:

bash 复制代码
# 启动 Caddy 并运行带热重载的 API
bash hack/dev/start-api.sh

在vs code中debug hatchet-api

在 launch.json 中添加新配置

yaml 复制代码
   "configurations": [
        {
            "name": "Launch hatchet-api",
            "type": "go",
            "request": "launch",
            "mode": "debug",
            "program": "${workspaceFolder}/cmd/hatchet-api",
            "env": {
                "PATH": "/usr/local/go/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "GOROOT": "/usr/local/go"
            },
            "args": [ "--config=./config"],
            "dlvToolPath": "/home/test/go/bin/dlv",
            "showGoStatus": true,
            "cwd": "${workspaceFolder}/"
        }
    ]

手动构建和运行

构建二进制文件:

bash 复制代码
go build -o cmd/hatchet-api/hatchet-api ./cmd/hatchet-api

运行已构建的二进制文件:

bash 复制代码
./cmd/hatchet-api/hatchet-api --config ./config

直接使用 Go 运行:

bash 复制代码
go run ./cmd/hatchet-api --config ./config

./config 是通过 docker-compose 中的 setup-config 生成的。

需要修改的配置选项

config/server.yaml 中 url

config/server.yaml 文件中,修改与消息队列相关的配置项:

yaml 复制代码
logger:
  format: console
  level: debug // API服务的日志级别
msgQueue:
  enabled: true
  kind: rabbitmq
  rabbitmq:
    url: amqp://user:password@rabbitmq:5672/  # 修改为 RabbitMQ 的连接 URL

config/database.yaml 配置 PostgreSQL

config/database.yaml 文件中,修改 PostgreSQL 相关配置项:

yaml 复制代码
host: 127.0.0.1  # 修改为 PostgreSQL 服务器的主机地址
password: hatchet  # 设置 PostgreSQL 数据库密码
port: 5431  # 修改为 PostgreSQL 连接端口

使用task配置

任务定义在 hatchet/Taskfile.yaml

该 API 需要一个 .env 文件来进行配置。可以通过以下命令生成:

bash 复制代码
# 设置环境变量
task set-env-all

这将创建一个 .env 文件,包含以下设置:

• 数据库 URL(PostgreSQL)

• JWT 加密密钥

• 服务器端口(默认:8080)

• 消息队列(RabbitMQ)

• 日志配置

完整的开发环境设置

为了搭建完整的开发环境:

bash 复制代码
# 初始设置(一次性)
task setup

# 启动所有服务(API、引擎、前端、数据库)
task start-dev

可用命令

task start-api - 启动带热重载的 API

task start-engine - 启动任务引擎

task start-frontend - 启动前端 UI

task start-dev - 启动所有服务

task start-db - 通过 Docker 启动 PostgreSQL 和 RabbitMQ

task migrate - 执行数据库迁移

API 通常可以通过 http://localhost:8080 访问。