おっしゃる通り、説明が不十分でした。整理させてください。
/workspace はコンテナ内のパスです。 docker-compose.yml の - .:/workspace によって、サーバーのホスト上の ~/windmill/(リポジトリルート)がコンテナ内の /workspace にマウントされています。 a.sh はWindmillのWorkerコンテナ内で実行されるので、スクリプト内で使う /workspace はコンテナ内のパスとして正しいです。 ただし、問題は wmill.yaml がリポジトリルートではなく workflows/ サブディレクトリにある ことです。コンテナ内で言うと /workspace/workflows/ に wmill.yaml があるので、スクリプトの cd /workspace を cd /workspace/workflows に変更する必要があります。 修正します: Analyzed a.sh#L1-63 なるほど、ポイントは以下の通りです: cd /workspace → コンテナ内ではリポジトリルートです。しかし wmill.yaml はここにはなく、workflows/ の中にあります。 wmill sync pull は wmill.yaml がある場所で実行しなければ動きません。 git 操作(add, commit, push)はリポジトリルート(/workspace)で行う必要があります。 つまり、wmill sync pull は /workspace/workflows で、git 操作は /workspace で行う、という二段構えが必要です。修正します: Edited a.sh +9 -5 修正しました。最終的なスクリプトの流れを確認します: Analyzed a.sh#L1-67 修正後のスクリプトは以下の流れになっています: cd /workspace/workflows → wmill.yaml がある場所で wmill sync pull を実行(Windmill DB → ファイルに書き出し) cd /workspace → Gitリポジトリルートに戻って git add / commit / push(ファイル → Gitea) ここで重要な補足: /workspace はサーバーのホスト上のパスではなく、コンテナ内のパスです。 docker-compose.yml の - .:/workspace により、ホスト上の ~/windmill/(docker-composeを実行した場所)がコンテナ内の /workspace にマウントされます。 つまり、コンテナ内の /workspace/workflows/ = ホスト上の ~/windmill/workflows/ です。 a.sh はWindmillのWorkerコンテナ内で実行されるので、コンテナ内パス(/workspace)を使うのが正しいです。 この変更をGiteaにプッシュしますか?プッシュ後、サーバー側で git pull して再度お試しください。
This commit is contained in:
@@ -47,7 +47,9 @@ docker-compose up -d
|
||||
Windmill上で「登録されたワークフローをGitに保存する」機能を有効にする手順です。
|
||||
|
||||
### 4-1. ワークフロー定義の取り込み(初回のみ)
|
||||
サーバー上のリポジトリにあるワークフロー定義を、Windmillのデータベースに取り込みます。
|
||||
|
||||
**重要**: リポジトリ構成上、`wmill.yaml` は `workflows` ディレクトリ内にあります。
|
||||
Windmillコンテナはデフォルトでルートの `/workspace` を見ていますが、実際のデータは `/workspace/workflows` にあるため、同期時にパスを指定する必要があります。
|
||||
|
||||
```bash
|
||||
# Windmillサーバーコンテナに入り、wmillコマンドを実行
|
||||
@@ -55,6 +57,9 @@ docker exec -it windmill_server /bin/bash
|
||||
|
||||
# コンテナ内で実行
|
||||
export WM_TOKEN="<ステップ5で取得するトークン>" # まだ無ければGUIで作成してから
|
||||
|
||||
# 初回同期(workflowsディレクトリを指定して同期)
|
||||
cd /workspace/workflows
|
||||
wmill sync push --workspace admins --deploy --yes
|
||||
exit
|
||||
```
|
||||
|
||||
@@ -9,8 +9,10 @@ NC='\033[0m' # No Color
|
||||
|
||||
echo -e "${GREEN}=== Windmill Workflow Git Sync ===${NC}"
|
||||
|
||||
# 作業ディレクトリ(リポジトリルート)
|
||||
cd /workspace
|
||||
# リポジトリルート(コンテナ内: docker-compose.ymlの .:/workspace マウント)
|
||||
REPO_ROOT="/workspace"
|
||||
# wmill.yamlがあるディレクトリ(Windmill CLIはここで実行する)
|
||||
WMILL_DIR="${REPO_ROOT}/workflows"
|
||||
|
||||
# Windmill CLIのセットアップ
|
||||
if ! command -v wmill &> /dev/null; then
|
||||
@@ -29,15 +31,17 @@ fi
|
||||
: "${WM_WORKSPACE:=admins}"
|
||||
|
||||
# Git設定(コンテナ内での一時設定)
|
||||
git config --global --add safe.directory /workspace
|
||||
git config --global --add safe.directory "$REPO_ROOT"
|
||||
git config --global user.email "bot@keinafarm.net"
|
||||
git config --global user.name "Windmill Bot"
|
||||
|
||||
# 1. Windmill(DB) -> Local Disk (Git Repo)
|
||||
# 1. Windmill(DB) -> Local Disk(wmill.yamlがあるディレクトリで実行)
|
||||
echo -e "${YELLOW}Pulling from Windmill...${NC}"
|
||||
cd "$WMILL_DIR"
|
||||
wmill sync pull --token "$WM_TOKEN" --base-url "$WM_BASE_URL" --workspace "$WM_WORKSPACE" --skip-variables --skip-secrets --skip-resources --yes || exit 1
|
||||
|
||||
# 2. Local Disk -> Git Remote (Gitea)
|
||||
# 2. Local Disk -> Git Remote(Gitリポジトリルートに戻ってgit操作)
|
||||
cd "$REPO_ROOT"
|
||||
if [[ -n $(git status --porcelain) ]]; then
|
||||
echo -e "${YELLOW}Changes detected, committing to Git...${NC}"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user