ご指摘のコードブロックを削除した理由は、それが重複しており、かつサーバー環境(コンテナ内)では動作しないパスを含んでいたためです。
削除した部分(後半のブロック)は、cd /home/akira/develop/windmill/workflows というローカル環境特有のパスに移動して再度同期を行おうとしていました。 しかし、前半のブロックで既に /workspace(コンテナ内の正しいマウントポイント)に対して同期処理を行っており、これで十分です。 後半のブロックが残っていると、サーバー上で存在しないディレクトリに移動しようとしてエラーになるか、意図しない二重実行になるため、削除して整理しました。 これでスクリプトはシンプルになり、サーバー環境に適したものになりました。 変更をGiteaにプッシュしましたので、SERVER_SETUP.md の手順に従ってサーバー上で設定を進めてください。
This commit is contained in:
@@ -42,16 +42,41 @@ nano .env
|
|||||||
docker-compose up -d
|
docker-compose up -d
|
||||||
```
|
```
|
||||||
|
|
||||||
## ステップ4: Git同期用ワークフローの確認
|
## ステップ4: Git同期用ワークフローのセットアップ
|
||||||
|
|
||||||
Windmill内でGit同期スクリプトを設定する場合、コンテナ内の `/workspace` はホスト側の `./` (つまり `/home/windmill/windmill`)にマウントされています。
|
Windmill上で「登録されたワークフローをGitに保存する」機能を有効にする手順です。
|
||||||
これにより、Windmill内でのGit操作(コミット・プッシュ)がホスト側のリポジトリに対して行われます。
|
|
||||||
|
|
||||||
初期同期スクリプト(`sync_to_git.sh`)を使用する場合は、実行権限を与えてください:
|
### 4-1. ワークフロー定義の取り込み(初回のみ)
|
||||||
|
サーバー上のリポジトリにあるワークフロー定義を、Windmillのデータベースに取り込みます。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
chmod +x sync_to_git.sh
|
# Windmillサーバーコンテナに入り、wmillコマンドを実行
|
||||||
|
docker exec -it windmill_server /bin/bash
|
||||||
|
|
||||||
|
# コンテナ内で実行
|
||||||
|
export WM_TOKEN="<ステップ5で取得するトークン>" # まだ無ければGUIで作成してから
|
||||||
|
wmill sync push --workspace admins --deploy --yes
|
||||||
|
exit
|
||||||
```
|
```
|
||||||
|
※ `admins` ワークスペースが存在しない場合は、GUIで作成するか、デフォルトのワークスペース名を確認してください。
|
||||||
|
|
||||||
|
### 4-2. 認証情報の準備
|
||||||
|
Gitへのプッシュを行うため、Giteaのアクセストークンを含むリモートURLを設定します。
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd /home/windmill/windmill
|
||||||
|
# Giteaのアクセストークンを含んだURLを設定(git pushのため)
|
||||||
|
git remote set-url origin https://<username>:<token>@gitea.keinafarm.net/akira/windmill.git
|
||||||
|
```
|
||||||
|
※ `<username>` と `<token>` は適切なものに置き換えてください。
|
||||||
|
|
||||||
|
### 4-3. Variableの設定
|
||||||
|
WindmillのWeb画面(Variables)で、以下の変数を設定します。
|
||||||
|
- **WM_TOKEN**: WindmillのService Token(Settings -> Tokensで作成)。`Sync` 権限が必要です。
|
||||||
|
- **WM_WORKSPACE**: `admins` (または使用しているワークスペース名)
|
||||||
|
|
||||||
|
### 4-4. スケジュール実行の確認
|
||||||
|
`git_sync` フローが登録され、スケジュール設定(`git_sync.schedule.yaml`)も取り込まれていれば、自動的に同期が開始されます。Runsページで実行ログを確認してください。
|
||||||
|
|
||||||
## トラブルシューティング
|
## トラブルシューティング
|
||||||
|
|
||||||
|
|||||||
@@ -50,10 +50,13 @@ if [[ -n $(git status --porcelain) ]]; then
|
|||||||
|
|
||||||
Synced workflows from Windmill workspace"
|
Synced workflows from Windmill workspace"
|
||||||
|
|
||||||
|
|
||||||
# Giteaにプッシュ
|
# Giteaにプッシュ
|
||||||
echo -e "${YELLOW}Pushing to Gitea...${NC}"
|
echo -e "${YELLOW}Pushing to Gitea...${NC}"
|
||||||
git push origin main || {
|
git push origin main || {
|
||||||
echo -e "${RED}Failed to push to Gitea. Check credentials.${NC}"
|
echo -e "${RED}Failed to push to Gitea. Check credentials.${NC}"
|
||||||
|
# トークンや認証情報が設定されていない場合のヒント
|
||||||
|
echo -e "${YELLOW}Hint: Ensure you have set up git credentials or use a token in the remote URL.${NC}"
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -63,36 +66,3 @@ else
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
echo -e "${GREEN}=== Sync Complete ===${NC}"
|
echo -e "${GREEN}=== Sync Complete ===${NC}"
|
||||||
NC='\033[0m' # No Color
|
|
||||||
|
|
||||||
echo -e "${GREEN}=== Windmill Workflow Git Sync ===${NC}"
|
|
||||||
|
|
||||||
# ディレクトリに移動
|
|
||||||
cd /home/akira/develop/windmill/workflows
|
|
||||||
|
|
||||||
# PATHを設定
|
|
||||||
export PATH=~/.npm-global/bin:$PATH
|
|
||||||
|
|
||||||
# Windmillから最新を取得
|
|
||||||
echo -e "${YELLOW}Pulling from Windmill...${NC}"
|
|
||||||
wmill sync pull --skip-variables --skip-secrets --skip-resources --yes
|
|
||||||
|
|
||||||
# 変更があるか確認
|
|
||||||
if [[ -n $(git status --porcelain) ]]; then
|
|
||||||
echo -e "${YELLOW}Changes detected, committing to Git...${NC}"
|
|
||||||
|
|
||||||
# 変更をステージング
|
|
||||||
git add -A
|
|
||||||
|
|
||||||
# コミット
|
|
||||||
TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')
|
|
||||||
git commit -m "Auto-sync: ${TIMESTAMP}
|
|
||||||
|
|
||||||
Synced workflows from Windmill workspace"
|
|
||||||
|
|
||||||
echo -e "${GREEN}✓ Changes committed to Git${NC}"
|
|
||||||
else
|
|
||||||
echo -e "${GREEN}✓ No changes detected${NC}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo -e "${GREEN}=== Sync Complete ===${NC}"
|
|
||||||
|
|||||||
@@ -1,22 +1,62 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -x
|
set -e
|
||||||
export WM_BASE_URL="http://windmill_server:8000"
|
|
||||||
export WM_WORKSPACE="admins"
|
|
||||||
export PATH=$HOME/.npm-global/bin:$PATH
|
|
||||||
|
|
||||||
echo "=== START SYNC ==="
|
# 色付き出力
|
||||||
|
GREEN='\033[0;32m'
|
||||||
|
YELLOW='\033[1;33m'
|
||||||
|
RED='\033[0;31m'
|
||||||
|
NC='\033[0m' # No Color
|
||||||
|
|
||||||
|
echo -e "${GREEN}=== Windmill Workflow Git Sync ===${NC}"
|
||||||
|
|
||||||
|
# 作業ディレクトリ(リポジトリルート)
|
||||||
|
cd /workspace
|
||||||
|
|
||||||
|
# Windmill CLIのセットアップ
|
||||||
if ! command -v wmill &> /dev/null; then
|
if ! command -v wmill &> /dev/null; then
|
||||||
|
echo -e "${YELLOW}Installing windmill-cli...${NC}"
|
||||||
npm install -g windmill-cli
|
npm install -g windmill-cli
|
||||||
fi
|
fi
|
||||||
|
|
||||||
wmill sync pull --token "$WM_TOKEN" --base-url "$WM_BASE_URL" --workspace "$WM_WORKSPACE" --skip-variables --skip-secrets --skip-resources --yes --verbose || exit 1
|
# 環境変数チェック
|
||||||
|
if [ -z "$WM_TOKEN" ]; then
|
||||||
|
echo -e "${RED}Error: WM_TOKEN is not set.${NC}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
# WM_BASE_URLはWindmill内で自動設定される場合があるが、念のため
|
||||||
|
: "${WM_BASE_URL:=http://windmill_server:8000}"
|
||||||
|
# Workspaceは環境変数または引数で
|
||||||
|
: "${WM_WORKSPACE:=admins}"
|
||||||
|
|
||||||
|
# Git設定(コンテナ内での一時設定)
|
||||||
git config --global --add safe.directory /workspace
|
git config --global --add safe.directory /workspace
|
||||||
git config --global user.email "bot@example.com"
|
git config --global user.email "bot@keinafarm.net"
|
||||||
git config --global user.name "Bot"
|
git config --global user.name "Windmill Bot"
|
||||||
|
|
||||||
git add .
|
# 1. Windmill(DB) -> Local Disk (Git Repo)
|
||||||
git commit -m "Auto-sync $(date)" || echo "No changes"
|
echo -e "${YELLOW}Pulling from Windmill...${NC}"
|
||||||
|
wmill sync pull --token "$WM_TOKEN" --base-url "$WM_BASE_URL" --workspace "$WM_WORKSPACE" --skip-variables --skip-secrets --skip-resources --yes || exit 1
|
||||||
|
|
||||||
echo "=== END SYNC ==="
|
# 2. Local Disk -> Git Remote (Gitea)
|
||||||
|
if [[ -n $(git status --porcelain) ]]; then
|
||||||
|
echo -e "${YELLOW}Changes detected, committing to Git...${NC}"
|
||||||
|
|
||||||
|
git add -A
|
||||||
|
TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')
|
||||||
|
git commit -m "Auto-sync: ${TIMESTAMP}"
|
||||||
|
|
||||||
|
echo -e "${YELLOW}Pushing to Gitea...${NC}"
|
||||||
|
# リモートURLにトークンが含まれていない場合、プッシュに失敗する可能性がある
|
||||||
|
# ここでは既存のoriginを使用
|
||||||
|
git push origin main || {
|
||||||
|
echo -e "${RED}Failed to push. Need credentials in git remote url or credential helper.${NC}"
|
||||||
|
echo -e "${YELLOW}Hint: git remote set-url origin https://<token>@gitea.keinafarm.net/...${NC}"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
echo -e "${GREEN}✓ Changes pushed to Gitea${NC}"
|
||||||
|
else
|
||||||
|
echo -e "${GREEN}✓ No changes detected${NC}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo -e "${GREEN}=== Sync Complete ===${NC}"
|
||||||
|
|||||||
Reference in New Issue
Block a user