Skip to content

Commit 038a54f

Browse files
comchangsclaude
andcommitted
fix: #49 #50 #52 #53 — critical legacy compat fixes
#49: Install creates persistent symlinks: - current/log → {baseDir}/log (logs survive redeploy/rollback) - current/{data_dir} → {baseDir}/{data_dir} (for each data_dirs entry) #50: Start command passes server IP as argument: cd current && bin/start.sh {srv.Host} (legacy compat: NSM passes hostname to start scripts) #52: noriter tow.yaml: added log_path for 6 infrastructure modules: kafka=server.log, zookeeper=zookeeper.out, s3-connector=connect.log, redis=redis.log, mongodb=mongod.log, grafana=grafana.log #53: noriter tow.yaml: zookeeper post_install hook creates myid file Remaining: #51 (package structure) needs package.sh equivalent or hooks Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent a6dcc90 commit 038a54f

2 files changed

Lines changed: 18 additions & 3 deletions

File tree

internal/deploy/deploy.go

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,9 +175,14 @@ cd %s
175175
rm -f current
176176
ln -s deploy/%s current
177177
178+
# Create persistent log symlink: current/log → {baseDir}/log
179+
mkdir -p %s/log
180+
ln -sfn %s/log %s/current/log 2>/dev/null || true
181+
178182
echo "DEPLOY_OK"
179183
`, deployDir, deployDir, baseDir, packageFile, baseDir, packageFile,
180-
baseDir, ts)
184+
baseDir, ts,
185+
baseDir, baseDir, baseDir)
181186

182187
result, err := d.ssh.Exec(env, srv.Host, installCmd)
183188
if err != nil {
@@ -199,6 +204,15 @@ TOWEOF
199204
`, baseDir, ts, gitCommit, gitBranch, gitMsg, os.Getenv("USER"))
200205
d.ssh.Exec(env, srv.Host, deployInfoCmd)
201206

207+
// Create persistent data symlinks for data_dirs
208+
if len(mod.DataDirs) > 0 {
209+
for _, dir := range mod.DataDirs {
210+
symlinkCmd := fmt.Sprintf("mkdir -p %s/%s && ln -sfn %s/%s %s/current/%s 2>/dev/null || true",
211+
baseDir, dir, baseDir, dir, baseDir, dir)
212+
d.ssh.Exec(env, srv.Host, symlinkCmd)
213+
}
214+
}
215+
202216
configPath := d.cfg.GetConfigPathByName(moduleName, envName, srv.Name, srv.Number)
203217
if configPath != "" {
204218
if info, err := os.Stat(configPath); err == nil && info.IsDir() {

internal/deploy/lifecycle.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@ func (d *Deployer) Start(envName, moduleName string, serverNum int) error {
3131
d.execHook(env, srv.Host, "pre_start", mod.Hooks.PreStart)
3232
}
3333

34-
cmd := fmt.Sprintf("cd %s/current && %s", baseDir, startCmd)
34+
// Pass server host as argument (legacy compat: bin/server start {IP})
35+
cmd := fmt.Sprintf("cd %s/current && %s %s", baseDir, startCmd, srv.Host)
3536
result, err := d.ssh.Exec(env, srv.Host, cmd)
3637
if err != nil {
3738
return fmt.Errorf("start failed: %w", err)
@@ -80,7 +81,7 @@ func (d *Deployer) StartRolling(envName, moduleName string, serverNum int) error
8081
d.execHook(env, srv.Host, "pre_start", mod.Hooks.PreStart)
8182
}
8283

83-
cmd := fmt.Sprintf("cd %s/current && %s", baseDir, startCmd)
84+
cmd := fmt.Sprintf("cd %s/current && %s %s", baseDir, startCmd, srv.Host)
8485
result, err := d.ssh.Exec(env, srv.Host, cmd)
8586
if err != nil {
8687
return fmt.Errorf("[%s] start failed: %w", srv.Host, err)

0 commit comments

Comments
 (0)