diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml index 4e9446c..a347bfa 100644 --- a/.github/workflows/go.yml +++ b/.github/workflows/go.yml @@ -37,4 +37,4 @@ jobs: go-version: '1.20' - name: Build - run: go build -v + run: sh build.sh diff --git a/README.md b/README.md index aada336..15a2a96 100644 --- a/README.md +++ b/README.md @@ -74,7 +74,7 @@ yum install golang Then, navigate to the doris-streamloader directory and execute: ``` -cd doris-streamloader && go build +cd doris-streamloader && sh build.sh ``` diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..7f79b8d --- /dev/null +++ b/build.sh @@ -0,0 +1,20 @@ +#!/bin/bash +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +go generate +go build diff --git a/gen_version.go b/gen_version.go new file mode 100644 index 0000000..abe7551 --- /dev/null +++ b/gen_version.go @@ -0,0 +1,65 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +//go:build generate +// +build generate + +package main + +import ( + "fmt" + "os" + "os/exec" + "strings" +) + +func main() { + commit, err := getGitCommit() + if err != nil { + fmt.Println("Error getting Git commit:", err) + os.Exit(1) + } + + tag, err := getGitTag() + if err != nil { + fmt.Println("Error getting Git tag:", err) + os.Exit(1) + } + + content := fmt.Sprintf("// Code generated by go generate; DO NOT EDIT.\n\npackage main\n\nvar (\n\tGitCommit = \"%s\"\n\tVersion = \"%s\"\n)\n", commit, tag) + + if err := os.WriteFile("version.go", []byte(content), 0644); err != nil { + fmt.Println("Error writing version.go:", err) + os.Exit(1) + } +} + +func getGitCommit() (string, error) { + out, err := exec.Command("git", "rev-parse", "HEAD").Output() + if err != nil { + return "", err + } + return strings.Split(string(out), "\n")[0], nil +} + +func getGitTag() (string, error) { + out, err := exec.Command("git", "describe", "--tags", "--abbrev=0").Output() + if err != nil { + return "", err + } + return strings.Split(string(out), "\n")[0], nil +} diff --git a/main.go b/main.go index 5b0e9f8..64d7de3 100644 --- a/main.go +++ b/main.go @@ -22,14 +22,13 @@ import ( "fmt" "math" "os" - "os/exec" "strconv" "strings" "sync" "time" "doris-streamloader/loader" - "doris-streamloader/reader" + file "doris-streamloader/reader" "doris-streamloader/report" "doris-streamloader/utils" @@ -188,17 +187,11 @@ func initFlags() { utils.InitLog(logLevel) } +//go:generate go run gen_version.go func paramCheck() { if showVersion { - var err error - commitHash, err := getCommitHash() - if err != nil { - log.Warn("Failed to get commit info", err) - } - version, err := getTag() - if err != nil { - log.Warn("Failed to get version info", err) - } + commitHash := GitCommit + version := Version fmt.Printf("version %s, git commit %s\n", version, commitHash) os.Exit(0) } @@ -332,30 +325,6 @@ func createQueues(queues *[]chan []byte) { } } -func getCommitHash() (string, error) { - cmd := exec.Command("git", "rev-parse", "HEAD") - outputBytes, err := cmd.Output() - if err != nil { - return "", err - } - - commitHash := string(outputBytes) - commitHash = strings.TrimSpace(commitHash) - - return commitHash, nil -} - -func getTag() (string, error) { - cmd := exec.Command("git", "describe", "--tags", "--abbrev=0") - output, err := cmd.Output() - if err != nil { - return "", err - } - - tag := strings.TrimSpace(string(output)) - return tag, nil -} - func main() { initFlags() retryCount := 0