package maker import ( "context" "fmt" "os" "path/filepath" "yizhisec.com/hsv2/forge/pkg/logger" "yizhisec.com/hsv2/forge/pkg/resource" ) // AppHelper func (m *maker) AppHelper(ctx context.Context, version string, vendor string, replica int) error { const ( // _config = `` _upsert = `#!/bin/bash kubectl apply -f deployment.yaml kubectl rollout restart deployment app-helper-deployment -n hsv2` ) var ( err error workdir = filepath.Join(m.workdir, "app", "helper") ) logger.Info("☑️ maker.AppHelper: 开始构建 helper 应用..., version = %s, vendor = %s, dir = %s", version, vendor, workdir) _ = os.RemoveAll(workdir) logger.Debug("☑️ maker.AppHelper: 开始创建工作目录 = %s", workdir) if err = os.MkdirAll(workdir, 0755); err != nil { logger.Debug("❌ maker.AppHelper: 创建目录失败: %v", err) return err } logger.Debug("✅ maker.AppHelper: 创建工作目录成功 = %s", workdir) imgName := "hub.yizhisec.com/hsv2/app/helper:latest" logger.Debug("☑️ maker.AppHelper: start pull image = %s", imgName) if err = m.Image(ctx, imgName, WithImageForcePull(true), WithImageSave(filepath.Join(workdir, "helper.tar")), ); err != nil { logger.Debug("❌ maker.AppHelper: 拉取镜像失败: %v", err) return err } logger.Debug("✅ maker.AppHelper: pull image success = %s", imgName) if replica < 1 { replica = 1 } logger.Debug("☑️ maker.AppHelper: 开始构建 yaml 资源文件") content := []byte(fmt.Sprintf(resource.YAMLAppHelper, replica, version)) if err = os.WriteFile(filepath.Join(workdir, "deployment.yaml"), content, 0644); err != nil { logger.Debug("❌ maker.AppHelper: 写入 deployment.yaml 失败: %v", err) return err } logger.Debug("✅ maker.AppHelper: 开始 yaml 资源文件成功") logger.Debug("☑️ maker.AppHelper: 开始构建 upsert.sh 脚本") if err = os.WriteFile(filepath.Join(workdir, "upsert.sh"), []byte(_upsert), 0755); err != nil { logger.Debug("❌ maker.AppHelper: 写入 upsert.sh 失败: %v", err) return err } logger.Debug("✅ maker.AppHelper: 构建 upsert.sh 脚本成功") if err = os.WriteFile(filepath.Join(workdir, "version.txt"), []byte(version), 0644); err != nil { logger.Debug("❌ maker.AppHelper: 写入 version.txt 失败: %v", err) return err } logger.Info("✅ maker.AppHelper: 构建 helper 应用成功!!! version = %s", version) return nil }