From 61ce6d85bbffe541aaa211b51b02b70fe16e4ca6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=99=8B=E6=99=A8=E6=9B=A6?= Date: Mon, 14 Oct 2024 16:17:16 +0800 Subject: [PATCH] feat(ci/cd):add (ci/cd) --- .github/workflows/build.yaml | 33 ++++++++++++++++ .gitignore | 2 - configs/config.yaml | 56 ++++++++++++++++++++++++++++ internal/configs/middlewareConfig.go | 2 +- internal/utils/featureTool.go | 27 ++++++++------ 5 files changed, 105 insertions(+), 15 deletions(-) create mode 100644 .github/workflows/build.yaml create mode 100644 configs/config.yaml diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml new file mode 100644 index 0000000..1c7b0c4 --- /dev/null +++ b/.github/workflows/build.yaml @@ -0,0 +1,33 @@ +name: Build and Push Docker image to Aliyun on Commit + +on: + push: + branches: + - main + pull_request: + branches: + - main + +jobs: + build-and-push: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + + - name: Log in to Aliyun Docker Registry + run: | + echo "${{ secrets.ALIYUN_ACCESS_KEY_SECRET }}" | docker login --username ${{ secrets.ALIYUN_ACCESS_KEY_ID }} --password-stdin registry.cn-shanghai.aliyuncs.com + + - name: Build and push Docker image + run: | + docker build -t sep:latest . + docker tag sep:latest registry.cn-shanghai.aliyuncs.com/oorangeeee/sep:latest + docker push registry.cn-shanghai.aliyuncs.com/oorangeeee/sep:latest + + - name: Log out from Aliyun Docker Registry + if: always() + run: docker logout registry.cn-shanghai.aliyuncs.com diff --git a/.gitignore b/.gitignore index 7858ac6..e4c3f84 100644 --- a/.gitignore +++ b/.gitignore @@ -42,8 +42,6 @@ package-lock.json web/node_modules/ web/public/ -config.yaml - vendor/ ai/Polyp_detection/ diff --git a/configs/config.yaml b/configs/config.yaml new file mode 100644 index 0000000..e9bdc8e --- /dev/null +++ b/configs/config.yaml @@ -0,0 +1,56 @@ +server: + port: 714 + host: "https://111.cn" +database: + dataBaseUserName: "postgres" + dataBasePassword: "bsbflsgxh.." + dataBaseIp: "db" + dataBasePort: "5432" + dataBaseName: "sep" +email: + emailHost: "111" + emailPort: 111 + emailUserName: "111" + emailPassword: "111" + emailFromNickname: "111" + emailOfRegister: + timeRange: 1 + subject: "111" + body: 1 +Confirm: + return: 1 +info: + contactPhone: "1" + emailAddress: "1" + webSite: "1" +jwt: + jwtSecret: "1" + admin: + adminSecret: "1" +upload: + qiniu: + accessKey: "1" + secretKey : "1" + bucket : "1" + domain : "1" +feature: + sshPort: 1 + secret: 1 + active: false + pythonPath: "1" + detect: + detectPath: "1" + weights: "1" + result: "1" + segment: + segmentPath: "1" + model: "1" + result: "1" + track: + trackPath: "1" + yolo-weights: "1" + device: 0 + config-strongsort: "1" + result: "1" +config: + token: "jcxnb0714" \ No newline at end of file diff --git a/internal/configs/middlewareConfig.go b/internal/configs/middlewareConfig.go index 64f5467..049618b 100644 --- a/internal/configs/middlewareConfig.go +++ b/internal/configs/middlewareConfig.go @@ -34,7 +34,7 @@ func InitMiddleware(e *echo.Echo) { // CORS e.Use(middleware.CORSWithConfig(middleware.CORSConfig{ - AllowOrigins: []string{"https://base.polypeye.cn"}, + AllowOrigins: []string{"https://base.polypeye.cn", "https://new.polypeye.cn"}, AllowMethods: []string{http.MethodGet, http.MethodPost, http.MethodPut, http.MethodDelete, http.MethodOptions}, AllowHeaders: []string{"Authorization", "Content-Type", "X-Csrf-Token", "Origin", "Accept"}, ExposeHeaders: []string{"X-Csrf-Token"}, diff --git a/internal/utils/featureTool.go b/internal/utils/featureTool.go index f67fa5d..979c8ca 100644 --- a/internal/utils/featureTool.go +++ b/internal/utils/featureTool.go @@ -15,6 +15,7 @@ type FeatureTool struct { func (ft *FeatureTool) Detect(source string) (string, error) { uploadTool := UploadTool{} + sshPort := viper.GetString("feature.sshPort") if viper.GetBool("feature.active") { uuidTool := UUIDTool{} uuid := uuidTool.GenerateUUID() @@ -60,7 +61,7 @@ func (ft *FeatureTool) Detect(source string) (string, error) { sshOpts := "-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" sshPass := fmt.Sprintf("sshpass -p '%s' ", sshSecret) - cmd := exec.Command("bash", "-c", sshPass+fmt.Sprintf("ssh %s -p 27075 root@connect.yza1.seetacloud.com 'mkdir -p /services/images/%s'", sshOpts, uuid)) + cmd := exec.Command("bash", "-c", sshPass+fmt.Sprintf("ssh %s -p %s root@connect.yza1.seetacloud.com 'mkdir -p /services/images/%s'", sshOpts, sshPort, uuid)) if err := cmd.Run(); err != nil { Log.WithFields(logrus.Fields{ "error": err, @@ -69,7 +70,7 @@ func (ft *FeatureTool) Detect(source string) (string, error) { return "", err } - scpCmd := exec.Command("bash", "-c", sshPass+fmt.Sprintf("scp %s -P 27075 %s root@connect.yza1.seetacloud.com:/services/images/%s/", sshOpts, source, uuid)) + scpCmd := exec.Command("bash", "-c", sshPass+fmt.Sprintf("scp %s -P %s %s root@connect.yza1.seetacloud.com:/services/images/%s/", sshOpts, sshPort, source, uuid)) if err := scpCmd.Run(); err != nil { Log.WithFields(logrus.Fields{ "error": err, @@ -78,7 +79,7 @@ func (ft *FeatureTool) Detect(source string) (string, error) { return "", err } - detectCmd := exec.Command("bash", "-c", sshPass+fmt.Sprintf("ssh %s -p 27075 root@connect.yza1.seetacloud.com '/root/miniconda3/bin/python3.9 /sep/ai/ai/Polyp_detection/detect.py --weights /sep/ai/ai/Polyp_detection/weights/best.pt --source /services/images/%s/%s'", sshOpts, uuid, filepath.Base(source))) + detectCmd := exec.Command("bash", "-c", sshPass+fmt.Sprintf("ssh %s -p %s root@connect.yza1.seetacloud.com '/root/miniconda3/bin/python3.9 /sep/ai/ai/Polyp_detection/detect.py --weights /sep/ai/ai/Polyp_detection/weights/best.pt --source /services/images/%s/%s'", sshOpts, sshPort, uuid, filepath.Base(source))) if err := detectCmd.Run(); err != nil { Log.WithFields(logrus.Fields{ "error": err, @@ -87,7 +88,7 @@ func (ft *FeatureTool) Detect(source string) (string, error) { return "", err } - downloadCmd := exec.Command("bash", "-c", sshPass+fmt.Sprintf("scp %s -r -P 27075 root@connect.yza1.seetacloud.com:/sep/ai/ai/Polyp_detection/runs/detect %s/", sshOpts, localDir)) + downloadCmd := exec.Command("bash", "-c", sshPass+fmt.Sprintf("scp %s -r -P %s root@connect.yza1.seetacloud.com:/sep/ai/ai/Polyp_detection/runs/detect %s/", sshOpts, sshPort, localDir)) if err := downloadCmd.Run(); err != nil { Log.WithFields(logrus.Fields{ "error": err, @@ -144,6 +145,7 @@ func (ft *FeatureTool) Detect(source string) (string, error) { func (ft *FeatureTool) Segment(source string) (string, error) { uploadTool := UploadTool{} + sshPort := viper.GetString("feature.sshPort") if viper.GetBool("feature.active") { uuidTool := UUIDTool{} uuid := uuidTool.GenerateUUID() @@ -187,7 +189,7 @@ func (ft *FeatureTool) Segment(source string) (string, error) { sshOpts := "-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" sshPass := fmt.Sprintf("sshpass -p '%s' ", sshSecret) - cmd := exec.Command("bash", "-c", sshPass+fmt.Sprintf("ssh %s -p 27075 root@connect.yza1.seetacloud.com 'mkdir -p /services/images/%s'", sshOpts, uuid)) + cmd := exec.Command("bash", "-c", sshPass+fmt.Sprintf("ssh %s -p %s root@connect.yza1.seetacloud.com 'mkdir -p /services/images/%s'", sshOpts, sshPort, uuid)) if err := cmd.Run(); err != nil { Log.WithFields(logrus.Fields{ "error": err, @@ -196,7 +198,7 @@ func (ft *FeatureTool) Segment(source string) (string, error) { return "", err } - scpCmd := exec.Command("bash", "-c", sshPass+fmt.Sprintf("scp %s -P 27075 %s root@connect.yza1.seetacloud.com:/services/images/%s/", sshOpts, source, uuid)) + scpCmd := exec.Command("bash", "-c", sshPass+fmt.Sprintf("scp %s -P %s %s root@connect.yza1.seetacloud.com:/services/images/%s/", sshOpts, sshPort, source, uuid)) if err := scpCmd.Run(); err != nil { Log.WithFields(logrus.Fields{ "error": err, @@ -205,7 +207,7 @@ func (ft *FeatureTool) Segment(source string) (string, error) { return "", err } - segmentCmd := exec.Command("bash", "-c", sshPass+fmt.Sprintf("ssh %s -p 27075 root@connect.yza1.seetacloud.com '/root/miniconda3/bin/python3.9 /sep/ai/ai/Polyp-PVT-main/run.py --model /sep/ai/ai/Polyp-PVT-main/model_pth/PolypPVT.pth --result /sep/ai/ai/Polyp-PVT-main/result/ --image /services/images/%s/%s'", sshOpts, uuid, filepath.Base(source))) + segmentCmd := exec.Command("bash", "-c", sshPass+fmt.Sprintf("ssh %s -p %s root@connect.yza1.seetacloud.com '/root/miniconda3/bin/python3.9 /sep/ai/ai/Polyp-PVT-main/run.py --model /sep/ai/ai/Polyp-PVT-main/model_pth/PolypPVT.pth --result /sep/ai/ai/Polyp-PVT-main/result/ --image /services/images/%s/%s'", sshOpts, sshPort, uuid, filepath.Base(source))) if err := segmentCmd.Run(); err != nil { Log.WithFields(logrus.Fields{ "error": err, @@ -214,7 +216,7 @@ func (ft *FeatureTool) Segment(source string) (string, error) { return "", err } - downloadCmd := exec.Command("bash", "-c", sshPass+fmt.Sprintf("scp %s -r -P 27075 root@connect.yza1.seetacloud.com:/sep/ai/ai/Polyp-PVT-main/result %s/", sshOpts, localDir)) + downloadCmd := exec.Command("bash", "-c", sshPass+fmt.Sprintf("scp %s -r -P %s root@connect.yza1.seetacloud.com:/sep/ai/ai/Polyp-PVT-main/result %s/", sshOpts, sshPort, localDir)) if err := downloadCmd.Run(); err != nil { Log.WithFields(logrus.Fields{ "error": err, @@ -281,6 +283,7 @@ func (ft *FeatureTool) Track(source string) (string, error) { uploadTool := UploadTool{} if viper.GetBool("feature.active") { uuidTool := UUIDTool{} + sshPort := viper.GetString("feature.sshPort") uuid := uuidTool.GenerateUUID() // 获取原文件的扩展名 @@ -322,7 +325,7 @@ func (ft *FeatureTool) Track(source string) (string, error) { sshOpts := "-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" sshPass := fmt.Sprintf("sshpass -p '%s' ", sshSecret) - cmd := exec.Command("bash", "-c", sshPass+fmt.Sprintf("ssh %s -p 27075 root@connect.yza1.seetacloud.com 'mkdir -p /services/videos/%s'", sshOpts, uuid)) + cmd := exec.Command("bash", "-c", sshPass+fmt.Sprintf("ssh %s -p %s root@connect.yza1.seetacloud.com 'mkdir -p /services/videos/%s'", sshOpts, sshPort, uuid)) if err := cmd.Run(); err != nil { Log.WithFields(logrus.Fields{ "error": err, @@ -331,7 +334,7 @@ func (ft *FeatureTool) Track(source string) (string, error) { return "", err } - scpCmd := exec.Command("bash", "-c", sshPass+fmt.Sprintf("scp %s -P 27075 %s root@connect.yza1.seetacloud.com:/services/videos/%s/", sshOpts, source, uuid)) + scpCmd := exec.Command("bash", "-c", sshPass+fmt.Sprintf("scp %s -P %s %s root@connect.yza1.seetacloud.com:/services/videos/%s/", sshOpts, sshPort, source, uuid)) if err := scpCmd.Run(); err != nil { Log.WithFields(logrus.Fields{ "error": err, @@ -340,7 +343,7 @@ func (ft *FeatureTool) Track(source string) (string, error) { return "", err } - trackCmd := exec.Command("bash", "-c", sshPass+fmt.Sprintf("ssh %s -p 27075 root@connect.yza1.seetacloud.com '/root/miniconda3/bin/python3.9 /sep/ai/ai/StrongSORT-YOLO-main/track_v5.py --yolo-weights /sep/ai/ai/StrongSORT-YOLO-main/weights/best.pt --device 0 --config-strongsort /sep/ai/ai/StrongSORT-YOLO-main/strong_sort/configs/strong_sort.yaml --save-vid --source /services/videos/%s/%s'", sshOpts, uuid, filepath.Base(source))) + trackCmd := exec.Command("bash", "-c", sshPass+fmt.Sprintf("ssh %s -p %s root@connect.yza1.seetacloud.com '/root/miniconda3/bin/python3.9 /sep/ai/ai/StrongSORT-YOLO-main/track_v5.py --yolo-weights /sep/ai/ai/StrongSORT-YOLO-main/weights/best.pt --device 0 --config-strongsort /sep/ai/ai/StrongSORT-YOLO-main/strong_sort/configs/strong_sort.yaml --save-vid --source /services/videos/%s/%s'", sshOpts, sshPort, uuid, filepath.Base(source))) if err := trackCmd.Run(); err != nil { Log.WithFields(logrus.Fields{ "error": err, @@ -349,7 +352,7 @@ func (ft *FeatureTool) Track(source string) (string, error) { return "", err } - downloadCmd := exec.Command("bash", "-c", sshPass+fmt.Sprintf("scp %s -r -P 27075 root@connect.yza1.seetacloud.com:/sep/ai/ai/StrongSORT-YOLO-main/runs/track %s/", sshOpts, localDir)) + downloadCmd := exec.Command("bash", "-c", sshPass+fmt.Sprintf("scp %s -r -P %s root@connect.yza1.seetacloud.com:/sep/ai/ai/StrongSORT-YOLO-main/runs/track %s/", sshOpts, sshPort, localDir)) if err := downloadCmd.Run(); err != nil { Log.WithFields(logrus.Fields{ "error": err,