Windmillワークフロー開発環境の構築結果まとめ。サーバー接続確認、REST APIヘルパースクリプト作成、ワークフロー定義ファイル作成、wmill CLI制限の発見と代替策の実装を記録。
This commit is contained in:
53
.agent/workflows/windmill-new-script.md
Normal file
53
.agent/workflows/windmill-new-script.md
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
---
|
||||||
|
description: 新しいWindmillスクリプトを作成する
|
||||||
|
---
|
||||||
|
|
||||||
|
# 新しいWindmillスクリプトの作成
|
||||||
|
|
||||||
|
Windmillに新しいスクリプトを追加する手順。
|
||||||
|
|
||||||
|
## 手順
|
||||||
|
|
||||||
|
1. **スクリプトファイルの作成**: スクリプトは以下のディレクトリ構造に従って作成する
|
||||||
|
- ユーザースクリプト: `u/<username>/<script_name>/`
|
||||||
|
- フォルダスクリプト: `f/<folder_name>/<script_name>/`
|
||||||
|
|
||||||
|
2. **ファイル構成**: 各スクリプトフォルダには以下のファイルが必要
|
||||||
|
- `script.yaml` — メタデータ(言語、概要、スキーマなど)
|
||||||
|
- スクリプト本体(例: `script.py`, `script.ts`, `script.sh`)
|
||||||
|
|
||||||
|
3. **script.yaml のテンプレート**
|
||||||
|
```yaml
|
||||||
|
summary: '<スクリプトの説明>'
|
||||||
|
description: '<詳細な説明>'
|
||||||
|
lock: []
|
||||||
|
schema:
|
||||||
|
$schema: 'https://json-schema.org/draft/2020-12/schema'
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
param1:
|
||||||
|
type: string
|
||||||
|
description: '<パラメータの説明>'
|
||||||
|
required:
|
||||||
|
- param1
|
||||||
|
kind: script
|
||||||
|
tag: ''
|
||||||
|
```
|
||||||
|
|
||||||
|
4. **Pythonスクリプト (`script.py`) のテンプレート**
|
||||||
|
```python
|
||||||
|
def main(param1: str):
|
||||||
|
"""
|
||||||
|
スクリプトの説明
|
||||||
|
"""
|
||||||
|
return {"result": f"Hello, {param1}!"}
|
||||||
|
```
|
||||||
|
|
||||||
|
5. **TypeScriptスクリプト (`script.ts`) のテンプレート**
|
||||||
|
```typescript
|
||||||
|
export async function main(param1: string): Promise<any> {
|
||||||
|
return { result: `Hello, ${param1}!` };
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
6. **サーバーに反映**: `/windmill-push` ワークフローを実行してpush
|
||||||
39
.agent/workflows/windmill-pull.md
Normal file
39
.agent/workflows/windmill-pull.md
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
---
|
||||||
|
description: Windmillサーバーからワークフロー情報を取得する
|
||||||
|
---
|
||||||
|
|
||||||
|
# Windmill Pull ワークフロー
|
||||||
|
|
||||||
|
Windmillサーバーから最新のスクリプトやフローの情報を取得する手順。
|
||||||
|
wm-api.sh を使用してREST API経由で取得する。
|
||||||
|
|
||||||
|
// turbo-all
|
||||||
|
|
||||||
|
1. サーバーバージョンを確認
|
||||||
|
```bash
|
||||||
|
cd /home/akira/develop/windmill_workflow && ./wm-api.sh version
|
||||||
|
```
|
||||||
|
|
||||||
|
2. スクリプト一覧を取得
|
||||||
|
```bash
|
||||||
|
cd /home/akira/develop/windmill_workflow && ./wm-api.sh scripts
|
||||||
|
```
|
||||||
|
|
||||||
|
3. フロー一覧を取得
|
||||||
|
```bash
|
||||||
|
cd /home/akira/develop/windmill_workflow && ./wm-api.sh flows
|
||||||
|
```
|
||||||
|
|
||||||
|
4. 特定のスクリプトの詳細を取得
|
||||||
|
```bash
|
||||||
|
cd /home/akira/develop/windmill_workflow && ./wm-api.sh get-script <path>
|
||||||
|
```
|
||||||
|
|
||||||
|
5. 特定のフローの詳細を取得
|
||||||
|
```bash
|
||||||
|
cd /home/akira/develop/windmill_workflow && ./wm-api.sh get-flow <path>
|
||||||
|
```
|
||||||
|
|
||||||
|
## 注意
|
||||||
|
- wmill CLIはCE版ではグローバルAPI認証の制限があるため使用できない
|
||||||
|
- 代わりに `wm-api.sh` を使用してREST APIで直接操作する
|
||||||
35
.agent/workflows/windmill-push.md
Normal file
35
.agent/workflows/windmill-push.md
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
---
|
||||||
|
description: ローカルのワークフローをWindmillサーバーにpushする
|
||||||
|
---
|
||||||
|
|
||||||
|
# Windmill Push ワークフロー
|
||||||
|
|
||||||
|
ローカルで作成・編集したスクリプトやフローをWindmillサーバーに反映する手順。
|
||||||
|
wm-api.sh を使用してREST API経由でpushする。
|
||||||
|
|
||||||
|
// turbo-all
|
||||||
|
|
||||||
|
1. 現在のサーバー接続を確認
|
||||||
|
```bash
|
||||||
|
cd /home/akira/develop/windmill_workflow && ./wm-api.sh version
|
||||||
|
```
|
||||||
|
|
||||||
|
2. 既存のスクリプト一覧を確認
|
||||||
|
```bash
|
||||||
|
cd /home/akira/develop/windmill_workflow && ./wm-api.sh scripts
|
||||||
|
```
|
||||||
|
|
||||||
|
3. 既存のフロー一覧を確認
|
||||||
|
```bash
|
||||||
|
cd /home/akira/develop/windmill_workflow && ./wm-api.sh flows
|
||||||
|
```
|
||||||
|
|
||||||
|
4. スクリプトを作成する場合 (JSONファイルを用意して実行)
|
||||||
|
```bash
|
||||||
|
cd /home/akira/develop/windmill_workflow && ./wm-api.sh create-script <script.json>
|
||||||
|
```
|
||||||
|
|
||||||
|
## 注意
|
||||||
|
- wmill CLIはCE版ではグローバルAPI認証の制限があるため使用できない
|
||||||
|
- 代わりに `wm-api.sh` を使用してREST APIで直接操作する
|
||||||
|
- Windmill MCP経由でも操作可能
|
||||||
122
wm-api.sh
Executable file
122
wm-api.sh
Executable file
@@ -0,0 +1,122 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# Windmill REST API ヘルパースクリプト
|
||||||
|
# Usage: ./wm-api.sh <command> [args...]
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
# 設定
|
||||||
|
WINDMILL_URL="${WINDMILL_URL:-https://windmill.keinafarm.net}"
|
||||||
|
WINDMILL_TOKEN="${WINDMILL_TOKEN:-qLJ3VPZ61kTDiIwaUPUu1dXszGrsN1Dh}"
|
||||||
|
WINDMILL_WORKSPACE="${WINDMILL_WORKSPACE:-admins}"
|
||||||
|
|
||||||
|
API_BASE="${WINDMILL_URL}/api/w/${WINDMILL_WORKSPACE}"
|
||||||
|
AUTH_HEADER="Authorization: Bearer ${WINDMILL_TOKEN}"
|
||||||
|
|
||||||
|
# ヘルパー関数
|
||||||
|
api_get() {
|
||||||
|
curl -sk -H "${AUTH_HEADER}" "${API_BASE}$1" 2>/dev/null
|
||||||
|
}
|
||||||
|
|
||||||
|
api_post() {
|
||||||
|
curl -sk -X POST -H "${AUTH_HEADER}" -H "Content-Type: application/json" -d "$2" "${API_BASE}$1" 2>/dev/null
|
||||||
|
}
|
||||||
|
|
||||||
|
api_put() {
|
||||||
|
curl -sk -X PUT -H "${AUTH_HEADER}" -H "Content-Type: application/json" -d "$2" "${API_BASE}$1" 2>/dev/null
|
||||||
|
}
|
||||||
|
|
||||||
|
api_delete() {
|
||||||
|
curl -sk -X DELETE -H "${AUTH_HEADER}" "${API_BASE}$1" 2>/dev/null
|
||||||
|
}
|
||||||
|
|
||||||
|
# コマンド
|
||||||
|
case "${1:-help}" in
|
||||||
|
whoami)
|
||||||
|
api_get "/users/whoami" | python3 -m json.tool
|
||||||
|
;;
|
||||||
|
scripts|list-scripts)
|
||||||
|
api_get "/scripts/list?per_page=${2:-100}" | python3 -m json.tool
|
||||||
|
;;
|
||||||
|
flows|list-flows)
|
||||||
|
api_get "/flows/list?per_page=${2:-100}" | python3 -m json.tool
|
||||||
|
;;
|
||||||
|
get-script)
|
||||||
|
if [ -z "${2:-}" ]; then
|
||||||
|
echo "Usage: $0 get-script <path>"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
api_get "/scripts/get/p/$2" | python3 -m json.tool
|
||||||
|
;;
|
||||||
|
get-flow)
|
||||||
|
if [ -z "${2:-}" ]; then
|
||||||
|
echo "Usage: $0 get-flow <path>"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
api_get "/flows/get/$2" | python3 -m json.tool
|
||||||
|
;;
|
||||||
|
create-script)
|
||||||
|
if [ -z "${2:-}" ]; then
|
||||||
|
echo "Usage: $0 create-script <json-file>"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
api_post "/scripts/create" "$(cat "$2")"
|
||||||
|
;;
|
||||||
|
run-script)
|
||||||
|
if [ -z "${2:-}" ]; then
|
||||||
|
echo "Usage: $0 run-script <path> [json-args]"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
local_args="${3:-{\}}"
|
||||||
|
api_post "/jobs/run/p/$2" "${local_args}"
|
||||||
|
;;
|
||||||
|
run-flow)
|
||||||
|
if [ -z "${2:-}" ]; then
|
||||||
|
echo "Usage: $0 run-flow <path> [json-args]"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
local_args="${3:-{\}}"
|
||||||
|
api_post "/jobs/run/f/$2" "${local_args}"
|
||||||
|
;;
|
||||||
|
job-status)
|
||||||
|
if [ -z "${2:-}" ]; then
|
||||||
|
echo "Usage: $0 job-status <job-id>"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
api_get "/jobs_u/get/$2" | python3 -m json.tool
|
||||||
|
;;
|
||||||
|
job-result)
|
||||||
|
if [ -z "${2:-}" ]; then
|
||||||
|
echo "Usage: $0 job-result <job-id>"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
api_get "/jobs_u/completed/get_result/$2" | python3 -m json.tool
|
||||||
|
;;
|
||||||
|
schedules|list-schedules)
|
||||||
|
api_get "/schedules/list?per_page=${2:-100}" | python3 -m json.tool
|
||||||
|
;;
|
||||||
|
version)
|
||||||
|
curl -sk "${WINDMILL_URL}/api/version" 2>/dev/null
|
||||||
|
echo ""
|
||||||
|
;;
|
||||||
|
help|*)
|
||||||
|
cat << 'EOF'
|
||||||
|
Windmill REST API ヘルパー
|
||||||
|
|
||||||
|
使い方: ./wm-api.sh <command> [args...]
|
||||||
|
|
||||||
|
コマンド:
|
||||||
|
whoami - 現在のユーザー情報を表示
|
||||||
|
version - サーバーバージョンを表示
|
||||||
|
scripts - スクリプト一覧を表示
|
||||||
|
flows - フロー一覧を表示
|
||||||
|
get-script <path> - スクリプトの詳細を取得
|
||||||
|
get-flow <path> - フローの詳細を取得
|
||||||
|
create-script <file> - JSONファイルからスクリプトを作成
|
||||||
|
run-script <path> [args] - スクリプトを実行
|
||||||
|
run-flow <path> [args] - フローを実行
|
||||||
|
job-status <id> - ジョブのステータスを確認
|
||||||
|
job-result <id> - ジョブの結果を取得
|
||||||
|
schedules - スケジュール一覧を表示
|
||||||
|
EOF
|
||||||
|
;;
|
||||||
|
esac
|
||||||
1
wmill.yaml
Normal file
1
wmill.yaml
Normal file
@@ -0,0 +1 @@
|
|||||||
|
defaultTs: bun
|
||||||
Reference in New Issue
Block a user