返回 Skill 列表
extension
分类: 开发与工程无需 API Key

inv-runner

Python Invoke任务自动化用于DTX网站。当运行仓库命令、通过Docker进行后端测试、数据库迁移、更新invoke任务、Docker操作或工作流自动化时应使用此技能。支持使用run, exec, up, down命令的开发/测试/生产环境。完整的命令参考请参阅docs/development/invoke-tasks.md。

person作者: jakexiaohubgithub

Invoke Runner Skill

Python Invoke task automation for the DTX website project.

Documentation References (Single Source of Truth)

For complete command reference, consult these mkdocs files:

| Document | Content | |----------|---------| | docs/development/invoke-tasks.md | Complete invoke command reference | | docs/development/backend-quickstart.md | Backend development quickstart | | docs/development/testing.md | Testing procedures including worktree verification |

Running Invoke Commands

Method 1: PATH Prefix (Recommended for Claude)

When bash hooks block source commands, prepend the venv bin to PATH:

PATH=".venv/bin:$PATH" inv <command>

For worktrees, use the full path:

PATH="/path/to/worktree/.venv/bin:$PATH" /path/to/worktree/.venv/bin/inv <command>

Method 2: Poetry Run

poetry run inv <command>

Method 3: Activate venv

source .venv/bin/activate
inv <command>

Why PATH Matters

Invoke tasks call python manage.py or other Python commands. Without venv bin in PATH:

/bin/bash: line 1: python: command not found

PATH prefix ensures subprocess calls find the correct Python interpreter.

Key Patterns

Run vs Exec

run - One-off command in NEW container (with --rm):

inv test.run --cmd 'python manage.py test app.tests -v 2'

exec - Command in RUNNING container:

inv dev.exec backend 'python manage.py shell'

Environment-Specific Commands

All environments (dev, test, prod) support:

inv <env>.up       # Start
inv <env>.down     # Stop and remove
inv <env>.logs     # Follow logs
inv <env>.run --cmd '<cmd>'  # One-off command

Database Operations

inv db.migrate.all       # Migrations for all environments
inv db.migrate.test      # Test environment only
inv db.populate.all      # Reset and populate test DB

Testing (Docker - Recommended)

Avoid Redis hanging issues by running tests in Docker:

inv test.run --cmd 'python manage.py test app.tests -v 2'

Cypress E2E

inv test.setup           # Full setup
inv test.spec --spec navigation  # Specific spec
inv test.headless        # All tests headless

Worktree Workflow

From worktree root:

cd /path/to/worktree
PATH=".venv/bin:$PATH" inv test.down
PATH=".venv/bin:$PATH" inv test.setup
PATH=".venv/bin:$PATH" inv db.migrate.test
PATH=".venv/bin:$PATH" inv db.populate.all
PATH=".venv/bin:$PATH" inv test.up

Common Issues

| Issue | Solution | |-------|----------| | python: command not found | Use PATH prefix method | | Redis connection errors | Use Docker: inv test.run --cmd '...' | | Tests hang on cleanup | Use Docker: inv test.run --cmd '...' | | Module not found | Ensure correct venv is activated |

When Modifying Tasks

Update these files when changing invoke tasks:

  • docs/development/invoke-tasks.md (primary reference)
  • docs/development/backend-quickstart.md (if backend-related)