replacer 제거

This commit is contained in:
2024-11-11 20:59:12 +09:00
parent a844bed056
commit 92432fcd83
3 changed files with 34 additions and 107 deletions

View File

@ -405,56 +405,43 @@ func NewClient(standalone bool) (HoustonClient, error) {
unmarshal(&dr, resp.Args) unmarshal(&dr, resp.Args)
logger.Println("args :", dr) logger.Println("args :", dr)
if dr.Name == myname { hn, _ := os.Hostname()
if srcdir, replacer, err := hc.prepareUpdateSelf(&dr); err == nil {
args := []string{ if err := hc.deploy(&dr, func(dp *protos.DeployingProgress) {
fmt.Sprintf("%d", os.Getpid()), dp.Hostname = hn
srcdir, dp.Name = dr.Name
filepath.ToSlash(os.Args[0]), dp.Version = dr.Version
} op.ReportDeployingProgress(ctx, dp)
args = append(args, os.Args[1:]...) }); err == nil {
cmd := exec.Command(replacer, args...) if dr.Name == "houston" {
if err := cmd.Start(); err != nil { // houston.update 다운로드가 완료되었으므로 종료
logger.Println(err) // 종료되고나면 스크립트가 알아서 재 실행
} else { hc.Shutdown()
hc.shutdownFunc() return
}
} else {
logger.Println(err)
} }
prog := gatherDeployedPrograms(hc.config.StorageRoot, dr.Name)
hc.deploys[dr.Name] = prog
op.Refresh(ctx, hc.makeOperationQueryRequest())
op.ReportDeployingProgress(ctx, &protos.DeployingProgress{
Hostname: hn,
Name: dr.Name,
Version: dr.Version,
State: "success",
Progress: 0,
Total: 0,
})
} else { } else {
hn, _ := os.Hostname() logger.Println(err)
if err := hc.deploy(&dr, func(dp *protos.DeployingProgress) { op.ReportDeployingProgress(ctx, &protos.DeployingProgress{
dp.Hostname = hn Hostname: hn,
dp.Name = dr.Name Name: dr.Name,
dp.Version = dr.Version Version: dr.Version,
op.ReportDeployingProgress(ctx, dp) State: "fail:" + err.Error(),
}); err == nil { Progress: 0,
prog := gatherDeployedPrograms(hc.config.StorageRoot, dr.Name) Total: 0,
hc.deploys[dr.Name] = prog })
op.Refresh(ctx, hc.makeOperationQueryRequest())
op.ReportDeployingProgress(ctx, &protos.DeployingProgress{
Hostname: hn,
Name: dr.Name,
Version: dr.Version,
State: "success",
Progress: 0,
Total: 0,
})
} else {
logger.Println(err)
op.ReportDeployingProgress(ctx, &protos.DeployingProgress{
Hostname: hn,
Name: dr.Name,
Version: dr.Version,
State: "fail:" + err.Error(),
Progress: 0,
Total: 0,
})
}
} }
case shared.Withdraw: case shared.Withdraw:

View File

@ -282,57 +282,9 @@ func copyfile(src, dst string) error {
return nil return nil
} }
func (hc *houstonClient) prepareUpdateSelf(req *shared.DeployRequest) (srcdir string, replacer string, err error) {
// 내가 스스로 업데이트
// 다운로드 받고 압축 푼 다음에 교체용 프로세스 시작
tempdir, err := os.MkdirTemp(os.TempDir(), "*")
if err != nil {
return "", "", err
}
fname, err := download(tempdir, hc.makeDownloadUrl(req.Url), req.AccessToken, nil)
if err != nil {
return "", "", err
}
switch path.Ext(fname) {
case ".zip":
err = unzip(fname)
case ".tar":
err = untar(fname)
}
if err != nil {
return "", "", err
}
// houston version 파일
err = os.WriteFile(path.Join(path.Dir(fname), "@version"), []byte(req.Version), 0644)
if err != nil {
return "", "", err
}
selfname, _ := os.Executable()
srcreplacer := path.Join(path.Dir(fname), "replacer") + path.Ext(selfname)
replacer = "./" + filepath.ToSlash("replacer"+path.Ext(selfname))
err = copyfile(srcreplacer, replacer)
if err == nil {
err = os.Chmod(replacer, 0775)
}
// replacer먼저 가져옴
return filepath.ToSlash(tempdir), replacer, err
}
func (hc *houstonClient) deploy(req *shared.DeployRequest, cb func(*protos.DeployingProgress)) (err error) { func (hc *houstonClient) deploy(req *shared.DeployRequest, cb func(*protos.DeployingProgress)) (err error) {
logger.Println("start deploying") logger.Println("start deploying")
defer func() {
if req.Name == "houston" && err == nil {
// houston.update 다운로드가 완료되었으므로 종료
// 종료되고나면 스크립트가 알아서 재 실행
hc.Shutdown()
}
}()
var root string var root string
if req.Name == "houston" { if req.Name == "houston" {
// houston은 버전없이 houston.update폴더로 다운로드 // houston은 버전없이 houston.update폴더로 다운로드

View File

@ -10,19 +10,7 @@ go mod tidy
go build -ldflags="-s -w" -tags=client . go build -ldflags="-s -w" -tags=client .
cp houston .\replacer\houston
cp config.json .\replacer\config.json
cd replacer
go build -ldflags="-s -w" .
Compress-Archive -Path replacer -DestinationPath houston.zip -Force
Compress-Archive -Path config.json -Update -DestinationPath houston.zip Compress-Archive -Path config.json -Update -DestinationPath houston.zip
Compress-Archive -Path houston -Update -DestinationPath houston.zip Compress-Archive -Path houston -Update -DestinationPath houston.zip
del houston
del config.json
del replacer
mv houston.zip ..\houston.zip
cd ..