mirror of
https://github.com/hatchet-dev/hatchet.git
synced 2026-03-17 10:15:49 -05:00
304 lines
8.9 KiB
YAML
304 lines
8.9 KiB
YAML
version: "3"
|
|
|
|
tasks:
|
|
setup:
|
|
cmds:
|
|
- task: install-dependencies
|
|
- task: set-env-db
|
|
- task: migrate
|
|
- task: generate-local-encryption-keys
|
|
- task: generate-docs
|
|
- task: set-env-all
|
|
- task: seed-dev
|
|
set-env-db:
|
|
cmds:
|
|
- |
|
|
cat > .env <<EOF
|
|
DATABASE_URL='postgresql://hatchet:hatchet@127.0.0.1:5431/hatchet'
|
|
EOF
|
|
set-env-all:
|
|
cmds:
|
|
- |
|
|
randstring() { openssl rand -base64 69 | tr -d "\n" | tr -d "=+/" | cut -c1-$1; }
|
|
|
|
cat > .env <<EOF
|
|
DATABASE_URL='postgresql://hatchet:hatchet@127.0.0.1:5431/hatchet'
|
|
|
|
SERVER_ENCRYPTION_MASTER_KEYSET_FILE=./hack/dev/encryption-keys/master.key
|
|
SERVER_ENCRYPTION_JWT_PRIVATE_KEYSET_FILE=./hack/dev/encryption-keys/private_ec256.key
|
|
SERVER_ENCRYPTION_JWT_PUBLIC_KEYSET_FILE=./hack/dev/encryption-keys/public_ec256.key
|
|
|
|
SERVER_PORT=8080
|
|
SERVER_URL=http://localhost:8080
|
|
|
|
SERVER_AUTH_COOKIE_SECRETS="$(randstring 16) $(randstring 16)"
|
|
SERVER_AUTH_COOKIE_DOMAIN=app.dev.hatchet-tools.com
|
|
SERVER_AUTH_COOKIE_INSECURE=true
|
|
SERVER_AUTH_SET_EMAIL_VERIFIED=true
|
|
|
|
SERVER_MSGQUEUE_KIND=rabbitmq
|
|
SERVER_MSGQUEUE_RABBITMQ_URL=amqp://user:password@127.0.0.1:5672/
|
|
|
|
SERVER_ADDITIONAL_LOGGERS_QUEUE_LEVEL=warn
|
|
SERVER_ADDITIONAL_LOGGERS_QUEUE_FORMAT=console
|
|
SERVER_ADDITIONAL_LOGGERS_PGXSTATS_LEVEL=error
|
|
SERVER_ADDITIONAL_LOGGERS_PGXSTATS_FORMAT=console
|
|
SERVER_LOGGER_LEVEL=warn
|
|
SERVER_LOGGER_FORMAT=console
|
|
DATABASE_LOGGER_LEVEL=warn
|
|
DATABASE_LOGGER_FORMAT=console
|
|
|
|
SERVER_GRPC_BROADCAST_ADDRESS=127.0.0.1:7070
|
|
SERVER_GRPC_INSECURE=true
|
|
SERVER_INTERNAL_CLIENT_BASE_STRATEGY=none
|
|
SERVER_INTERNAL_CLIENT_BASE_INHERIT_BASE=false
|
|
EOF
|
|
fmt-go:
|
|
cmd: gofmt -s -w .
|
|
fmt-app:
|
|
dir: frontend/app
|
|
cmd: pnpm run prettier:fix && pnpm run prettier:check
|
|
fmt-docs:
|
|
dir: frontend/docs
|
|
cmd: pnpm run prettier:fix && pnpm run prettier:check
|
|
sync-agent-instructions:
|
|
desc: Sync agent-instructions MDX files into hatchet-cli skill-assets references
|
|
cmds:
|
|
- |
|
|
src="frontend/docs/pages/agent-instructions"
|
|
dest="cmd/hatchet-cli/cli/skill-assets/hatchet-cli/references"
|
|
for f in "$src"/*.mdx; do
|
|
name=$(basename "$f" .mdx)
|
|
cp "$f" "$dest/$name.md"
|
|
done
|
|
|
|
pre:
|
|
aliases: [fmt]
|
|
cmds:
|
|
- task: sync-agent-instructions
|
|
- task: fmt-go
|
|
- task: fmt-app
|
|
- task: fmt-docs
|
|
- task: pre-commit-run
|
|
start-db:
|
|
cmds:
|
|
- docker compose up -d
|
|
stop-db:
|
|
cmds:
|
|
- docker compose down {{.CLI_ARGS}}
|
|
recreate-db-from-scratch:
|
|
cmds:
|
|
- docker compose down -v
|
|
- docker compose up -d
|
|
- task: setup
|
|
- task: init-dev-env
|
|
set-etc-hosts:
|
|
cmds:
|
|
- sudo bash ./hack/dev/manage-hosts.sh add 127.0.0.1 app.dev.hatchet-tools.com
|
|
empty-migration:
|
|
cmds:
|
|
- goose -dir cmd/hatchet-migrate/migrate/migrations/ create {{.CLI_ARGS | default "empty_migration"}} sql
|
|
migrate:
|
|
cmds:
|
|
- task: generate-sqlc
|
|
- task: goose-migrate
|
|
goose-migrate:
|
|
cmds:
|
|
- bash ./hack/dev/migrate.sh
|
|
migrate-down:
|
|
desc: "Migrate down to a specific version. Usage: task migrate-down -- 20260223180620 (for v1.0.82)"
|
|
dotenv: [.env]
|
|
cmds:
|
|
- |
|
|
if [ -z "{{.CLI_ARGS}}" ]; then
|
|
echo "Usage: task migrate-down -- <version>"
|
|
echo "Example: task migrate-down -- 20260223180620 # v1.0.82"
|
|
exit 1
|
|
fi
|
|
go run ./cmd/hatchet-migrate --down {{.CLI_ARGS}}
|
|
seed-dev:
|
|
dotenv: [.env]
|
|
cmds:
|
|
- SEED_DEVELOPMENT=true go run ./cmd/hatchet-admin seed
|
|
seed-cypress:
|
|
dotenv: [.env]
|
|
cmds:
|
|
- SEED_DEVELOPMENT=true go run ./cmd/hatchet-admin seed-cypress
|
|
start-dev:
|
|
deps:
|
|
- task: goose-migrate
|
|
- task: start-db
|
|
- task: start-api
|
|
- task: start-engine
|
|
- task: start-frontend
|
|
start-dev-tmux:
|
|
cmds:
|
|
- bash ./hack/dev/start-dev-tmux.sh
|
|
start-api:
|
|
cmds:
|
|
- bash ./hack/dev/start-api.sh
|
|
start-api-ci:
|
|
cmds:
|
|
- bash ./hack/ci/start-api.sh
|
|
start-engine:
|
|
cmds:
|
|
- bash ./hack/dev/start-engine.sh
|
|
start-engine-ci:
|
|
cmds:
|
|
- bash ./hack/ci/start-engine.sh
|
|
start-frontend:
|
|
cmds:
|
|
- bash ./hack/dev/start-frontend.sh
|
|
write-e2e-env:
|
|
cmds:
|
|
- bash ./hack/ci/write-e2e-env.sh
|
|
e2e-frontend:
|
|
desc: Run Cypress E2E for frontend/app against a locally started API stack (CI-friendly).
|
|
cmds:
|
|
- bash ./hack/ci/e2e-frontend.sh
|
|
start-lite:
|
|
cmds:
|
|
- bash ./hack/dev/start-lite.sh
|
|
start-ngrok:
|
|
cmds:
|
|
- ngrok http 8080
|
|
generate-all:
|
|
aliases: [generate]
|
|
cmds:
|
|
- task: install-dependencies
|
|
- task: generate-api
|
|
- task: generate-proto
|
|
- task: generate-sqlc
|
|
- task: generate-docs
|
|
- task: pre-commit-run
|
|
install-dependencies:
|
|
deps: [venv]
|
|
cmds:
|
|
- go mod download
|
|
- cd frontend/app/ && pnpm install
|
|
- cd frontend/docs/ && pnpm install
|
|
- source .venv/bin/activate && pip install pre-commit
|
|
generate-api:
|
|
cmds:
|
|
- task: generate-api-server
|
|
- task: generate-api-client
|
|
generate-docs:
|
|
deps: [venv]
|
|
dir: frontend/snippets
|
|
cmds:
|
|
- "source {{.ROOT_DIR}}/.venv/bin/activate && python generate.py"
|
|
- task: fmt
|
|
- task: sync-agent-instructions
|
|
generate-certs:
|
|
cmds:
|
|
- bash ./hack/dev/generate-x509-certs.sh ./hack/dev/certs
|
|
generate-local-encryption-keys:
|
|
cmds:
|
|
- bash ./hack/dev/generate-local-encryption-keys.sh ./hack/dev/encryption-keys
|
|
init-dev-env:
|
|
dotenv: [.env]
|
|
cmds:
|
|
- bash ./hack/dev/init-dev-token-and-env.sh
|
|
generate-dev-api-token:
|
|
cmds:
|
|
- bash ./hack/dev/generate-dev-api-token.sh
|
|
generate-api-server:
|
|
cmds:
|
|
- bash ./hack/oas/generate-server.sh
|
|
silent: true
|
|
generate-api-client:
|
|
cmds:
|
|
- bash ./hack/oas/generate-clients.sh
|
|
silent: true
|
|
generate-proto:
|
|
cmds:
|
|
- bash ./hack/proto/proto.sh
|
|
generate-proto-python:
|
|
dir: ./python-sdk
|
|
cmds:
|
|
- sh ./generate.sh
|
|
generate-sqlc:
|
|
cmds:
|
|
- go run github.com/sqlc-dev/sqlc/cmd/sqlc@v1.29.0 generate --file pkg/repository/sqlcv1/sqlc.yaml
|
|
lint:
|
|
cmds:
|
|
- task: lint-go
|
|
- task: lint-go-guides
|
|
- task: lint-python-guides
|
|
- task: lint-typescript-guides
|
|
- task: lint-ruby-guides
|
|
- task: lint-app
|
|
- task: lint-docs
|
|
lint-go:
|
|
cmd: golangci-lint run ./... --config .golangci.yml
|
|
lint-go-guides:
|
|
dir: sdks/guides/go
|
|
cmd: golangci-lint run ./... --config .golangci.yml
|
|
lint-python-guides:
|
|
dir: sdks/guides/python
|
|
cmd: poetry run ruff check .
|
|
lint-typescript-guides:
|
|
dir: sdks/guides/typescript
|
|
cmd: pnpm install && pnpm run lint:check
|
|
lint-ruby-guides:
|
|
dir: sdks/guides/ruby
|
|
cmd: bundle install && bundle exec rubocop
|
|
lint-app:
|
|
dir: frontend/app
|
|
cmd: pnpm run lint:check
|
|
lint-docs:
|
|
dir: frontend/docs
|
|
cmd: npm run lint:check
|
|
kill-apis:
|
|
cmds:
|
|
- ps -A | grep 'cmd/hatchet-api' | grep -v grep | awk '{print $1}' | xargs kill -9 $1
|
|
- ps -A | grep 'exe/hatchet-api' | grep -v grep | awk '{print $1}' | xargs kill -9 $1
|
|
kill-engines:
|
|
cmds:
|
|
- ps -A | grep 'cmd/hatchet-engine' | grep -v grep | awk '{print $1}' | xargs kill -9 $1
|
|
- ps -A | grep 'exe/hatchet-engine' | grep -v grep | awk '{print $1}' | xargs kill -9 $1
|
|
copy-ca-to-sdks:
|
|
cmds:
|
|
- mkdir -p ./python-sdk/certs/ && cp ./hack/dev/certs/ca.cert ./python-sdk/certs/
|
|
venv:
|
|
status: [test -d .venv]
|
|
cmd: python3 -m venv .venv
|
|
pre-commit-install:
|
|
deps: [venv]
|
|
cmd: source .venv/bin/activate && pip install pre-commit && pre-commit install
|
|
pre-commit-run:
|
|
deps: [venv]
|
|
cmd: "source .venv/bin/activate && pre-commit run --all-files || pre-commit run --all-files"
|
|
docs:
|
|
cmds:
|
|
- |
|
|
# Create a trap to kill the watcher when the task exits
|
|
trap 'kill $(jobs -p) 2>/dev/null' EXIT
|
|
|
|
npx chokidar "sdks/**/*.{py,ts,go}" --ignore "**/node_modules/**" --ignore "**/.git/**" --ignore "**/dist/**" --ignore "**/build/**" --initial -c "echo 'TODO: Add a task to generate and sync the docs'" &
|
|
|
|
cd frontend/docs/ && pnpm run taskfile-dev
|
|
pytest:
|
|
dir: ./sdks/python
|
|
vars:
|
|
WORKERS: '{{.WORKERS | default "auto"}}'
|
|
RETRIES: '{{.RETRIES | default "3"}}'
|
|
EXTRA_ARGS: '{{.EXTRA_ARGS | default ""}}'
|
|
cmds:
|
|
- poetry run pytest -n auto --retries 3 --retry-delay 5
|
|
start-telemetry:
|
|
cmds:
|
|
- docker compose -f docker-compose.infra.yml up -d
|
|
test:
|
|
cmds:
|
|
- go test -count=1 $(go list ./... | grep -v "quickstart") -v -failfast
|
|
test-integration:
|
|
deps:
|
|
- start-db
|
|
- goose-migrate
|
|
- generate-local-encryption-keys
|
|
cmds:
|
|
- defer:
|
|
task: stop-db
|
|
- go test -count=1 -tags integration $(go list ./... | grep -v "quickstart") -v -failfast
|