63 lines
2.1 KiB
Go
63 lines
2.1 KiB
Go
package maker
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"os"
|
|
"path/filepath"
|
|
|
|
"gitea.loveuer.com/yizhisec/pkg3/logger"
|
|
"yizhisec.com/hsv2/forge/pkg/model"
|
|
"yizhisec.com/hsv2/forge/pkg/resource"
|
|
)
|
|
|
|
// todo, remake minio-init image
|
|
func (m *maker) Minio(ctx context.Context, storage string) error {
|
|
var (
|
|
err error
|
|
location = filepath.Join(m.workdir, "dependency", "minio")
|
|
)
|
|
|
|
logger.Info("☑️ maker.Minio: 开始构建 minio 依赖, workdir = %s", location)
|
|
|
|
logger.Debug("☑️ maker.Minio: 构建工作目录, workdir = %s", location)
|
|
if err = os.MkdirAll(location, 0755); err != nil {
|
|
logger.Debug("❌ maker.Minio: 创建工作目录失败, workdir = %s, err = %v", location, err)
|
|
return err
|
|
}
|
|
logger.Debug("✅ maker.Minio: 创建工作目录成功, workdir = %s", location)
|
|
|
|
filename := filepath.Join(location, "minio.yaml")
|
|
logger.Debug("☑️ maker.Minio: 准备资源文件, filename = %s, storage = %s", filename, storage)
|
|
bs := []byte(fmt.Sprintf(resource.YAMLMinIO, storage))
|
|
if err = os.WriteFile(filename, bs, 0644); err != nil {
|
|
logger.Debug("❌ maker.Minio: 写入资源文件失败, filename = %s, err = %v", filename, err)
|
|
return err
|
|
}
|
|
logger.Debug("✅ maker.Minio: 准备资源文件成功, filename = %s", filename)
|
|
|
|
logger.Debug("☑️ maker.Minio: 开始获取所需镜像...")
|
|
var images = []*model.Image{
|
|
{Name: "hub.yizhisec.com/hybridscope/v3/minio-init:latest", Fallback: "", Save: "dep.minio-init.tar"},
|
|
{Name: "hub.yizhisec.com/external/minio:RELEASE.2025-03-12T18-04-18Z", Fallback: "", Save: "dep.minio.tar"},
|
|
}
|
|
for _, image := range images {
|
|
opts := []ImageOpt{
|
|
WithImageFallback(image.Fallback),
|
|
WithImageSave(filepath.Join(location, image.Save)),
|
|
WithImageForcePull(image.Force),
|
|
}
|
|
|
|
if err := m.Image(ctx, image.Name, opts...); err != nil {
|
|
logger.Error("❌ maker.Minio: 获取镜像失败: %s, 可以手动获取后重试", image.Name)
|
|
logger.Debug("❌ maker.Minio: 获取镜像失败: %s, %v", image.Name, err)
|
|
return err
|
|
}
|
|
}
|
|
logger.Debug("✅ maker.Minio: 获取所需镜像成功!!!")
|
|
|
|
logger.Info("✅ maker.Minio: 构建 minio 依赖成功, workdir = %s", location)
|
|
|
|
return nil
|
|
}
|