From a78c16d301ccb669af411bedd7dfe192aec4668e Mon Sep 17 00:00:00 2001 From: algotao Date: Fri, 25 Jul 2025 17:25:17 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96task=20make?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + cmd.pb.go | 2 +- cmd.proto | 2 +- cmd/saastool/params.go | 2 +- cmd/saastool/task_make.go | 3 +++ cmd/saastool/task_upload.go | 4 +++- docker/saastool.Dockerfile | 14 ++++++++++++++ makeproto.sh => genproto.sh | 0 make.sh | 3 +++ 9 files changed, 27 insertions(+), 4 deletions(-) create mode 100644 docker/saastool.Dockerfile rename makeproto.sh => genproto.sh (100%) create mode 100755 make.sh diff --git a/.gitignore b/.gitignore index 0d71826..7f3a4ad 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ vendor/ *.out +build/ \ No newline at end of file diff --git a/cmd.pb.go b/cmd.pb.go index b15b04c..4005a94 100644 --- a/cmd.pb.go +++ b/cmd.pb.go @@ -992,7 +992,7 @@ type Task struct { TaskSha256 string `protobuf:"bytes,3,opt,name=task_sha256,json=taskSha256,proto3" json:"task_sha256,omitempty"` // 任务sha256 TaskDescription string `protobuf:"bytes,4,opt,name=task_description,json=taskDescription,proto3" json:"task_description,omitempty"` // 任务描述 TaskFileInfos []*FileInfo `protobuf:"bytes,5,rep,name=task_file_infos,json=taskFileInfos,proto3" json:"task_file_infos,omitempty"` // 文件列表 - TaskBlockSize uint64 `protobuf:"varint,6,opt,name=task_block_size,json=taskBlockSize,proto3" json:"task_block_size,omitempty"` // 文件块字节大小(推荐200M) + TaskBlockSize uint64 `protobuf:"varint,6,opt,name=task_block_size,json=taskBlockSize,proto3" json:"task_block_size,omitempty"` // 文件块字节大小(推荐50M) SourcePath string `protobuf:"bytes,7,opt,name=source_path,json=sourcePath,proto3" json:"source_path,omitempty"` // 任务数据源路径 TaskSize uint64 `protobuf:"varint,8,opt,name=task_size,json=taskSize,proto3" json:"task_size,omitempty"` // 任务所有文件的总大小 // 以下字段只在返回时填写,用于提供服务端的任务状态。在请求时填写会被忽略 diff --git a/cmd.proto b/cmd.proto index 103c054..9f40bda 100644 --- a/cmd.proto +++ b/cmd.proto @@ -91,7 +91,7 @@ message Task { string task_sha256 = 3; // 任务sha256 string task_description = 4; // 任务描述 repeated FileInfo task_file_infos = 5; // 文件列表 - uint64 task_block_size = 6; // 文件块字节大小(推荐200M) + uint64 task_block_size = 6; // 文件块字节大小(推荐50M) string source_path = 7; // 任务数据源路径 uint64 task_size = 8; // 任务所有文件的总大小 diff --git a/cmd/saastool/params.go b/cmd/saastool/params.go index 596ef26..414855a 100644 --- a/cmd/saastool/params.go +++ b/cmd/saastool/params.go @@ -62,7 +62,7 @@ func paramBatchSize(fs *flag.FlagSet) *uint { } func paramBlockSize(fs *flag.FlagSet) *string { - return fs.String("blocksize", "200M", "Block size to make hash. using size mode K, M, G, T") + return fs.String("blocksize", "50M", "Block size to make hash. using size mode K, M, G, T") } func paramClear(fs *flag.FlagSet) *bool { diff --git a/cmd/saastool/task_make.go b/cmd/saastool/task_make.go index 14bfee3..a739d31 100644 --- a/cmd/saastool/task_make.go +++ b/cmd/saastool/task_make.go @@ -104,6 +104,9 @@ func doMakeHash(makeTaskParams *makeTaskParams, firstLevel bool) error { if !fsInfo.IsDir() { // 如果是文件,直接计算 + if firstLevel { + makeTaskParams.task.SourcePath = filepath.Dir(makeTaskParams.sourcePath) + } err = doTaskMake(makeTaskParams) if err != nil { return err diff --git a/cmd/saastool/task_upload.go b/cmd/saastool/task_upload.go index 26b9b10..04769c2 100644 --- a/cmd/saastool/task_upload.go +++ b/cmd/saastool/task_upload.go @@ -94,7 +94,9 @@ func doTaskUpload(uploadTaskParams uploadTaskParams) error { } if blockRes.GetCode() != saasapi.ErrorCode_SUCC { - return fmt.Errorf("upload block error, code %d, msg %s", blockRes.GetCode(), blockRes.GetStatus()) + err = fmt.Errorf("upload block error, code %d, msg %s", blockRes.GetCode(), blockRes.GetStatus()) + fmt.Fprintln(os.Stderr, err) + return err } else { fmt.Printf("upload block success. file: %v, sha256 %v. block %v/%v, file %v/%v\n", finfo.GetFileName(), binfo.GetBlockSha256(), diff --git a/docker/saastool.Dockerfile b/docker/saastool.Dockerfile new file mode 100644 index 0000000..5a72455 --- /dev/null +++ b/docker/saastool.Dockerfile @@ -0,0 +1,14 @@ +FROM rta-docker.pkg.coding.net/public/docker/entre_dev:latest AS builder + +ARG TARGETOS TARGETARCH APPNAME + +COPY . /tmp/saasapi/ +WORKDIR /tmp/saasapi/ + +RUN --mount=type=cache,target=/root/.cache/go-build \ + --mount=type=cache,target=/go/pkg \ + ./make.sh + +FROM rta-docker.pkg.coding.net/public/docker/alpine:latest AS product + +COPY --from=builder /tmp/saasapi/build/saastool /bin/saastool diff --git a/makeproto.sh b/genproto.sh similarity index 100% rename from makeproto.sh rename to genproto.sh diff --git a/make.sh b/make.sh new file mode 100755 index 0000000..98e043a --- /dev/null +++ b/make.sh @@ -0,0 +1,3 @@ +cd cmd/saastool +go build -o ../../build/saastool +cd ../../ \ No newline at end of file