From 0b6d62920b6db533963c9600c6a1b93bcb7ff3ef Mon Sep 17 00:00:00 2001 From: ruotiantang Date: Tue, 8 Aug 2023 17:07:23 +0800 Subject: [PATCH 01/10] =?UTF-8?q?feat:=20=E5=85=AC=E5=85=B1=E6=9E=84?= =?UTF-8?q?=E5=BB=BA=E6=9C=BA=E6=94=AF=E6=8C=81=E6=8C=81=E4=B9=85=E5=8C=96?= =?UTF-8?q?=E6=9E=84=E5=BB=BA=E5=AE=B9=E5=99=A8=E8=B0=83=E5=BA=A6=20#9269?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/agent/{ => agent}/Makefile | 0 src/agent/{ => agent}/README.md | 0 src/agent/{ => agent}/build_windows.bat | 0 src/agent/{ => agent}/build_windows.ps1 | 0 src/agent/{ => agent}/go.mod | 0 src/agent/{ => agent}/go.sum | 0 .../{ => agent}/internal/third_party/dep/fs/fs.go | 0 .../internal/third_party/dep/fs/fs_test.go | 0 .../internal/third_party/dep/fs/rename.go | 0 .../internal/third_party/dep/fs/rename_windows.go | 0 .../dep/fs/testdata/symlinks/file-symlink | 0 .../dep/fs/testdata/symlinks/invalid-symlink | 0 .../internal/third_party/dep/fs/testdata/test.file | 0 src/agent/{ => agent}/src/cmd/agent/main.go | 0 src/agent/{ => agent}/src/cmd/daemon/main.go | 0 src/agent/{ => agent}/src/cmd/daemon/main_win.go | 0 src/agent/{ => agent}/src/cmd/installer/main.go | 0 .../translation_generator/translation_generator.go | 0 src/agent/{ => agent}/src/cmd/upgrader/main.go | 0 src/agent/{ => agent}/src/pkg/agent/agent.go | 0 src/agent/{ => agent}/src/pkg/api/ErrorEnum.go | 0 src/agent/{ => agent}/src/pkg/api/api.go | 0 src/agent/{ => agent}/src/pkg/api/type.go | 0 .../{ => agent}/src/pkg/collector/collector.go | 0 .../src/pkg/collector/telegrafConf/telegrafConf.go | 0 .../pkg/collector/telegrafConf/telegrafConf_out.go | 0 .../collector/telegrafConf/telegrafConf_out_win.go | 0 .../pkg/collector/telegrafConf/telegrafConf_win.go | 0 .../src/pkg/collector/telegraf_plugins.go | 0 src/agent/{ => agent}/src/pkg/config/config.go | 0 src/agent/{ => agent}/src/pkg/config/config_test.go | 0 src/agent/{ => agent}/src/pkg/config/constant.go | 0 src/agent/{ => agent}/src/pkg/config/version.go | 0 src/agent/{ => agent}/src/pkg/constant/constant.go | 0 .../{ => agent}/src/pkg/constant/constant_out.go | 0 src/agent/{ => agent}/src/pkg/cron/cron.go | 0 .../{ => agent}/src/pkg/heartbeat/heartbeat.go | 0 src/agent/{ => agent}/src/pkg/i18n/i18n.go | 0 .../src/pkg/i18n/translation/translation.go | 0 src/agent/{ => agent}/src/pkg/imagedebug/api.go | 0 src/agent/{ => agent}/src/pkg/imagedebug/config.go | 0 src/agent/{ => agent}/src/pkg/imagedebug/console.go | 0 .../{ => agent}/src/pkg/imagedebug/imagedebug.go | 0 src/agent/{ => agent}/src/pkg/imagedebug/manager.go | 0 src/agent/{ => agent}/src/pkg/imagedebug/port.go | 0 .../{ => agent}/src/pkg/imagedebug/port_test.go | 0 .../{ => agent}/src/pkg/installer/installer.go | 0 src/agent/{ => agent}/src/pkg/job/build.go | 0 src/agent/{ => agent}/src/pkg/job/build_docker.go | 0 src/agent/{ => agent}/src/pkg/job/build_manager.go | 0 src/agent/{ => agent}/src/pkg/job/job.go | 0 src/agent/{ => agent}/src/pkg/job/job_test.go | 0 .../{ => agent}/src/pkg/job_docker/job_docker.go | 0 src/agent/{ => agent}/src/pkg/job_docker/opts.go | 0 .../{ => agent}/src/pkg/job_docker/opts_test.go | 0 .../src/pkg/job_docker/testdata/utf16.env | Bin .../src/pkg/job_docker/testdata/utf16be.env | Bin .../src/pkg/job_docker/testdata/utf8.env | 0 .../src/pkg/job_docker/testdata/valid.env | 0 .../src/pkg/job_docker/testdata/valid.label | 0 src/agent/{ => agent}/src/pkg/logs/export.go | 0 src/agent/{ => agent}/src/pkg/logs/log_rotate.go | 0 src/agent/{ => agent}/src/pkg/logs/logs.go | 0 src/agent/{ => agent}/src/pkg/pipeline/pipeline.go | 0 .../{ => agent}/src/pkg/pipeline/pipeline_out.go | 0 src/agent/{ => agent}/src/pkg/pipeline/type.go | 0 .../src/pkg/upgrade/download/download_darwin.go | 0 .../src/pkg/upgrade/download/download_unix.go | 0 .../src/pkg/upgrade/download/download_win.go | 0 src/agent/{ => agent}/src/pkg/upgrade/operation.go | 0 src/agent/{ => agent}/src/pkg/upgrade/upgrade.go | 0 .../{ => agent}/src/pkg/upgrade/upgrade_test.go | 0 src/agent/{ => agent}/src/pkg/upgrader/upgrader.go | 0 .../{ => agent}/src/pkg/util/command/command.go | 0 src/agent/{ => agent}/src/pkg/util/command/user.go | 0 .../{ => agent}/src/pkg/util/command/user_win.go | 0 .../{ => agent}/src/pkg/util/fileutil/fileutil.go | 0 .../src/pkg/util/fileutil/fileutil_test.go | 0 .../src/pkg/util/fileutil/testdata/existsFile | 0 .../src/pkg/util/fileutil/testdata/md5File | 0 .../src/pkg/util/fileutil/testdata/stringAndPidFile | 0 .../{ => agent}/src/pkg/util/httputil/devops.go | 0 .../{ => agent}/src/pkg/util/httputil/httputil.go | 0 .../src/pkg/util/systemutil/dir_operation.go | 0 .../src/pkg/util/systemutil/dir_operation_win.go | 0 .../src/pkg/util/systemutil/systemutil.go | 0 .../src/pkg/util/systemutil/systemutil_test.go | 0 src/agent/{ => agent}/src/pkg/util/util.go | 0 src/agent/{ => agent}/src/pkg/util/util_test.go | 0 89 files changed, 0 insertions(+), 0 deletions(-) rename src/agent/{ => agent}/Makefile (100%) rename src/agent/{ => agent}/README.md (100%) rename src/agent/{ => agent}/build_windows.bat (100%) rename src/agent/{ => agent}/build_windows.ps1 (100%) rename src/agent/{ => agent}/go.mod (100%) rename src/agent/{ => agent}/go.sum (100%) rename src/agent/{ => agent}/internal/third_party/dep/fs/fs.go (100%) rename src/agent/{ => agent}/internal/third_party/dep/fs/fs_test.go (100%) rename src/agent/{ => agent}/internal/third_party/dep/fs/rename.go (100%) rename src/agent/{ => agent}/internal/third_party/dep/fs/rename_windows.go (100%) rename src/agent/{ => agent}/internal/third_party/dep/fs/testdata/symlinks/file-symlink (100%) rename src/agent/{ => agent}/internal/third_party/dep/fs/testdata/symlinks/invalid-symlink (100%) rename src/agent/{ => agent}/internal/third_party/dep/fs/testdata/test.file (100%) rename src/agent/{ => agent}/src/cmd/agent/main.go (100%) rename src/agent/{ => agent}/src/cmd/daemon/main.go (100%) rename src/agent/{ => agent}/src/cmd/daemon/main_win.go (100%) rename src/agent/{ => agent}/src/cmd/installer/main.go (100%) rename src/agent/{ => agent}/src/cmd/translation_generator/translation_generator.go (100%) rename src/agent/{ => agent}/src/cmd/upgrader/main.go (100%) rename src/agent/{ => agent}/src/pkg/agent/agent.go (100%) rename src/agent/{ => agent}/src/pkg/api/ErrorEnum.go (100%) rename src/agent/{ => agent}/src/pkg/api/api.go (100%) rename src/agent/{ => agent}/src/pkg/api/type.go (100%) rename src/agent/{ => agent}/src/pkg/collector/collector.go (100%) rename src/agent/{ => agent}/src/pkg/collector/telegrafConf/telegrafConf.go (100%) rename src/agent/{ => agent}/src/pkg/collector/telegrafConf/telegrafConf_out.go (100%) rename src/agent/{ => agent}/src/pkg/collector/telegrafConf/telegrafConf_out_win.go (100%) rename src/agent/{ => agent}/src/pkg/collector/telegrafConf/telegrafConf_win.go (100%) rename src/agent/{ => agent}/src/pkg/collector/telegraf_plugins.go (100%) rename src/agent/{ => agent}/src/pkg/config/config.go (100%) rename src/agent/{ => agent}/src/pkg/config/config_test.go (100%) rename src/agent/{ => agent}/src/pkg/config/constant.go (100%) rename src/agent/{ => agent}/src/pkg/config/version.go (100%) rename src/agent/{ => agent}/src/pkg/constant/constant.go (100%) rename src/agent/{ => agent}/src/pkg/constant/constant_out.go (100%) rename src/agent/{ => agent}/src/pkg/cron/cron.go (100%) rename src/agent/{ => agent}/src/pkg/heartbeat/heartbeat.go (100%) rename src/agent/{ => agent}/src/pkg/i18n/i18n.go (100%) rename src/agent/{ => agent}/src/pkg/i18n/translation/translation.go (100%) rename src/agent/{ => agent}/src/pkg/imagedebug/api.go (100%) rename src/agent/{ => agent}/src/pkg/imagedebug/config.go (100%) rename src/agent/{ => agent}/src/pkg/imagedebug/console.go (100%) rename src/agent/{ => agent}/src/pkg/imagedebug/imagedebug.go (100%) rename src/agent/{ => agent}/src/pkg/imagedebug/manager.go (100%) rename src/agent/{ => agent}/src/pkg/imagedebug/port.go (100%) rename src/agent/{ => agent}/src/pkg/imagedebug/port_test.go (100%) rename src/agent/{ => agent}/src/pkg/installer/installer.go (100%) rename src/agent/{ => agent}/src/pkg/job/build.go (100%) rename src/agent/{ => agent}/src/pkg/job/build_docker.go (100%) rename src/agent/{ => agent}/src/pkg/job/build_manager.go (100%) rename src/agent/{ => agent}/src/pkg/job/job.go (100%) rename src/agent/{ => agent}/src/pkg/job/job_test.go (100%) rename src/agent/{ => agent}/src/pkg/job_docker/job_docker.go (100%) rename src/agent/{ => agent}/src/pkg/job_docker/opts.go (100%) rename src/agent/{ => agent}/src/pkg/job_docker/opts_test.go (100%) rename src/agent/{ => agent}/src/pkg/job_docker/testdata/utf16.env (100%) rename src/agent/{ => agent}/src/pkg/job_docker/testdata/utf16be.env (100%) rename src/agent/{ => agent}/src/pkg/job_docker/testdata/utf8.env (100%) rename src/agent/{ => agent}/src/pkg/job_docker/testdata/valid.env (100%) rename src/agent/{ => agent}/src/pkg/job_docker/testdata/valid.label (100%) rename src/agent/{ => agent}/src/pkg/logs/export.go (100%) rename src/agent/{ => agent}/src/pkg/logs/log_rotate.go (100%) rename src/agent/{ => agent}/src/pkg/logs/logs.go (100%) rename src/agent/{ => agent}/src/pkg/pipeline/pipeline.go (100%) rename src/agent/{ => agent}/src/pkg/pipeline/pipeline_out.go (100%) rename src/agent/{ => agent}/src/pkg/pipeline/type.go (100%) rename src/agent/{ => agent}/src/pkg/upgrade/download/download_darwin.go (100%) rename src/agent/{ => agent}/src/pkg/upgrade/download/download_unix.go (100%) rename src/agent/{ => agent}/src/pkg/upgrade/download/download_win.go (100%) rename src/agent/{ => agent}/src/pkg/upgrade/operation.go (100%) rename src/agent/{ => agent}/src/pkg/upgrade/upgrade.go (100%) rename src/agent/{ => agent}/src/pkg/upgrade/upgrade_test.go (100%) rename src/agent/{ => agent}/src/pkg/upgrader/upgrader.go (100%) rename src/agent/{ => agent}/src/pkg/util/command/command.go (100%) rename src/agent/{ => agent}/src/pkg/util/command/user.go (100%) rename src/agent/{ => agent}/src/pkg/util/command/user_win.go (100%) rename src/agent/{ => agent}/src/pkg/util/fileutil/fileutil.go (100%) rename src/agent/{ => agent}/src/pkg/util/fileutil/fileutil_test.go (100%) rename src/agent/{ => agent}/src/pkg/util/fileutil/testdata/existsFile (100%) rename src/agent/{ => agent}/src/pkg/util/fileutil/testdata/md5File (100%) rename src/agent/{ => agent}/src/pkg/util/fileutil/testdata/stringAndPidFile (100%) rename src/agent/{ => agent}/src/pkg/util/httputil/devops.go (100%) rename src/agent/{ => agent}/src/pkg/util/httputil/httputil.go (100%) rename src/agent/{ => agent}/src/pkg/util/systemutil/dir_operation.go (100%) rename src/agent/{ => agent}/src/pkg/util/systemutil/dir_operation_win.go (100%) rename src/agent/{ => agent}/src/pkg/util/systemutil/systemutil.go (100%) rename src/agent/{ => agent}/src/pkg/util/systemutil/systemutil_test.go (100%) rename src/agent/{ => agent}/src/pkg/util/util.go (100%) rename src/agent/{ => agent}/src/pkg/util/util_test.go (100%) diff --git a/src/agent/Makefile b/src/agent/agent/Makefile similarity index 100% rename from src/agent/Makefile rename to src/agent/agent/Makefile diff --git a/src/agent/README.md b/src/agent/agent/README.md similarity index 100% rename from src/agent/README.md rename to src/agent/agent/README.md diff --git a/src/agent/build_windows.bat b/src/agent/agent/build_windows.bat similarity index 100% rename from src/agent/build_windows.bat rename to src/agent/agent/build_windows.bat diff --git a/src/agent/build_windows.ps1 b/src/agent/agent/build_windows.ps1 similarity index 100% rename from src/agent/build_windows.ps1 rename to src/agent/agent/build_windows.ps1 diff --git a/src/agent/go.mod b/src/agent/agent/go.mod similarity index 100% rename from src/agent/go.mod rename to src/agent/agent/go.mod diff --git a/src/agent/go.sum b/src/agent/agent/go.sum similarity index 100% rename from src/agent/go.sum rename to src/agent/agent/go.sum diff --git a/src/agent/internal/third_party/dep/fs/fs.go b/src/agent/agent/internal/third_party/dep/fs/fs.go similarity index 100% rename from src/agent/internal/third_party/dep/fs/fs.go rename to src/agent/agent/internal/third_party/dep/fs/fs.go diff --git a/src/agent/internal/third_party/dep/fs/fs_test.go b/src/agent/agent/internal/third_party/dep/fs/fs_test.go similarity index 100% rename from src/agent/internal/third_party/dep/fs/fs_test.go rename to src/agent/agent/internal/third_party/dep/fs/fs_test.go diff --git a/src/agent/internal/third_party/dep/fs/rename.go b/src/agent/agent/internal/third_party/dep/fs/rename.go similarity index 100% rename from src/agent/internal/third_party/dep/fs/rename.go rename to src/agent/agent/internal/third_party/dep/fs/rename.go diff --git a/src/agent/internal/third_party/dep/fs/rename_windows.go b/src/agent/agent/internal/third_party/dep/fs/rename_windows.go similarity index 100% rename from src/agent/internal/third_party/dep/fs/rename_windows.go rename to src/agent/agent/internal/third_party/dep/fs/rename_windows.go diff --git a/src/agent/internal/third_party/dep/fs/testdata/symlinks/file-symlink b/src/agent/agent/internal/third_party/dep/fs/testdata/symlinks/file-symlink similarity index 100% rename from src/agent/internal/third_party/dep/fs/testdata/symlinks/file-symlink rename to src/agent/agent/internal/third_party/dep/fs/testdata/symlinks/file-symlink diff --git a/src/agent/internal/third_party/dep/fs/testdata/symlinks/invalid-symlink b/src/agent/agent/internal/third_party/dep/fs/testdata/symlinks/invalid-symlink similarity index 100% rename from src/agent/internal/third_party/dep/fs/testdata/symlinks/invalid-symlink rename to src/agent/agent/internal/third_party/dep/fs/testdata/symlinks/invalid-symlink diff --git a/src/agent/internal/third_party/dep/fs/testdata/test.file b/src/agent/agent/internal/third_party/dep/fs/testdata/test.file similarity index 100% rename from src/agent/internal/third_party/dep/fs/testdata/test.file rename to src/agent/agent/internal/third_party/dep/fs/testdata/test.file diff --git a/src/agent/src/cmd/agent/main.go b/src/agent/agent/src/cmd/agent/main.go similarity index 100% rename from src/agent/src/cmd/agent/main.go rename to src/agent/agent/src/cmd/agent/main.go diff --git a/src/agent/src/cmd/daemon/main.go b/src/agent/agent/src/cmd/daemon/main.go similarity index 100% rename from src/agent/src/cmd/daemon/main.go rename to src/agent/agent/src/cmd/daemon/main.go diff --git a/src/agent/src/cmd/daemon/main_win.go b/src/agent/agent/src/cmd/daemon/main_win.go similarity index 100% rename from src/agent/src/cmd/daemon/main_win.go rename to src/agent/agent/src/cmd/daemon/main_win.go diff --git a/src/agent/src/cmd/installer/main.go b/src/agent/agent/src/cmd/installer/main.go similarity index 100% rename from src/agent/src/cmd/installer/main.go rename to src/agent/agent/src/cmd/installer/main.go diff --git a/src/agent/src/cmd/translation_generator/translation_generator.go b/src/agent/agent/src/cmd/translation_generator/translation_generator.go similarity index 100% rename from src/agent/src/cmd/translation_generator/translation_generator.go rename to src/agent/agent/src/cmd/translation_generator/translation_generator.go diff --git a/src/agent/src/cmd/upgrader/main.go b/src/agent/agent/src/cmd/upgrader/main.go similarity index 100% rename from src/agent/src/cmd/upgrader/main.go rename to src/agent/agent/src/cmd/upgrader/main.go diff --git a/src/agent/src/pkg/agent/agent.go b/src/agent/agent/src/pkg/agent/agent.go similarity index 100% rename from src/agent/src/pkg/agent/agent.go rename to src/agent/agent/src/pkg/agent/agent.go diff --git a/src/agent/src/pkg/api/ErrorEnum.go b/src/agent/agent/src/pkg/api/ErrorEnum.go similarity index 100% rename from src/agent/src/pkg/api/ErrorEnum.go rename to src/agent/agent/src/pkg/api/ErrorEnum.go diff --git a/src/agent/src/pkg/api/api.go b/src/agent/agent/src/pkg/api/api.go similarity index 100% rename from src/agent/src/pkg/api/api.go rename to src/agent/agent/src/pkg/api/api.go diff --git a/src/agent/src/pkg/api/type.go b/src/agent/agent/src/pkg/api/type.go similarity index 100% rename from src/agent/src/pkg/api/type.go rename to src/agent/agent/src/pkg/api/type.go diff --git a/src/agent/src/pkg/collector/collector.go b/src/agent/agent/src/pkg/collector/collector.go similarity index 100% rename from src/agent/src/pkg/collector/collector.go rename to src/agent/agent/src/pkg/collector/collector.go diff --git a/src/agent/src/pkg/collector/telegrafConf/telegrafConf.go b/src/agent/agent/src/pkg/collector/telegrafConf/telegrafConf.go similarity index 100% rename from src/agent/src/pkg/collector/telegrafConf/telegrafConf.go rename to src/agent/agent/src/pkg/collector/telegrafConf/telegrafConf.go diff --git a/src/agent/src/pkg/collector/telegrafConf/telegrafConf_out.go b/src/agent/agent/src/pkg/collector/telegrafConf/telegrafConf_out.go similarity index 100% rename from src/agent/src/pkg/collector/telegrafConf/telegrafConf_out.go rename to src/agent/agent/src/pkg/collector/telegrafConf/telegrafConf_out.go diff --git a/src/agent/src/pkg/collector/telegrafConf/telegrafConf_out_win.go b/src/agent/agent/src/pkg/collector/telegrafConf/telegrafConf_out_win.go similarity index 100% rename from src/agent/src/pkg/collector/telegrafConf/telegrafConf_out_win.go rename to src/agent/agent/src/pkg/collector/telegrafConf/telegrafConf_out_win.go diff --git a/src/agent/src/pkg/collector/telegrafConf/telegrafConf_win.go b/src/agent/agent/src/pkg/collector/telegrafConf/telegrafConf_win.go similarity index 100% rename from src/agent/src/pkg/collector/telegrafConf/telegrafConf_win.go rename to src/agent/agent/src/pkg/collector/telegrafConf/telegrafConf_win.go diff --git a/src/agent/src/pkg/collector/telegraf_plugins.go b/src/agent/agent/src/pkg/collector/telegraf_plugins.go similarity index 100% rename from src/agent/src/pkg/collector/telegraf_plugins.go rename to src/agent/agent/src/pkg/collector/telegraf_plugins.go diff --git a/src/agent/src/pkg/config/config.go b/src/agent/agent/src/pkg/config/config.go similarity index 100% rename from src/agent/src/pkg/config/config.go rename to src/agent/agent/src/pkg/config/config.go diff --git a/src/agent/src/pkg/config/config_test.go b/src/agent/agent/src/pkg/config/config_test.go similarity index 100% rename from src/agent/src/pkg/config/config_test.go rename to src/agent/agent/src/pkg/config/config_test.go diff --git a/src/agent/src/pkg/config/constant.go b/src/agent/agent/src/pkg/config/constant.go similarity index 100% rename from src/agent/src/pkg/config/constant.go rename to src/agent/agent/src/pkg/config/constant.go diff --git a/src/agent/src/pkg/config/version.go b/src/agent/agent/src/pkg/config/version.go similarity index 100% rename from src/agent/src/pkg/config/version.go rename to src/agent/agent/src/pkg/config/version.go diff --git a/src/agent/src/pkg/constant/constant.go b/src/agent/agent/src/pkg/constant/constant.go similarity index 100% rename from src/agent/src/pkg/constant/constant.go rename to src/agent/agent/src/pkg/constant/constant.go diff --git a/src/agent/src/pkg/constant/constant_out.go b/src/agent/agent/src/pkg/constant/constant_out.go similarity index 100% rename from src/agent/src/pkg/constant/constant_out.go rename to src/agent/agent/src/pkg/constant/constant_out.go diff --git a/src/agent/src/pkg/cron/cron.go b/src/agent/agent/src/pkg/cron/cron.go similarity index 100% rename from src/agent/src/pkg/cron/cron.go rename to src/agent/agent/src/pkg/cron/cron.go diff --git a/src/agent/src/pkg/heartbeat/heartbeat.go b/src/agent/agent/src/pkg/heartbeat/heartbeat.go similarity index 100% rename from src/agent/src/pkg/heartbeat/heartbeat.go rename to src/agent/agent/src/pkg/heartbeat/heartbeat.go diff --git a/src/agent/src/pkg/i18n/i18n.go b/src/agent/agent/src/pkg/i18n/i18n.go similarity index 100% rename from src/agent/src/pkg/i18n/i18n.go rename to src/agent/agent/src/pkg/i18n/i18n.go diff --git a/src/agent/src/pkg/i18n/translation/translation.go b/src/agent/agent/src/pkg/i18n/translation/translation.go similarity index 100% rename from src/agent/src/pkg/i18n/translation/translation.go rename to src/agent/agent/src/pkg/i18n/translation/translation.go diff --git a/src/agent/src/pkg/imagedebug/api.go b/src/agent/agent/src/pkg/imagedebug/api.go similarity index 100% rename from src/agent/src/pkg/imagedebug/api.go rename to src/agent/agent/src/pkg/imagedebug/api.go diff --git a/src/agent/src/pkg/imagedebug/config.go b/src/agent/agent/src/pkg/imagedebug/config.go similarity index 100% rename from src/agent/src/pkg/imagedebug/config.go rename to src/agent/agent/src/pkg/imagedebug/config.go diff --git a/src/agent/src/pkg/imagedebug/console.go b/src/agent/agent/src/pkg/imagedebug/console.go similarity index 100% rename from src/agent/src/pkg/imagedebug/console.go rename to src/agent/agent/src/pkg/imagedebug/console.go diff --git a/src/agent/src/pkg/imagedebug/imagedebug.go b/src/agent/agent/src/pkg/imagedebug/imagedebug.go similarity index 100% rename from src/agent/src/pkg/imagedebug/imagedebug.go rename to src/agent/agent/src/pkg/imagedebug/imagedebug.go diff --git a/src/agent/src/pkg/imagedebug/manager.go b/src/agent/agent/src/pkg/imagedebug/manager.go similarity index 100% rename from src/agent/src/pkg/imagedebug/manager.go rename to src/agent/agent/src/pkg/imagedebug/manager.go diff --git a/src/agent/src/pkg/imagedebug/port.go b/src/agent/agent/src/pkg/imagedebug/port.go similarity index 100% rename from src/agent/src/pkg/imagedebug/port.go rename to src/agent/agent/src/pkg/imagedebug/port.go diff --git a/src/agent/src/pkg/imagedebug/port_test.go b/src/agent/agent/src/pkg/imagedebug/port_test.go similarity index 100% rename from src/agent/src/pkg/imagedebug/port_test.go rename to src/agent/agent/src/pkg/imagedebug/port_test.go diff --git a/src/agent/src/pkg/installer/installer.go b/src/agent/agent/src/pkg/installer/installer.go similarity index 100% rename from src/agent/src/pkg/installer/installer.go rename to src/agent/agent/src/pkg/installer/installer.go diff --git a/src/agent/src/pkg/job/build.go b/src/agent/agent/src/pkg/job/build.go similarity index 100% rename from src/agent/src/pkg/job/build.go rename to src/agent/agent/src/pkg/job/build.go diff --git a/src/agent/src/pkg/job/build_docker.go b/src/agent/agent/src/pkg/job/build_docker.go similarity index 100% rename from src/agent/src/pkg/job/build_docker.go rename to src/agent/agent/src/pkg/job/build_docker.go diff --git a/src/agent/src/pkg/job/build_manager.go b/src/agent/agent/src/pkg/job/build_manager.go similarity index 100% rename from src/agent/src/pkg/job/build_manager.go rename to src/agent/agent/src/pkg/job/build_manager.go diff --git a/src/agent/src/pkg/job/job.go b/src/agent/agent/src/pkg/job/job.go similarity index 100% rename from src/agent/src/pkg/job/job.go rename to src/agent/agent/src/pkg/job/job.go diff --git a/src/agent/src/pkg/job/job_test.go b/src/agent/agent/src/pkg/job/job_test.go similarity index 100% rename from src/agent/src/pkg/job/job_test.go rename to src/agent/agent/src/pkg/job/job_test.go diff --git a/src/agent/src/pkg/job_docker/job_docker.go b/src/agent/agent/src/pkg/job_docker/job_docker.go similarity index 100% rename from src/agent/src/pkg/job_docker/job_docker.go rename to src/agent/agent/src/pkg/job_docker/job_docker.go diff --git a/src/agent/src/pkg/job_docker/opts.go b/src/agent/agent/src/pkg/job_docker/opts.go similarity index 100% rename from src/agent/src/pkg/job_docker/opts.go rename to src/agent/agent/src/pkg/job_docker/opts.go diff --git a/src/agent/src/pkg/job_docker/opts_test.go b/src/agent/agent/src/pkg/job_docker/opts_test.go similarity index 100% rename from src/agent/src/pkg/job_docker/opts_test.go rename to src/agent/agent/src/pkg/job_docker/opts_test.go diff --git a/src/agent/src/pkg/job_docker/testdata/utf16.env b/src/agent/agent/src/pkg/job_docker/testdata/utf16.env similarity index 100% rename from src/agent/src/pkg/job_docker/testdata/utf16.env rename to src/agent/agent/src/pkg/job_docker/testdata/utf16.env diff --git a/src/agent/src/pkg/job_docker/testdata/utf16be.env b/src/agent/agent/src/pkg/job_docker/testdata/utf16be.env similarity index 100% rename from src/agent/src/pkg/job_docker/testdata/utf16be.env rename to src/agent/agent/src/pkg/job_docker/testdata/utf16be.env diff --git a/src/agent/src/pkg/job_docker/testdata/utf8.env b/src/agent/agent/src/pkg/job_docker/testdata/utf8.env similarity index 100% rename from src/agent/src/pkg/job_docker/testdata/utf8.env rename to src/agent/agent/src/pkg/job_docker/testdata/utf8.env diff --git a/src/agent/src/pkg/job_docker/testdata/valid.env b/src/agent/agent/src/pkg/job_docker/testdata/valid.env similarity index 100% rename from src/agent/src/pkg/job_docker/testdata/valid.env rename to src/agent/agent/src/pkg/job_docker/testdata/valid.env diff --git a/src/agent/src/pkg/job_docker/testdata/valid.label b/src/agent/agent/src/pkg/job_docker/testdata/valid.label similarity index 100% rename from src/agent/src/pkg/job_docker/testdata/valid.label rename to src/agent/agent/src/pkg/job_docker/testdata/valid.label diff --git a/src/agent/src/pkg/logs/export.go b/src/agent/agent/src/pkg/logs/export.go similarity index 100% rename from src/agent/src/pkg/logs/export.go rename to src/agent/agent/src/pkg/logs/export.go diff --git a/src/agent/src/pkg/logs/log_rotate.go b/src/agent/agent/src/pkg/logs/log_rotate.go similarity index 100% rename from src/agent/src/pkg/logs/log_rotate.go rename to src/agent/agent/src/pkg/logs/log_rotate.go diff --git a/src/agent/src/pkg/logs/logs.go b/src/agent/agent/src/pkg/logs/logs.go similarity index 100% rename from src/agent/src/pkg/logs/logs.go rename to src/agent/agent/src/pkg/logs/logs.go diff --git a/src/agent/src/pkg/pipeline/pipeline.go b/src/agent/agent/src/pkg/pipeline/pipeline.go similarity index 100% rename from src/agent/src/pkg/pipeline/pipeline.go rename to src/agent/agent/src/pkg/pipeline/pipeline.go diff --git a/src/agent/src/pkg/pipeline/pipeline_out.go b/src/agent/agent/src/pkg/pipeline/pipeline_out.go similarity index 100% rename from src/agent/src/pkg/pipeline/pipeline_out.go rename to src/agent/agent/src/pkg/pipeline/pipeline_out.go diff --git a/src/agent/src/pkg/pipeline/type.go b/src/agent/agent/src/pkg/pipeline/type.go similarity index 100% rename from src/agent/src/pkg/pipeline/type.go rename to src/agent/agent/src/pkg/pipeline/type.go diff --git a/src/agent/src/pkg/upgrade/download/download_darwin.go b/src/agent/agent/src/pkg/upgrade/download/download_darwin.go similarity index 100% rename from src/agent/src/pkg/upgrade/download/download_darwin.go rename to src/agent/agent/src/pkg/upgrade/download/download_darwin.go diff --git a/src/agent/src/pkg/upgrade/download/download_unix.go b/src/agent/agent/src/pkg/upgrade/download/download_unix.go similarity index 100% rename from src/agent/src/pkg/upgrade/download/download_unix.go rename to src/agent/agent/src/pkg/upgrade/download/download_unix.go diff --git a/src/agent/src/pkg/upgrade/download/download_win.go b/src/agent/agent/src/pkg/upgrade/download/download_win.go similarity index 100% rename from src/agent/src/pkg/upgrade/download/download_win.go rename to src/agent/agent/src/pkg/upgrade/download/download_win.go diff --git a/src/agent/src/pkg/upgrade/operation.go b/src/agent/agent/src/pkg/upgrade/operation.go similarity index 100% rename from src/agent/src/pkg/upgrade/operation.go rename to src/agent/agent/src/pkg/upgrade/operation.go diff --git a/src/agent/src/pkg/upgrade/upgrade.go b/src/agent/agent/src/pkg/upgrade/upgrade.go similarity index 100% rename from src/agent/src/pkg/upgrade/upgrade.go rename to src/agent/agent/src/pkg/upgrade/upgrade.go diff --git a/src/agent/src/pkg/upgrade/upgrade_test.go b/src/agent/agent/src/pkg/upgrade/upgrade_test.go similarity index 100% rename from src/agent/src/pkg/upgrade/upgrade_test.go rename to src/agent/agent/src/pkg/upgrade/upgrade_test.go diff --git a/src/agent/src/pkg/upgrader/upgrader.go b/src/agent/agent/src/pkg/upgrader/upgrader.go similarity index 100% rename from src/agent/src/pkg/upgrader/upgrader.go rename to src/agent/agent/src/pkg/upgrader/upgrader.go diff --git a/src/agent/src/pkg/util/command/command.go b/src/agent/agent/src/pkg/util/command/command.go similarity index 100% rename from src/agent/src/pkg/util/command/command.go rename to src/agent/agent/src/pkg/util/command/command.go diff --git a/src/agent/src/pkg/util/command/user.go b/src/agent/agent/src/pkg/util/command/user.go similarity index 100% rename from src/agent/src/pkg/util/command/user.go rename to src/agent/agent/src/pkg/util/command/user.go diff --git a/src/agent/src/pkg/util/command/user_win.go b/src/agent/agent/src/pkg/util/command/user_win.go similarity index 100% rename from src/agent/src/pkg/util/command/user_win.go rename to src/agent/agent/src/pkg/util/command/user_win.go diff --git a/src/agent/src/pkg/util/fileutil/fileutil.go b/src/agent/agent/src/pkg/util/fileutil/fileutil.go similarity index 100% rename from src/agent/src/pkg/util/fileutil/fileutil.go rename to src/agent/agent/src/pkg/util/fileutil/fileutil.go diff --git a/src/agent/src/pkg/util/fileutil/fileutil_test.go b/src/agent/agent/src/pkg/util/fileutil/fileutil_test.go similarity index 100% rename from src/agent/src/pkg/util/fileutil/fileutil_test.go rename to src/agent/agent/src/pkg/util/fileutil/fileutil_test.go diff --git a/src/agent/src/pkg/util/fileutil/testdata/existsFile b/src/agent/agent/src/pkg/util/fileutil/testdata/existsFile similarity index 100% rename from src/agent/src/pkg/util/fileutil/testdata/existsFile rename to src/agent/agent/src/pkg/util/fileutil/testdata/existsFile diff --git a/src/agent/src/pkg/util/fileutil/testdata/md5File b/src/agent/agent/src/pkg/util/fileutil/testdata/md5File similarity index 100% rename from src/agent/src/pkg/util/fileutil/testdata/md5File rename to src/agent/agent/src/pkg/util/fileutil/testdata/md5File diff --git a/src/agent/src/pkg/util/fileutil/testdata/stringAndPidFile b/src/agent/agent/src/pkg/util/fileutil/testdata/stringAndPidFile similarity index 100% rename from src/agent/src/pkg/util/fileutil/testdata/stringAndPidFile rename to src/agent/agent/src/pkg/util/fileutil/testdata/stringAndPidFile diff --git a/src/agent/src/pkg/util/httputil/devops.go b/src/agent/agent/src/pkg/util/httputil/devops.go similarity index 100% rename from src/agent/src/pkg/util/httputil/devops.go rename to src/agent/agent/src/pkg/util/httputil/devops.go diff --git a/src/agent/src/pkg/util/httputil/httputil.go b/src/agent/agent/src/pkg/util/httputil/httputil.go similarity index 100% rename from src/agent/src/pkg/util/httputil/httputil.go rename to src/agent/agent/src/pkg/util/httputil/httputil.go diff --git a/src/agent/src/pkg/util/systemutil/dir_operation.go b/src/agent/agent/src/pkg/util/systemutil/dir_operation.go similarity index 100% rename from src/agent/src/pkg/util/systemutil/dir_operation.go rename to src/agent/agent/src/pkg/util/systemutil/dir_operation.go diff --git a/src/agent/src/pkg/util/systemutil/dir_operation_win.go b/src/agent/agent/src/pkg/util/systemutil/dir_operation_win.go similarity index 100% rename from src/agent/src/pkg/util/systemutil/dir_operation_win.go rename to src/agent/agent/src/pkg/util/systemutil/dir_operation_win.go diff --git a/src/agent/src/pkg/util/systemutil/systemutil.go b/src/agent/agent/src/pkg/util/systemutil/systemutil.go similarity index 100% rename from src/agent/src/pkg/util/systemutil/systemutil.go rename to src/agent/agent/src/pkg/util/systemutil/systemutil.go diff --git a/src/agent/src/pkg/util/systemutil/systemutil_test.go b/src/agent/agent/src/pkg/util/systemutil/systemutil_test.go similarity index 100% rename from src/agent/src/pkg/util/systemutil/systemutil_test.go rename to src/agent/agent/src/pkg/util/systemutil/systemutil_test.go diff --git a/src/agent/src/pkg/util/util.go b/src/agent/agent/src/pkg/util/util.go similarity index 100% rename from src/agent/src/pkg/util/util.go rename to src/agent/agent/src/pkg/util/util.go diff --git a/src/agent/src/pkg/util/util_test.go b/src/agent/agent/src/pkg/util/util_test.go similarity index 100% rename from src/agent/src/pkg/util/util_test.go rename to src/agent/agent/src/pkg/util/util_test.go From 821179e25ae0e0047f631fac6271ed028dd8033a Mon Sep 17 00:00:00 2001 From: ruotiantang Date: Tue, 8 Aug 2023 19:12:50 +0800 Subject: [PATCH 02/10] =?UTF-8?q?feat:=20=E5=85=AC=E5=85=B1=E6=9E=84?= =?UTF-8?q?=E5=BB=BA=E6=9C=BA=E6=94=AF=E6=8C=81=E6=8C=81=E4=B9=85=E5=8C=96?= =?UTF-8?q?=E6=9E=84=E5=BB=BA=E5=AE=B9=E5=99=A8=E8=B0=83=E5=BA=A6=20#9269?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/agent/agent-slim/Makefile | 41 ++++ src/agent/agent-slim/cmd/slim.go | 57 ++++++ .../translation_generator.go | 179 ++++++++++++++++++ src/agent/agent-slim/go.mod | 19 ++ src/agent/agent-slim/go.sum | 54 ++++++ src/agent/agent-slim/pkg/config/config.go | 67 +++++++ src/agent/agent-slim/pkg/config/version.go | 34 ++++ src/agent/agent-slim/pkg/constant/constant.go | 5 + src/agent/agent-slim/pkg/i18n/i18n.go | 126 ++++++++++++ .../pkg/i18n/translation/translation.go | 13 ++ src/agent/agent-slim/pkg/slim.go | 5 + src/agent/agent/Makefile | 6 +- src/agent/agent/build_windows.ps1 | 2 +- src/agent/agent/go.mod | 9 +- src/agent/agent/go.sum | 8 +- src/agent/agent/src/cmd/agent/main.go | 9 +- src/agent/agent/src/cmd/daemon/main.go | 11 +- src/agent/agent/src/cmd/daemon/main_win.go | 9 +- src/agent/agent/src/cmd/installer/main.go | 9 +- src/agent/agent/src/cmd/upgrader/main.go | 9 +- src/agent/agent/src/pkg/agent/agent.go | 21 +- src/agent/agent/src/pkg/api/api.go | 6 +- .../agent/src/pkg/collector/collector.go | 11 +- src/agent/agent/src/pkg/config/config.go | 11 +- src/agent/agent/src/pkg/config/config_test.go | 2 +- src/agent/agent/src/pkg/config/constant.go | 2 +- src/agent/agent/src/pkg/cron/cron.go | 13 +- .../agent/src/pkg/heartbeat/heartbeat.go | 15 +- src/agent/agent/src/pkg/i18n/i18n.go | 7 +- .../agent/src/pkg/imagedebug/imagedebug.go | 17 +- src/agent/agent/src/pkg/imagedebug/port.go | 2 +- .../agent/src/pkg/installer/installer.go | 13 +- src/agent/agent/src/pkg/job/build.go | 19 +- src/agent/agent/src/pkg/job/build_docker.go | 19 +- src/agent/agent/src/pkg/job/build_manager.go | 11 +- src/agent/agent/src/pkg/job/job.go | 2 +- src/agent/agent/src/pkg/job/job_test.go | 2 +- .../agent/src/pkg/job_docker/job_docker.go | 2 +- src/agent/agent/src/pkg/job_docker/opts.go | 3 +- src/agent/agent/src/pkg/pipeline/pipeline.go | 11 +- .../pkg/upgrade/download/download_darwin.go | 7 +- .../src/pkg/upgrade/download/download_unix.go | 4 +- .../src/pkg/upgrade/download/download_win.go | 4 +- src/agent/agent/src/pkg/upgrade/operation.go | 13 +- src/agent/agent/src/pkg/upgrade/upgrade.go | 17 +- src/agent/agent/src/pkg/upgrader/upgrader.go | 11 +- .../agent/src/pkg/util/command/command.go | 2 +- src/agent/agent/src/pkg/util/command/user.go | 5 +- .../agent/src/pkg/util/command/user_win.go | 3 +- .../agent/src/pkg/util/fileutil/fileutil.go | 2 +- .../agent/src/pkg/util/httputil/devops.go | 11 +- .../agent/src/pkg/util/httputil/httputil.go | 5 +- .../src/pkg/util/systemutil/dir_operation.go | 2 +- .../pkg/util/systemutil/dir_operation_win.go | 3 +- .../src/pkg/util/systemutil/systemutil.go | 7 +- .../pkg/util/systemutil/systemutil_test.go | 2 +- src/agent/common/go.mod | 10 + src/agent/common/go.sum | 17 ++ .../{agent/src/pkg => common}/logs/export.go | 0 .../src/pkg => common}/logs/log_rotate.go | 0 .../{agent/src/pkg => common}/logs/logs.go | 0 support-files/i18n/agent-slim/en_US.json | 1 + support-files/i18n/agent-slim/zh_CN.json | 1 + 63 files changed, 824 insertions(+), 164 deletions(-) create mode 100644 src/agent/agent-slim/Makefile create mode 100644 src/agent/agent-slim/cmd/slim.go create mode 100644 src/agent/agent-slim/cmd/translation_generator/translation_generator.go create mode 100644 src/agent/agent-slim/go.mod create mode 100644 src/agent/agent-slim/go.sum create mode 100644 src/agent/agent-slim/pkg/config/config.go create mode 100644 src/agent/agent-slim/pkg/config/version.go create mode 100644 src/agent/agent-slim/pkg/constant/constant.go create mode 100644 src/agent/agent-slim/pkg/i18n/i18n.go create mode 100644 src/agent/agent-slim/pkg/i18n/translation/translation.go create mode 100644 src/agent/agent-slim/pkg/slim.go create mode 100644 src/agent/common/go.mod create mode 100644 src/agent/common/go.sum rename src/agent/{agent/src/pkg => common}/logs/export.go (100%) rename src/agent/{agent/src/pkg => common}/logs/log_rotate.go (100%) rename src/agent/{agent/src/pkg => common}/logs/logs.go (100%) create mode 100644 support-files/i18n/agent-slim/en_US.json create mode 100644 support-files/i18n/agent-slim/zh_CN.json diff --git a/src/agent/agent-slim/Makefile b/src/agent/agent-slim/Makefile new file mode 100644 index 00000000000..07b52a65de9 --- /dev/null +++ b/src/agent/agent-slim/Makefile @@ -0,0 +1,41 @@ +BINDIR := $(CURDIR)/bin +CMDDIR := $(CURDIR)/cmd +BuildTime := $(shell date '+%Y-%m-%d.%H:%M:%S%Z') +GitCommit := $(shell git rev-parse HEAD) +AGENT_VERSION=v1.12.0-beta.36 +BUILD_FLAGS := -ldflags="-w -s -X github.com/TencentBlueKing/bk-ci/agent/src/pkg/config.BuildTime=$(BuildTime) \ +-X github.com/TencentBlueKing/bk-ci/agent/src/pkg/config.GitCommit=$(GitCommit) -X github.com/TencentBlueKing/bk-ci/agent/src/pkg/config.AgentVersion=$(AGENT_VERSION)" + +format: + find ./ -name "*.go" | xargs gofmt -w + +test: test-unit + +.PHONY: test-unit +test-unit: + @echo + @echo "==> Running unit tests <==" + GO111MODULE=on go test -tags=${BUILD_OUT_TAG} -run . ./... + +# 相对于代码生成器的位置 +I18N_DIR := "../../../../../support-files/i18n/agent-slim/" + +i18nfilegen: + I18N_DIR=${I18N_DIR} go generate -x pkg/i18n/i18n.go + +all: linux + +linux: build_linux build_linux_arm64 + +build_linux: test clean i18nfilegen + mkdir -p $(BINDIR) + GO111MODULE=on CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build ${BUILD_FLAGS} -o $(BINDIR)/agentslim_linux $(CMDDIR)/slim.go + ls -la $(BINDIR) +build_linux_arm64: test clean i18nfilegen + mkdir -p $(BINDIR) + GO111MODULE=on CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build ${BUILD_FLAGS} -o $(BINDIR)/agentslim_linux_arm64 $(CMDDIR)/slim.go + ls -la $(BINDIR) + +clean: + mkdir -p $(BINDIR) + rm -f $(BINDIR)/* diff --git a/src/agent/agent-slim/cmd/slim.go b/src/agent/agent-slim/cmd/slim.go new file mode 100644 index 00000000000..3b7e459d93f --- /dev/null +++ b/src/agent/agent-slim/cmd/slim.go @@ -0,0 +1,57 @@ +package main + +import ( + "fmt" + "github.com/TencentBlueKing/bk-ci/agentcommon/logs" + "github.com/TencentBlueKing/bk-ci/agentslim/pkg" + "github.com/TencentBlueKing/bk-ci/agentslim/pkg/config" + "os" + "path/filepath" +) + +func main() { + if len(os.Args) == 2 { + switch os.Args[1] { + case "version": + fmt.Println(config.AgentVersion) + os.Exit(0) + case "fullVersion": + fmt.Println(config.AgentVersion) + fmt.Println(config.GitCommit) + fmt.Println(config.BuildTime) + os.Exit(0) + } + } + + // 初始化配置 + if err := config.InitConfig(); err != nil { + fmt.Printf("Init config error %s\n", err.Error()) + os.Exit(1) + } + + // 初始化日志 + var logFilePath = config.Config.LogPath + if logFilePath == "" { + filepath.Join(config.Config.WorkDir, "logs", "devopsAgent.log") + } + if err := logs.Init(logFilePath, config.Config.IsDebug); err != nil { + fmt.Printf("init agent log error %s\n", err.Error()) + os.Exit(1) + } + + // 以agent安装目录为工作目录 + if err := os.Chdir(config.Config.WorkDir); err != nil { + logs.WithError(err).Error("change work dir failed") + os.Exit(1) + } + + logs.Debug("agent start") + logs.Debug("pid: ", os.Getpid()) + logs.Debug("agent version: ", config.AgentVersion) + logs.Debug("git commit: ", config.GitCommit) + logs.Debug("build time: ", config.BuildTime) + logs.Debug("current user userName: ", config.Config.StartUser) + logs.Debug("work dir: ", config.Config.WorkDir) + + pkg.Run() +} diff --git a/src/agent/agent-slim/cmd/translation_generator/translation_generator.go b/src/agent/agent-slim/cmd/translation_generator/translation_generator.go new file mode 100644 index 00000000000..c6bb4612542 --- /dev/null +++ b/src/agent/agent-slim/cmd/translation_generator/translation_generator.go @@ -0,0 +1,179 @@ +/* + * Tencent is pleased to support the open source community by making BK-CI 蓝鲸持续集成平台 available. + * + * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. + * + * BK-CI 蓝鲸持续集成平台 is licensed under the MIT license. + * + * A copy of the MIT License is included in this file. + * + * + * Terms of the MIT License: + * --------------------------------------------------- + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated + * documentation files (the "Software"), to deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of + * the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT + * LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + * NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +package main + +import ( + "bytes" + "encoding/json" + "fmt" + "go/format" + "io/ioutil" + "os" + "path/filepath" + "sort" + "strings" + + "golang.org/x/text/language" +) + +func main() { + fmt.Fprintf(os.Stdout, "start running translation_generator...\n") + workDir, err := os.Getwd() + if err != nil { + fmt.Fprintf(os.Stderr, "get workdir error %s \n", err.Error()) + exit() + } + if len(os.Args) < 2 { + fmt.Fprintf(os.Stderr, "no i18n file path\n") + exit() + } + + i18nFileDir := os.Args[1] + // 拿到国际化文件路径,不是绝对路径的转为绝对路径 + if !filepath.IsAbs(i18nFileDir) { + if i18nFileDir, err = filepath.Abs(i18nFileDir); err != nil { + fmt.Fprintf(os.Stderr, "i18n file path abs error\n") + exit() + } + } + fmt.Fprintf(os.Stdout, "i18n file path dir %s\n", i18nFileDir) + + g := Generator{} + + // 打印文件头和包引用 + g.Printf("// Code generated by \"translation_generator\"; DO NOT EDIT.\n") + g.Printf("\n") + g.Printf("package %s", "translation") + g.Printf("\n") + g.Printf("import \"github.com/nicksnyder/go-i18n/v2/i18n\"\n") + g.Printf("\n") + g.Printf("// Translations 保存当前所有的翻译\n") + g.Printf("var Translations map[string][]*i18n.Message = make(map[string][]*i18n.Message)\n") + g.Printf("func init(){\n") + + // 读取用户配置的国际化文件 + files, err := ioutil.ReadDir(i18nFileDir) + if err != nil { + fmt.Fprintf(os.Stderr, "read i18ndir error %s \n", err.Error()) + exit() + } + for _, f := range files { + if f.IsDir() { + continue + } + // 文件名称就作为需要国际化的语言的key + fileName := f.Name() + fmt.Fprintf(os.Stdout, "start read language file %s ...\n", fileName) + + fileContent, err := os.ReadFile(filepath.Join(i18nFileDir, fileName)) + if err != nil { + fmt.Fprintf(os.Stderr, "read i18nfile %s error %s \n", filepath.Join(i18nFileDir, fileName), err.Error()) + exit() + } + + // 解析国际化内容 + lanuageValue := map[string]map[string]string{} + err = json.Unmarshal(fileContent, &lanuageValue) + if err != nil { + fmt.Fprintf(os.Stderr, "json umarshal i18nfile %s error %s \n", filepath.Join(i18nFileDir, fileName), err.Error()) + exit() + } + + // 拿到id排序方便每次输出一致 + keys := []string{} + for key := range lanuageValue { + keys = append(keys, key) + } + sort.Sort(sort.StringSlice(keys)) + + // 打印代码内容 + // 获取并校验语言类型 + lanuagStr := strings.TrimSuffix(fileName, ".json") + lanuagTag, err := language.Parse(lanuagStr) + if err != nil { + fmt.Fprintf(os.Stderr, "go not support lanuage name %s error %s\n", lanuagStr, err.Error()) + exit() + } + g.Printf("Translations[\"%s\"] = []*i18n.Message{\n", lanuagTag.String()) + // 拼接 i18n.Message 对象,并校验 + for _, id := range keys { + v := lanuageValue[id] + g.Printf("{\n") + if id == "" { + fmt.Fprintf(os.Stderr, "build i18nmessage error file %s id is blank \n", filepath.Join(i18nFileDir, fileName)) + exit() + } + g.Printf("ID: \"%s\",", id) + other, ok := v["other"] + if !ok { + fmt.Fprintf(os.Stderr, "build i18nmessage error file %s id %s no 'other' key \n", filepath.Join(i18nFileDir, fileName), id) + exit() + } + // 将换行符转义 + other = strings.ReplaceAll(other, "\n", "\\n") + g.Printf("Other: \"%s\",", other) + g.Printf("},\n") + } + + g.Printf("}\n") + fmt.Fprintf(os.Stdout, "language file %s build done\n", fileName) + } + g.Printf("}\n") + + // 格式化输出 + src := g.format() + // 写入到 translation.go 文件中 + outputName := filepath.Join(workDir, "translation", "translation.go") + err = os.WriteFile(outputName, src, 0644) + if err != nil { + fmt.Fprintf(os.Stderr, "writing output: %s", err) + exit() + } +} + +// 生成器保存分析的状态。 主要用来缓冲 format.Source 的输出。 +type Generator struct { + buf bytes.Buffer // 累计输出 +} + +func (g *Generator) Printf(format string, args ...interface{}) { + fmt.Fprintf(&g.buf, format, args...) +} + +// 格式返回生成器缓冲区的 gofmt-ed 内容。 +func (g *Generator) format() []byte { + src, err := format.Source(g.buf.Bytes()) + if err != nil { + return g.buf.Bytes() + } + return src +} + +func exit() { + os.Exit(1) +} diff --git a/src/agent/agent-slim/go.mod b/src/agent/agent-slim/go.mod new file mode 100644 index 00000000000..05ca5828927 --- /dev/null +++ b/src/agent/agent-slim/go.mod @@ -0,0 +1,19 @@ +module github.com/TencentBlueKing/bk-ci/agentslim + +go 1.19 + +require ( + github.com/Netflix/go-env v0.0.0-20220526054621-78278af1949d + github.com/TencentBlueKing/bk-ci/agentcommon v0.0.0-00010101000000-000000000000 + github.com/nicksnyder/go-i18n/v2 v2.2.1 + github.com/pkg/errors v0.9.1 + golang.org/x/text v0.12.0 +) + +require ( + github.com/sirupsen/logrus v1.9.3 // indirect + golang.org/x/sys v0.5.0 // indirect + gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect +) + +replace github.com/TencentBlueKing/bk-ci/agentcommon => ../common diff --git a/src/agent/agent-slim/go.sum b/src/agent/agent-slim/go.sum new file mode 100644 index 00000000000..64fab0602da --- /dev/null +++ b/src/agent/agent-slim/go.sum @@ -0,0 +1,54 @@ +github.com/BurntSushi/toml v1.0.0 h1:dtDWrepsVPfW9H/4y7dDgFc2MBUSeJhlaDtK13CxFlU= +github.com/BurntSushi/toml v1.0.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= +github.com/Netflix/go-env v0.0.0-20220526054621-78278af1949d h1:wvStE9wLpws31NiWUx+38wny1msZ/tm+eL5xmm4Y7So= +github.com/Netflix/go-env v0.0.0-20220526054621-78278af1949d/go.mod h1:9XMFaCeRyW7fC9XJOWQ+NdAv8VLG7ys7l3x4ozEGLUQ= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/nicksnyder/go-i18n/v2 v2.2.1 h1:aOzRCdwsJuoExfZhoiXHy4bjruwCMdt5otbYojM/PaA= +github.com/nicksnyder/go-i18n/v2 v2.2.1/go.mod h1:fF2++lPHlo+/kPaj3nB0uxtPwzlPm+BlgwGX7MkeGj0= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= +github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.12.0 h1:k+n5B8goJNdU7hSvEtMUz3d1Q6D/XW4COJSJR6fN0mc= +golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc= +gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc= +gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU= +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/src/agent/agent-slim/pkg/config/config.go b/src/agent/agent-slim/pkg/config/config.go new file mode 100644 index 00000000000..9845a847af8 --- /dev/null +++ b/src/agent/agent-slim/pkg/config/config.go @@ -0,0 +1,67 @@ +package config + +import ( + "os" + "os/user" + "path/filepath" + + "github.com/Netflix/go-env" + "github.com/pkg/errors" +) + +var Config *ConfigType + +type ConfigType struct { + // WorkDir 程序运行目录,不用多次拿取 + WorkDir string + // StartUser 启动用户 + StartUser string + EnvConfig +} + +func InitConfig() error { + envConfig, err := loadConfigFromEnv() + if err != nil { + return err + } + + workDir, err := os.Executable() + if err != nil { + return err + } + + startUser, err := user.Current() + if err != nil { + return err + } + + Config = &ConfigType{ + EnvConfig: envConfig, + WorkDir: filepath.Dir(workDir), + StartUser: startUser.Username, + } + + if Config.WorkerUser == "" { + Config.WorkerUser = startUser.Username + } + + return nil +} + +type EnvConfig struct { + IsDebug bool `env:"DEVOPS_AGENTSLIM_ISDEBUG"` + LogPath string `env:"DEVOPS_AGENTSLIM_LOGPATH"` + WorkerUser string `env:"DEVOPS_AGENTSLIM_WORKER_USER"` + Lanuage string `env:"DEVOPS_AGENTSLIM_LANUAGE"` +} + +// loadConfigFromEnv 从环境变量中加载相关配置 +func loadConfigFromEnv() (EnvConfig, error) { + var res EnvConfig + _, err := env.UnmarshalFromEnviron(&res) + if err != nil { + return res, errors.Errorf("cannot load workspace config: %s", err.Error()) + } + + return res, nil +} diff --git a/src/agent/agent-slim/pkg/config/version.go b/src/agent/agent-slim/pkg/config/version.go new file mode 100644 index 00000000000..c42f540258d --- /dev/null +++ b/src/agent/agent-slim/pkg/config/version.go @@ -0,0 +1,34 @@ +/* + * Tencent is pleased to support the open source community by making BK-CI 蓝鲸持续集成平台 available. + * + * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. + * + * BK-CI 蓝鲸持续集成平台 is licensed under the MIT license. + * + * A copy of the MIT License is included in this file. + * + * + * Terms of the MIT License: + * --------------------------------------------------- + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated + * documentation files (the "Software"), to deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of + * the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT + * LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + * NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +package config + +var ( + AgentVersion string + GitCommit string + BuildTime string +) diff --git a/src/agent/agent-slim/pkg/constant/constant.go b/src/agent/agent-slim/pkg/constant/constant.go new file mode 100644 index 00000000000..c1c49b111d5 --- /dev/null +++ b/src/agent/agent-slim/pkg/constant/constant.go @@ -0,0 +1,5 @@ +package constant + +const ( + DEFAULT_LANGUAGE_TYPE = "zh_CN" +) diff --git a/src/agent/agent-slim/pkg/i18n/i18n.go b/src/agent/agent-slim/pkg/i18n/i18n.go new file mode 100644 index 00000000000..76d88574a07 --- /dev/null +++ b/src/agent/agent-slim/pkg/i18n/i18n.go @@ -0,0 +1,126 @@ +/* + * Tencent is pleased to support the open source community by making BK-CI 蓝鲸持续集成平台 available. + * + * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. + * + * BK-CI 蓝鲸持续集成平台 is licensed under the MIT license. + * + * A copy of the MIT License is included in this file. + * + * + * Terms of the MIT License: + * --------------------------------------------------- + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated + * documentation files (the "Software"), to deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of + * the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT + * LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + * NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +package i18n + +import ( + "sync" + + "github.com/TencentBlueKing/bk-ci/agentslim/pkg/config" + "github.com/TencentBlueKing/bk-ci/agentslim/pkg/constant" + "github.com/TencentBlueKing/bk-ci/agentslim/pkg/i18n/translation" + + "github.com/TencentBlueKing/bk-ci/agentcommon/logs" + + "github.com/nicksnyder/go-i18n/v2/i18n" + "golang.org/x/text/language" +) + +//go:generate go run ../../cmd/translation_generator/translation_generator.go $I18N_DIR + +var localizer *localizerType + +var defaultLocalTag = language.Make(constant.DEFAULT_LANGUAGE_TYPE) + +type localizerType struct { + nowLocalizer language.Tag + rwLock sync.RWMutex + localizers map[language.Tag]*i18n.Localizer +} + +func (l *localizerType) getLocalizer() *i18n.Localizer { + l.rwLock.RLock() + defer l.rwLock.RUnlock() + local, ok := l.localizers[l.nowLocalizer] + if !ok { + // 未找到对应的本地化时默认使用中文 + logs.Warnf("not found nowLocalizer %s", l.nowLocalizer.String()) + return l.localizers[defaultLocalTag] + } + return local +} + +func InitAgentI18n() { + localizers := map[language.Tag]*i18n.Localizer{} + bundle := i18n.NewBundle(language.SimplifiedChinese) + for lanuage, messages := range translation.Translations { + // 通过自动生成的校验之后不会出现err,但是如果出现了我们直接跳过 + tag, err := language.Parse(lanuage) + if err != nil { + continue + } + bundle.AddMessages(tag, messages...) + localizers[tag] = i18n.NewLocalizer(bundle, tag.String()) + } + + localizer = &localizerType{ + // 初始化时默认为中文 + nowLocalizer: defaultLocalTag, + rwLock: sync.RWMutex{}, + localizers: localizers, + } +} + +func Localize(messageId string, templateData map[string]interface{}) string { + localizer.rwLock.RLock() + defer localizer.rwLock.RUnlock() + + nowLocalizer := localizer.getLocalizer() + if nowLocalizer == nil { + logs.Error("Localize nowLocalizer is nil") + return "" + } + + translation, err := nowLocalizer.Localize(&i18n.LocalizeConfig{ + MessageID: messageId, + TemplateData: templateData, + }) + if err != nil { + logs.WithError(err).Error("Localize error") + return "" + } + + return translation +} + +// CheckLocalizer 检查并且切换国际化语言 +func CheckLocalizer() { + newLocal := language.Make(config.Config.Lanuage) + + // 先用读锁看一眼,如果一样就不换了 + localizer.rwLock.RLock() + if localizer.nowLocalizer == newLocal { + localizer.rwLock.RUnlock() + return + } + localizer.rwLock.RUnlock() + + localizer.rwLock.Lock() + defer localizer.rwLock.Unlock() + + localizer.nowLocalizer = newLocal +} diff --git a/src/agent/agent-slim/pkg/i18n/translation/translation.go b/src/agent/agent-slim/pkg/i18n/translation/translation.go new file mode 100644 index 00000000000..252e5daa94c --- /dev/null +++ b/src/agent/agent-slim/pkg/i18n/translation/translation.go @@ -0,0 +1,13 @@ +// Code generated by "translation_generator"; DO NOT EDIT. + +package translation + +import "github.com/nicksnyder/go-i18n/v2/i18n" + +// Translations 保存当前所有的翻译 +var Translations map[string][]*i18n.Message = make(map[string][]*i18n.Message) + +func init() { + Translations["en-US"] = []*i18n.Message{} + Translations["zh-CN"] = []*i18n.Message{} +} diff --git a/src/agent/agent-slim/pkg/slim.go b/src/agent/agent-slim/pkg/slim.go new file mode 100644 index 00000000000..aa5e4a58fbc --- /dev/null +++ b/src/agent/agent-slim/pkg/slim.go @@ -0,0 +1,5 @@ +package pkg + +func Run() { + +} diff --git a/src/agent/agent/Makefile b/src/agent/agent/Makefile index d9dc4734161..1081f063551 100644 --- a/src/agent/agent/Makefile +++ b/src/agent/agent/Makefile @@ -3,8 +3,8 @@ CMDDIR := $(CURDIR)/src/cmd BuildTime := $(shell date '+%Y-%m-%d.%H:%M:%S%Z') GitCommit := $(shell git rev-parse HEAD) AGENT_VERSION=v1.12.0-beta.36 -BUILD_FLAGS := -ldflags="-w -s -X github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/config.BuildTime=$(BuildTime) \ --X github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/config.GitCommit=$(GitCommit) -X github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/config.AgentVersion=$(AGENT_VERSION)" +BUILD_FLAGS := -ldflags="-w -s -X github.com/TencentBlueKing/bk-ci/agent/src/pkg/config.BuildTime=$(BuildTime) \ +-X github.com/TencentBlueKing/bk-ci/agent/src/pkg/config.GitCommit=$(GitCommit) -X github.com/TencentBlueKing/bk-ci/agent/src/pkg/config.AgentVersion=$(AGENT_VERSION)" # 编译外部出包版本时需要设置当前变量为out BUILD_OUT_TAG=out @@ -21,7 +21,7 @@ test-unit: GO111MODULE=on go test -tags=${BUILD_OUT_TAG} -run . ./... # 相对于代码生成器的位置 -I18N_DIR := "../../../../../support-files/i18n/agent/" +I18N_DIR := "../../../../../../support-files/i18n/agent/" i18nfilegen: I18N_DIR=${I18N_DIR} go generate -x src/pkg/i18n/i18n.go diff --git a/src/agent/agent/build_windows.ps1 b/src/agent/agent/build_windows.ps1 index 57786b5162c..bc2ce3867d6 100644 --- a/src/agent/agent/build_windows.ps1 +++ b/src/agent/agent/build_windows.ps1 @@ -10,7 +10,7 @@ mkdir $WORK_DIR\bin $Env:GO111MODULE = "on" $BuildTime = Get-Date -Format "yyyy/MM/dd.HH:mm.K" $GitCommit = git rev-parse HEAD -$BUILD_FLAGS = "-ldflags=`"-w -s -X github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/config.BuildTime=$BuildTime -X github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/config.GitCommit=$GitCommit`"" +$BUILD_FLAGS = "-ldflags=`"-w -s -X github.com/TencentBlueKing/bk-ci/agent/src/pkg/config.BuildTime=$BuildTime -X github.com/TencentBlueKing/bk-ci/agent/src/pkg/config.GitCommit=$GitCommit`"" go env diff --git a/src/agent/agent/go.mod b/src/agent/agent/go.mod index ad8a23dab30..5d3ffeb3254 100644 --- a/src/agent/agent/go.mod +++ b/src/agent/agent/go.mod @@ -1,8 +1,9 @@ -module github.com/TencentBlueKing/bk-ci/src/agent +module github.com/TencentBlueKing/bk-ci/agent go 1.19 require ( + github.com/TencentBlueKing/bk-ci/agentcommon v0.0.0-00010101000000-000000000000 github.com/docker/docker v23.0.3+incompatible github.com/gofrs/flock v0.8.1 // 1.24 以上的版本引入了memcall和memguard会导致 @@ -12,10 +13,10 @@ require ( github.com/kardianos/service v1.2.2 github.com/nicksnyder/go-i18n/v2 v2.2.1 github.com/pkg/errors v0.9.1 - github.com/sirupsen/logrus v1.9.0 + github.com/sirupsen/logrus v1.9.3 golang.org/x/text v0.7.0 gopkg.in/ini.v1 v1.67.0 - gopkg.in/natefinch/lumberjack.v2 v2.0.0 + gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gotest.tools/v3 v3.0.3 ) @@ -122,3 +123,5 @@ require ( github.com/docker/go-connections v0.4.0 github.com/spf13/pflag v1.0.5 ) + +replace github.com/TencentBlueKing/bk-ci/agentcommon => ../common diff --git a/src/agent/agent/go.sum b/src/agent/agent/go.sum index 908feb31e1c..0ab43478a43 100644 --- a/src/agent/agent/go.sum +++ b/src/agent/agent/go.sum @@ -1038,8 +1038,8 @@ github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMB github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0= -github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= +github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/sleepinggenius2/gosmi v0.4.4 h1:xgu+Mt7CptuB10IPt3SVXBAA9tARToT4B9xGzjjxQX8= github.com/sleepinggenius2/gosmi v0.4.4/go.mod h1:l8OniPmd3bJzw0MXP2/qh7AhP/e+bTY2CNivIhsnDT0= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= @@ -1640,8 +1640,8 @@ gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/natefinch/lumberjack.v2 v2.0.0 h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8= -gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= +gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc= +gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc= gopkg.in/olivere/elastic.v5 v5.0.86 h1:xFy6qRCGAmo5Wjx96srho9BitLhZl2fcnpuidPwduXM= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= diff --git a/src/agent/agent/src/cmd/agent/main.go b/src/agent/agent/src/cmd/agent/main.go index bcd634a8cd2..a182c6d4f33 100644 --- a/src/agent/agent/src/cmd/agent/main.go +++ b/src/agent/agent/src/cmd/agent/main.go @@ -36,10 +36,11 @@ import ( "strings" "time" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/agent" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/config" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/logs" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/util/systemutil" + "github.com/TencentBlueKing/bk-ci/agentcommon/logs" + + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/agent" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/config" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/systemutil" ) const ( diff --git a/src/agent/agent/src/cmd/daemon/main.go b/src/agent/agent/src/cmd/daemon/main.go index a5b36b93317..3be4e9c1007 100644 --- a/src/agent/agent/src/cmd/daemon/main.go +++ b/src/agent/agent/src/cmd/daemon/main.go @@ -38,11 +38,12 @@ import ( "runtime" "time" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/config" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/logs" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/upgrade" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/util/fileutil" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/util/systemutil" + "github.com/TencentBlueKing/bk-ci/agentcommon/logs" + + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/config" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/upgrade" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/fileutil" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/systemutil" "github.com/gofrs/flock" ) diff --git a/src/agent/agent/src/cmd/daemon/main_win.go b/src/agent/agent/src/cmd/daemon/main_win.go index f1f4cbc79d4..834e1d13847 100644 --- a/src/agent/agent/src/cmd/daemon/main_win.go +++ b/src/agent/agent/src/cmd/daemon/main_win.go @@ -38,10 +38,11 @@ import ( "runtime" "time" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/config" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/logs" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/util/fileutil" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/util/systemutil" + "github.com/TencentBlueKing/bk-ci/agentcommon/logs" + + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/config" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/fileutil" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/systemutil" "github.com/kardianos/service" ) diff --git a/src/agent/agent/src/cmd/installer/main.go b/src/agent/agent/src/cmd/installer/main.go index 105ad0673e4..cc6663c9925 100644 --- a/src/agent/agent/src/cmd/installer/main.go +++ b/src/agent/agent/src/cmd/installer/main.go @@ -33,10 +33,11 @@ import ( "os" "path/filepath" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/config" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/installer" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/logs" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/util/systemutil" + "github.com/TencentBlueKing/bk-ci/agentcommon/logs" + + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/config" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/installer" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/systemutil" ) const ( diff --git a/src/agent/agent/src/cmd/upgrader/main.go b/src/agent/agent/src/cmd/upgrader/main.go index ec40ab51e0c..41e3aa0d62b 100644 --- a/src/agent/agent/src/cmd/upgrader/main.go +++ b/src/agent/agent/src/cmd/upgrader/main.go @@ -33,10 +33,11 @@ import ( "os" "path/filepath" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/config" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/logs" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/upgrader" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/util/systemutil" + "github.com/TencentBlueKing/bk-ci/agentcommon/logs" + + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/config" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/upgrader" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/systemutil" ) const ( diff --git a/src/agent/agent/src/pkg/agent/agent.go b/src/agent/agent/src/pkg/agent/agent.go index bead309ab49..b6b8b3bd79a 100644 --- a/src/agent/agent/src/pkg/agent/agent.go +++ b/src/agent/agent/src/pkg/agent/agent.go @@ -28,16 +28,17 @@ package agent import ( - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/collector" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/config" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/cron" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/heartbeat" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/i18n" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/imagedebug" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/job" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/logs" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/pipeline" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/upgrade" + "github.com/TencentBlueKing/bk-ci/agentcommon/logs" + + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/collector" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/config" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/cron" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/heartbeat" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/i18n" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/imagedebug" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/job" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/pipeline" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/upgrade" ) func Run(isDebug bool) { diff --git a/src/agent/agent/src/pkg/api/api.go b/src/agent/agent/src/pkg/api/api.go index c52da6ebad0..705cc434544 100644 --- a/src/agent/agent/src/pkg/api/api.go +++ b/src/agent/agent/src/pkg/api/api.go @@ -32,9 +32,9 @@ import ( "runtime" "strconv" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/config" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/util/httputil" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/util/systemutil" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/config" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/httputil" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/systemutil" ) func buildUrl(url string) string { diff --git a/src/agent/agent/src/pkg/collector/collector.go b/src/agent/agent/src/pkg/collector/collector.go index f1c089561b2..f1a8fdaad55 100644 --- a/src/agent/agent/src/pkg/collector/collector.go +++ b/src/agent/agent/src/pkg/collector/collector.go @@ -35,21 +35,22 @@ import ( "text/template" "time" - telegrafconf "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/collector/telegrafConf" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/util/fileutil" + telegrafconf "github.com/TencentBlueKing/bk-ci/agent/src/pkg/collector/telegrafConf" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/fileutil" "github.com/pkg/errors" "github.com/influxdata/telegraf/logger" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/util/systemutil" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/systemutil" "github.com/influxdata/telegraf/agent" telegrafConfig "github.com/influxdata/telegraf/config" "strings" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/config" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/logs" + "github.com/TencentBlueKing/bk-ci/agentcommon/logs" + + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/config" ) const ( diff --git a/src/agent/agent/src/pkg/config/config.go b/src/agent/agent/src/pkg/config/config.go index 77628138c0c..4949e698ae2 100644 --- a/src/agent/agent/src/pkg/config/config.go +++ b/src/agent/agent/src/pkg/config/config.go @@ -44,11 +44,12 @@ import ( languageUtil "golang.org/x/text/language" "gopkg.in/ini.v1" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/logs" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/util" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/util/command" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/util/fileutil" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/util/systemutil" + "github.com/TencentBlueKing/bk-ci/agentcommon/logs" + + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/command" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/fileutil" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/systemutil" ) const ( diff --git a/src/agent/agent/src/pkg/config/config_test.go b/src/agent/agent/src/pkg/config/config_test.go index 54aa200a82f..7a48bccfaa4 100644 --- a/src/agent/agent/src/pkg/config/config_test.go +++ b/src/agent/agent/src/pkg/config/config_test.go @@ -5,7 +5,7 @@ import ( "reflect" "testing" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/logs" + "github.com/TencentBlueKing/bk-ci/agentcommon/logs" ) func Test_parseWorkerVersion(t *testing.T) { diff --git a/src/agent/agent/src/pkg/config/constant.go b/src/agent/agent/src/pkg/config/constant.go index ff235d9d88e..5942d6f88a3 100644 --- a/src/agent/agent/src/pkg/config/constant.go +++ b/src/agent/agent/src/pkg/config/constant.go @@ -28,7 +28,7 @@ package config import ( - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/util/systemutil" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/systemutil" ) const ActionUpgrade = "upgrade" diff --git a/src/agent/agent/src/pkg/cron/cron.go b/src/agent/agent/src/pkg/cron/cron.go index 56231bf749c..1def9475b91 100644 --- a/src/agent/agent/src/pkg/cron/cron.go +++ b/src/agent/agent/src/pkg/cron/cron.go @@ -35,16 +35,17 @@ import ( "strings" "time" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/config" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/imagedebug" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/job_docker" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/config" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/imagedebug" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/job_docker" "github.com/docker/docker/api/types" "github.com/docker/docker/api/types/container" "github.com/docker/docker/client" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/logs" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/util" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/util/systemutil" + "github.com/TencentBlueKing/bk-ci/agentcommon/logs" + + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/systemutil" ) func CleanJob() { diff --git a/src/agent/agent/src/pkg/heartbeat/heartbeat.go b/src/agent/agent/src/pkg/heartbeat/heartbeat.go index 6bcb274a6c8..2ebe1d74672 100644 --- a/src/agent/agent/src/pkg/heartbeat/heartbeat.go +++ b/src/agent/agent/src/pkg/heartbeat/heartbeat.go @@ -32,13 +32,14 @@ import ( "sync" "time" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/api" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/config" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/job" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/logs" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/upgrade" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/util" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/util/systemutil" + "github.com/TencentBlueKing/bk-ci/agentcommon/logs" + + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/api" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/config" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/job" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/upgrade" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/systemutil" ) func DoAgentHeartbeat() { diff --git a/src/agent/agent/src/pkg/i18n/i18n.go b/src/agent/agent/src/pkg/i18n/i18n.go index 89a4b9b43b6..9fcf664dc46 100644 --- a/src/agent/agent/src/pkg/i18n/i18n.go +++ b/src/agent/agent/src/pkg/i18n/i18n.go @@ -30,9 +30,10 @@ package i18n import ( "sync" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/config" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/i18n/translation" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/logs" + "github.com/TencentBlueKing/bk-ci/agentcommon/logs" + + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/config" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/i18n/translation" "github.com/nicksnyder/go-i18n/v2/i18n" "golang.org/x/text/language" ) diff --git a/src/agent/agent/src/pkg/imagedebug/imagedebug.go b/src/agent/agent/src/pkg/imagedebug/imagedebug.go index 97ee1505c4a..87c720228c2 100644 --- a/src/agent/agent/src/pkg/imagedebug/imagedebug.go +++ b/src/agent/agent/src/pkg/imagedebug/imagedebug.go @@ -9,14 +9,15 @@ import ( "sync" "time" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/api" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/config" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/constant" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/i18n" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/job_docker" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/logs" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/util" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/util/systemutil" + "github.com/TencentBlueKing/bk-ci/agentcommon/logs" + + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/api" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/config" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/constant" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/i18n" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/job_docker" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/systemutil" "github.com/docker/docker/api/types" "github.com/docker/docker/api/types/container" "github.com/docker/docker/api/types/mount" diff --git a/src/agent/agent/src/pkg/imagedebug/port.go b/src/agent/agent/src/pkg/imagedebug/port.go index d8d1813f43a..4509680cfab 100644 --- a/src/agent/agent/src/pkg/imagedebug/port.go +++ b/src/agent/agent/src/pkg/imagedebug/port.go @@ -7,7 +7,7 @@ import ( "strconv" "strings" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/config" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/config" "github.com/pkg/errors" ) diff --git a/src/agent/agent/src/pkg/installer/installer.go b/src/agent/agent/src/pkg/installer/installer.go index baa1479e14b..2c19ca0d00c 100644 --- a/src/agent/agent/src/pkg/installer/installer.go +++ b/src/agent/agent/src/pkg/installer/installer.go @@ -31,12 +31,13 @@ import ( "errors" "fmt" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/api" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/config" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/logs" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/util/command" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/util/fileutil" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/util/systemutil" + "github.com/TencentBlueKing/bk-ci/agentcommon/logs" + + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/api" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/config" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/command" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/fileutil" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/systemutil" "github.com/gofrs/flock" ) diff --git a/src/agent/agent/src/pkg/job/build.go b/src/agent/agent/src/pkg/job/build.go index 1109a2e30c5..15ea55b3bbd 100644 --- a/src/agent/agent/src/pkg/job/build.go +++ b/src/agent/agent/src/pkg/job/build.go @@ -38,15 +38,16 @@ import ( "sync" "time" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/api" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/config" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/i18n" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/logs" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/util" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/util/command" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/util/fileutil" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/util/httputil" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/util/systemutil" + "github.com/TencentBlueKing/bk-ci/agentcommon/logs" + + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/api" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/config" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/i18n" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/command" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/fileutil" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/httputil" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/systemutil" ) type BuildTotalManagerType struct { diff --git a/src/agent/agent/src/pkg/job/build_docker.go b/src/agent/agent/src/pkg/job/build_docker.go index 19deb0452fe..c803afa7992 100644 --- a/src/agent/agent/src/pkg/job/build_docker.go +++ b/src/agent/agent/src/pkg/job/build_docker.go @@ -37,15 +37,16 @@ import ( "sync" "time" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/api" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/config" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/constant" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/i18n" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/job_docker" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/logs" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/upgrade/download" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/util" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/util/systemutil" + "github.com/TencentBlueKing/bk-ci/agentcommon/logs" + + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/api" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/config" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/constant" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/i18n" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/job_docker" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/upgrade/download" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/systemutil" "github.com/docker/docker/api/types" "github.com/docker/docker/api/types/container" "github.com/docker/docker/api/types/mount" diff --git a/src/agent/agent/src/pkg/job/build_manager.go b/src/agent/agent/src/pkg/job/build_manager.go index 7609aa0d39c..d429cedf7f3 100644 --- a/src/agent/agent/src/pkg/job/build_manager.go +++ b/src/agent/agent/src/pkg/job/build_manager.go @@ -33,11 +33,12 @@ import ( "os" "sync" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/api" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/i18n" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/logs" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/util/fileutil" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/util/systemutil" + "github.com/TencentBlueKing/bk-ci/agentcommon/logs" + + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/api" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/i18n" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/fileutil" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/systemutil" ) // buildManager 二进制构建对象管理 diff --git a/src/agent/agent/src/pkg/job/job.go b/src/agent/agent/src/pkg/job/job.go index b12fe45b2ea..a208bd68bfc 100644 --- a/src/agent/agent/src/pkg/job/job.go +++ b/src/agent/agent/src/pkg/job/job.go @@ -3,7 +3,7 @@ package job import ( "fmt" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/util/systemutil" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/systemutil" ) const ( diff --git a/src/agent/agent/src/pkg/job/job_test.go b/src/agent/agent/src/pkg/job/job_test.go index eaf014acb6b..fb22b572196 100644 --- a/src/agent/agent/src/pkg/job/job_test.go +++ b/src/agent/agent/src/pkg/job/job_test.go @@ -3,7 +3,7 @@ package job import ( "testing" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/util/systemutil" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/systemutil" ) func Test_getUnixWorkerPrepareStartScriptFile(t *testing.T) { diff --git a/src/agent/agent/src/pkg/job_docker/job_docker.go b/src/agent/agent/src/pkg/job_docker/job_docker.go index fae2d9fa770..51de755e01a 100644 --- a/src/agent/agent/src/pkg/job_docker/job_docker.go +++ b/src/agent/agent/src/pkg/job_docker/job_docker.go @@ -8,7 +8,7 @@ import ( "os" "strings" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/api" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/api" "github.com/docker/docker/api/types" "github.com/docker/docker/api/types/container" "github.com/docker/docker/api/types/network" diff --git a/src/agent/agent/src/pkg/job_docker/opts.go b/src/agent/agent/src/pkg/job_docker/opts.go index cfdb23d4f1e..f4f390451c6 100644 --- a/src/agent/agent/src/pkg/job_docker/opts.go +++ b/src/agent/agent/src/pkg/job_docker/opts.go @@ -13,7 +13,8 @@ import ( "strings" "time" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/logs" + "github.com/TencentBlueKing/bk-ci/agentcommon/logs" + "github.com/docker/cli/cli/compose/loader" "github.com/docker/cli/opts" "github.com/docker/docker/api/types/container" diff --git a/src/agent/agent/src/pkg/pipeline/pipeline.go b/src/agent/agent/src/pkg/pipeline/pipeline.go index 485b42724b6..4cd3da8f2f2 100644 --- a/src/agent/agent/src/pkg/pipeline/pipeline.go +++ b/src/agent/agent/src/pkg/pipeline/pipeline.go @@ -39,11 +39,12 @@ import ( "github.com/pkg/errors" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/api" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/logs" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/util" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/util/command" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/util/systemutil" + "github.com/TencentBlueKing/bk-ci/agentcommon/logs" + + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/api" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/command" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/systemutil" ) func Start() { diff --git a/src/agent/agent/src/pkg/upgrade/download/download_darwin.go b/src/agent/agent/src/pkg/upgrade/download/download_darwin.go index 37be8bb30ea..cbf77e93ec6 100644 --- a/src/agent/agent/src/pkg/upgrade/download/download_darwin.go +++ b/src/agent/agent/src/pkg/upgrade/download/download_darwin.go @@ -4,11 +4,12 @@ package download import ( - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/api" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/config" - "github.com/pkg/errors" "runtime" "strings" + + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/api" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/config" + "github.com/pkg/errors" ) func getServerFileArch() string { diff --git a/src/agent/agent/src/pkg/upgrade/download/download_unix.go b/src/agent/agent/src/pkg/upgrade/download/download_unix.go index 1845315492e..471a32c926d 100644 --- a/src/agent/agent/src/pkg/upgrade/download/download_unix.go +++ b/src/agent/agent/src/pkg/upgrade/download/download_unix.go @@ -7,8 +7,8 @@ import ( "runtime" "strings" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/api" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/config" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/api" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/config" ) func getServerFileArch() string { diff --git a/src/agent/agent/src/pkg/upgrade/download/download_win.go b/src/agent/agent/src/pkg/upgrade/download/download_win.go index 6560f3c58ec..4fafc62025d 100644 --- a/src/agent/agent/src/pkg/upgrade/download/download_win.go +++ b/src/agent/agent/src/pkg/upgrade/download/download_win.go @@ -4,8 +4,8 @@ package download import ( - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/api" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/config" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/api" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/config" "github.com/pkg/errors" ) diff --git a/src/agent/agent/src/pkg/upgrade/operation.go b/src/agent/agent/src/pkg/upgrade/operation.go index c1719343061..6f140a1d38a 100644 --- a/src/agent/agent/src/pkg/upgrade/operation.go +++ b/src/agent/agent/src/pkg/upgrade/operation.go @@ -34,15 +34,16 @@ import ( "strings" "time" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/job" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/job" "github.com/pkg/errors" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/config" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/logs" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/util/command" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/util/fileutil" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/util/systemutil" + "github.com/TencentBlueKing/bk-ci/agentcommon/logs" + + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/config" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/command" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/fileutil" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/systemutil" ) const DAEMON_EXIT_CODE = 88 diff --git a/src/agent/agent/src/pkg/upgrade/upgrade.go b/src/agent/agent/src/pkg/upgrade/upgrade.go index 471bb4f59fe..dd7e3ba3979 100644 --- a/src/agent/agent/src/pkg/upgrade/upgrade.go +++ b/src/agent/agent/src/pkg/upgrade/upgrade.go @@ -34,17 +34,18 @@ import ( "sync/atomic" "time" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/upgrade/download" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/util" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/util/command" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/upgrade/download" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/command" "github.com/pkg/errors" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/api" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/config" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/logs" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/util/fileutil" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/util/systemutil" + "github.com/TencentBlueKing/bk-ci/agentcommon/logs" + + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/api" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/config" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/fileutil" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/systemutil" ) var JdkVersion = &JdkVersionType{} diff --git a/src/agent/agent/src/pkg/upgrader/upgrader.go b/src/agent/agent/src/pkg/upgrader/upgrader.go index ebcac464e74..b5b25d2eb87 100644 --- a/src/agent/agent/src/pkg/upgrader/upgrader.go +++ b/src/agent/agent/src/pkg/upgrader/upgrader.go @@ -34,11 +34,12 @@ import ( "strconv" "time" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/config" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/logs" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/util/command" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/util/fileutil" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/util/systemutil" + "github.com/TencentBlueKing/bk-ci/agentcommon/logs" + + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/config" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/command" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/fileutil" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/systemutil" "github.com/gofrs/flock" ) diff --git a/src/agent/agent/src/pkg/util/command/command.go b/src/agent/agent/src/pkg/util/command/command.go index 20fbd9bc1ee..b395eec0479 100644 --- a/src/agent/agent/src/pkg/util/command/command.go +++ b/src/agent/agent/src/pkg/util/command/command.go @@ -33,7 +33,7 @@ import ( "os" "os/exec" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/logs" + "github.com/TencentBlueKing/bk-ci/agentcommon/logs" ) func RunCommand(command string, args []string, workDir string, envMap map[string]string) (output []byte, err error) { diff --git a/src/agent/agent/src/pkg/util/command/user.go b/src/agent/agent/src/pkg/util/command/user.go index 1dc024fe25d..cb20e752865 100644 --- a/src/agent/agent/src/pkg/util/command/user.go +++ b/src/agent/agent/src/pkg/util/command/user.go @@ -39,8 +39,9 @@ import ( "strings" "syscall" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/logs" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/util/systemutil" + "github.com/TencentBlueKing/bk-ci/agentcommon/logs" + + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/systemutil" ) var envHome = "HOME" diff --git a/src/agent/agent/src/pkg/util/command/user_win.go b/src/agent/agent/src/pkg/util/command/user_win.go index ec0afc813ff..d37f9aca68f 100644 --- a/src/agent/agent/src/pkg/util/command/user_win.go +++ b/src/agent/agent/src/pkg/util/command/user_win.go @@ -31,8 +31,9 @@ package command import ( - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/logs" "os/exec" + + "github.com/TencentBlueKing/bk-ci/agentcommon/logs" ) func setUser(_ *exec.Cmd, runUser string) error { diff --git a/src/agent/agent/src/pkg/util/fileutil/fileutil.go b/src/agent/agent/src/pkg/util/fileutil/fileutil.go index 8edd0ccea94..6cf8efc4d14 100644 --- a/src/agent/agent/src/pkg/util/fileutil/fileutil.go +++ b/src/agent/agent/src/pkg/util/fileutil/fileutil.go @@ -37,7 +37,7 @@ import ( "path/filepath" "strconv" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/logs" + "github.com/TencentBlueKing/bk-ci/agentcommon/logs" ) func Exists(file string) bool { diff --git a/src/agent/agent/src/pkg/util/httputil/devops.go b/src/agent/agent/src/pkg/util/httputil/devops.go index 101c8446615..2dbdf243167 100644 --- a/src/agent/agent/src/pkg/util/httputil/devops.go +++ b/src/agent/agent/src/pkg/util/httputil/devops.go @@ -35,12 +35,13 @@ import ( "os" "path/filepath" - "github.com/TencentBlueKing/bk-ci/src/agent/internal/third_party/dep/fs" + "github.com/TencentBlueKing/bk-ci/agent/internal/third_party/dep/fs" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/config" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/logs" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/util/fileutil" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/util/systemutil" + "github.com/TencentBlueKing/bk-ci/agentcommon/logs" + + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/config" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/fileutil" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/systemutil" ) type DevopsResult struct { diff --git a/src/agent/agent/src/pkg/util/httputil/httputil.go b/src/agent/agent/src/pkg/util/httputil/httputil.go index 61b156df0f1..2f118475ed2 100644 --- a/src/agent/agent/src/pkg/util/httputil/httputil.go +++ b/src/agent/agent/src/pkg/util/httputil/httputil.go @@ -39,8 +39,9 @@ import ( "reflect" "time" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/config" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/logs" + "github.com/TencentBlueKing/bk-ci/agentcommon/logs" + + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/config" ) type HttpClient struct { diff --git a/src/agent/agent/src/pkg/util/systemutil/dir_operation.go b/src/agent/agent/src/pkg/util/systemutil/dir_operation.go index b9d734e059b..be0daa25298 100644 --- a/src/agent/agent/src/pkg/util/systemutil/dir_operation.go +++ b/src/agent/agent/src/pkg/util/systemutil/dir_operation.go @@ -35,7 +35,7 @@ import ( "os" "syscall" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/logs" + "github.com/TencentBlueKing/bk-ci/agentcommon/logs" ) // MkBuildTmpDir 创建构建提供的临时目录 diff --git a/src/agent/agent/src/pkg/util/systemutil/dir_operation_win.go b/src/agent/agent/src/pkg/util/systemutil/dir_operation_win.go index 64bab8a5d0b..a6f00caf8e2 100644 --- a/src/agent/agent/src/pkg/util/systemutil/dir_operation_win.go +++ b/src/agent/agent/src/pkg/util/systemutil/dir_operation_win.go @@ -32,8 +32,9 @@ package systemutil import ( "fmt" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/logs" "os" + + "github.com/TencentBlueKing/bk-ci/agentcommon/logs" ) // MkBuildTmpDir 创建构建提供的临时目录 diff --git a/src/agent/agent/src/pkg/util/systemutil/systemutil.go b/src/agent/agent/src/pkg/util/systemutil/systemutil.go index efa7b5f607f..92d5766f8ce 100644 --- a/src/agent/agent/src/pkg/util/systemutil/systemutil.go +++ b/src/agent/agent/src/pkg/util/systemutil/systemutil.go @@ -37,9 +37,10 @@ import ( "runtime" "strings" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/logs" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/util" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/util/fileutil" + "github.com/TencentBlueKing/bk-ci/agentcommon/logs" + + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util" + "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/fileutil" "github.com/gofrs/flock" ) diff --git a/src/agent/agent/src/pkg/util/systemutil/systemutil_test.go b/src/agent/agent/src/pkg/util/systemutil/systemutil_test.go index 1abf6229b34..522b87f089a 100644 --- a/src/agent/agent/src/pkg/util/systemutil/systemutil_test.go +++ b/src/agent/agent/src/pkg/util/systemutil/systemutil_test.go @@ -30,7 +30,7 @@ package systemutil import ( "testing" - "github.com/TencentBlueKing/bk-ci/src/agent/src/pkg/logs" + "github.com/TencentBlueKing/bk-ci/agentcommon/logs" ) func TestGetAgentIp(t *testing.T) { diff --git a/src/agent/common/go.mod b/src/agent/common/go.mod new file mode 100644 index 00000000000..03f66e746ca --- /dev/null +++ b/src/agent/common/go.mod @@ -0,0 +1,10 @@ +module github.com/TencentBlueKing/bk-ci/agentcommon + +go 1.20 + +require ( + github.com/sirupsen/logrus v1.9.3 + gopkg.in/natefinch/lumberjack.v2 v2.2.1 +) + +require golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8 // indirect diff --git a/src/agent/common/go.sum b/src/agent/common/go.sum new file mode 100644 index 00000000000..4eb8ea69cf0 --- /dev/null +++ b/src/agent/common/go.sum @@ -0,0 +1,17 @@ +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= +github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8 h1:0A+M6Uqn+Eje4kHMK80dtF3JCXC4ykBgQG4Fe06QRhQ= +golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc= +gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/src/agent/agent/src/pkg/logs/export.go b/src/agent/common/logs/export.go similarity index 100% rename from src/agent/agent/src/pkg/logs/export.go rename to src/agent/common/logs/export.go diff --git a/src/agent/agent/src/pkg/logs/log_rotate.go b/src/agent/common/logs/log_rotate.go similarity index 100% rename from src/agent/agent/src/pkg/logs/log_rotate.go rename to src/agent/common/logs/log_rotate.go diff --git a/src/agent/agent/src/pkg/logs/logs.go b/src/agent/common/logs/logs.go similarity index 100% rename from src/agent/agent/src/pkg/logs/logs.go rename to src/agent/common/logs/logs.go diff --git a/support-files/i18n/agent-slim/en_US.json b/support-files/i18n/agent-slim/en_US.json new file mode 100644 index 00000000000..9e26dfeeb6e --- /dev/null +++ b/support-files/i18n/agent-slim/en_US.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/support-files/i18n/agent-slim/zh_CN.json b/support-files/i18n/agent-slim/zh_CN.json new file mode 100644 index 00000000000..9e26dfeeb6e --- /dev/null +++ b/support-files/i18n/agent-slim/zh_CN.json @@ -0,0 +1 @@ +{} \ No newline at end of file From 7f2d9b2f4c4d760756611d33a1698840ff39bf04 Mon Sep 17 00:00:00 2001 From: ruotiantang Date: Wed, 9 Aug 2023 14:21:51 +0800 Subject: [PATCH 03/10] =?UTF-8?q?feat:=20=E5=85=AC=E5=85=B1=E6=9E=84?= =?UTF-8?q?=E5=BB=BA=E6=9C=BA=E6=94=AF=E6=8C=81=E6=8C=81=E4=B9=85=E5=8C=96?= =?UTF-8?q?=E6=9E=84=E5=BB=BA=E5=AE=B9=E5=99=A8=E8=B0=83=E5=BA=A6=20#9269?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/agent/agent-slim/pkg/api/ErrorEnum.go | 78 +++++ src/agent/agent-slim/pkg/api/api.go | 144 +++++++++ src/agent/agent-slim/pkg/config/config.go | 30 +- src/agent/agent-slim/pkg/constant/constant.go | 9 + src/agent/agent-slim/pkg/i18n/i18n.go | 2 +- .../pkg/i18n/translation/translation.go | 34 ++- src/agent/agent-slim/pkg/job/build.go | 285 ++++++++++++++++++ src/agent/agent-slim/pkg/job/build_manager.go | 103 +++++++ src/agent/agent-slim/pkg/job/common.go | 141 +++++++++ src/agent/agent-slim/pkg/slim.go | 5 +- src/agent/agent/src/cmd/daemon/main.go | 2 +- src/agent/agent/src/cmd/daemon/main_win.go | 2 +- .../agent/src/pkg/collector/collector.go | 2 +- src/agent/agent/src/pkg/config/config.go | 2 +- .../agent/src/pkg/installer/installer.go | 2 +- src/agent/agent/src/pkg/job/build.go | 2 +- src/agent/agent/src/pkg/job/build_manager.go | 2 +- src/agent/agent/src/pkg/upgrade/operation.go | 2 +- src/agent/agent/src/pkg/upgrade/upgrade.go | 2 +- src/agent/agent/src/pkg/upgrader/upgrader.go | 2 +- .../agent/src/pkg/util/httputil/devops.go | 2 +- .../src/pkg/util/systemutil/systemutil.go | 2 +- src/agent/common/Makefile | 7 + .../utils}/fileutil/fileutil.go | 4 - .../utils}/fileutil/fileutil_test.go | 0 .../utils}/fileutil/testdata/existsFile | 0 .../utils}/fileutil/testdata/md5File | 0 .../utils}/fileutil/testdata/stringAndPidFile | 0 support-files/i18n/agent-slim/en_US.json | 24 +- support-files/i18n/agent-slim/zh_CN.json | 24 +- 30 files changed, 889 insertions(+), 25 deletions(-) create mode 100644 src/agent/agent-slim/pkg/api/ErrorEnum.go create mode 100644 src/agent/agent-slim/pkg/api/api.go create mode 100644 src/agent/agent-slim/pkg/job/build.go create mode 100644 src/agent/agent-slim/pkg/job/build_manager.go create mode 100644 src/agent/agent-slim/pkg/job/common.go create mode 100644 src/agent/common/Makefile rename src/agent/{agent/src/pkg/util => common/utils}/fileutil/fileutil.go (97%) rename src/agent/{agent/src/pkg/util => common/utils}/fileutil/fileutil_test.go (100%) rename src/agent/{agent/src/pkg/util => common/utils}/fileutil/testdata/existsFile (100%) rename src/agent/{agent/src/pkg/util => common/utils}/fileutil/testdata/md5File (100%) rename src/agent/{agent/src/pkg/util => common/utils}/fileutil/testdata/stringAndPidFile (100%) diff --git a/src/agent/agent-slim/pkg/api/ErrorEnum.go b/src/agent/agent-slim/pkg/api/ErrorEnum.go new file mode 100644 index 00000000000..d0fece98207 --- /dev/null +++ b/src/agent/agent-slim/pkg/api/ErrorEnum.go @@ -0,0 +1,78 @@ +package api + +type ErrorCode int + +const ( + BuildProcessRunError ErrorCode = 2128040 + iota + RecoverRunFileError + LoseRunFileError + MakeTmpDirError + BuildProcessStartError + PrepareScriptCreateError + DockerOsError + DockerRunShInitError + DockerRunShStatError + DockerClientCreateError + DockerImagesFetchError + DockerImagePullError + DockerMakeTmpDirError + DockerMountCreateError + DockerContainerCreateError + DockerContainerStartError + DockerContainerRunError + DockerContainerDoneStatusError + DockerChmodInitshError + DockerCredGetError + DockerDockerOptions + DockerImageDebugError +) + +type ErrorTypes string + +const ( + System ErrorTypes = "SYSTEM" + User ErrorTypes = "USER" + ThirdParty ErrorTypes = "THIRD_PARTY" + Plugin ErrorTypes = "PLUGIN" +) + +type ErrorEnum struct { + Type ErrorTypes + Code ErrorCode + Message string +} + +var ( + NoErrorEnum = &ErrorEnum{Type: "", Code: 0, Message: ""} + BuildProcessRunErrorEnum = &ErrorEnum{Type: User, Code: BuildProcessRunError, Message: "构建进程执行错误"} + RecoverRunFileErrorEnum = &ErrorEnum{Type: User, Code: RecoverRunFileError, Message: "恢复执行文件失败错误"} + LoseRunFileErrorEnum = &ErrorEnum{Type: User, Code: LoseRunFileError, Message: "丢失执行文件失败错误"} + MakeTmpDirErrorEnum = &ErrorEnum{Type: User, Code: MakeTmpDirError, Message: "创建临时目录失败"} + BuildProcessStartErrorEnum = &ErrorEnum{Type: User, Code: BuildProcessStartError, Message: "启动构建进程失败"} + PrepareScriptCreateErrorEnum = &ErrorEnum{Type: User, Code: PrepareScriptCreateError, Message: "预构建脚本创建失败"} +) + +func (t *PersistenceBuildInfo) ToFinish( + success bool, + message string, + errorEnum *ErrorEnum, +) *PersistenceBuildWithStatus { + if success || errorEnum == NoErrorEnum { + return &PersistenceBuildWithStatus{ + PersistenceBuildInfo: *t, + Success: success, + Message: message, + Error: nil, + } + } + return &PersistenceBuildWithStatus{ + PersistenceBuildInfo: *t, + Success: success, + Message: message, + Error: &Error{ + ErrorType: errorEnum.Type, + ErrorMessage: errorEnum.Message, + ErrorCode: errorEnum.Code, + }, + } +} diff --git a/src/agent/agent-slim/pkg/api/api.go b/src/agent/agent-slim/pkg/api/api.go new file mode 100644 index 00000000000..b9a34c62b03 --- /dev/null +++ b/src/agent/agent-slim/pkg/api/api.go @@ -0,0 +1,144 @@ +package api + +import ( + "bytes" + "context" + "encoding/json" + "fmt" + "io" + "net/http" + + "github.com/TencentBlueKing/bk-ci/agentslim/pkg/config" + "github.com/TencentBlueKing/bk-ci/agentslim/pkg/constant" + "github.com/pkg/errors" +) + +var devopsClient *devopsClientType + +type devopsClientType struct { + client *http.Client +} + +func init() { + devopsClient = &devopsClientType{ + client: http.DefaultClient, + } +} + +type PersistenceBuildInfo struct { + ProjectId string `json:"projectId"` + BuildId string `json:"buildId"` + VmSeqId string `json:"vmSeqId"` + Workspace string `json:"workspace"` + PipelineId string `json:"pipelineId"` + AgentId string `json:"agentId"` + SecretKey string `json:"secretKey"` + ExecuteCount *int `json:"executeCount"` + ContainerHashId string `json:"containerHashId"` +} + +func StartUp() (*PersistenceBuildInfo, error) { + url := fmt.Sprintf("%s/ms/dispatchDevcloud/api/buildAgent/agent/devcloud/startup", config.Config.GateWay) + + req, err := http.NewRequestWithContext(context.Background(), "GET", url, nil) + + req.Header = GetAuthHeaderMap() + resp, err := devopsClient.client.Do(req) + if err != nil { + return nil, errors.Wrap(err, "request StartUp failed") + } + defer resp.Body.Close() + + data, err := io.ReadAll(resp.Body) + if err != nil { + return nil, errors.Wrap(err, "read StartUp error") + } + result, err := IntoDevopsResult[PersistenceBuildInfo](data) + if err != nil { + return nil, errors.Wrap(err, "parse StartUp result error") + } + + return result, nil +} + +type PersistenceBuildWithStatus struct { + PersistenceBuildInfo + Success bool `json:"success"` + Message string `json:"message"` + Error *Error `json:"error"` +} + +type Error struct { + ErrorType ErrorTypes `json:"errorType"` + ErrorMessage string `json:"errorMessage"` + ErrorCode ErrorCode `json:"errorCode"` +} + +func WorkerBuildFinish(buildInfo *PersistenceBuildWithStatus) (bool, error) { + url := fmt.Sprintf("%s/ms/dispatchDevcloud/api/buildAgent/agent/devcloud/workBuildFinish", config.Config.GateWay) + + body, err := json.Marshal(buildInfo) + if err != nil { + return false, err + } + req, err := http.NewRequestWithContext(context.Background(), "POST", url, bytes.NewReader(body)) + + req.Header = GetAuthHeaderMap() + resp, err := devopsClient.client.Do(req) + if err != nil { + return false, errors.Wrap(err, "request WorkerBuildFinish failed") + } + defer resp.Body.Close() + + data, err := io.ReadAll(resp.Body) + if err != nil { + return false, errors.Wrap(err, "read WorkerBuildFinish result error") + } + result, err := IntoDevopsResult[bool](data) + if err != nil { + return false, errors.Wrap(err, "parse WorkerBuildFinish result error") + } + + return *result, nil +} + +// GetAuthHeaderMap 生成鉴权头部 +func GetAuthHeaderMap() http.Header { + authHeaderMap := make(http.Header) + authHeaderMap.Set(constant.AuthHeaderBuildType, constant.AuthHeaderBuildTypeValue) + authHeaderMap.Set(constant.AuthHeaderProjectId, config.Config.ProjectId) + authHeaderMap.Set(constant.AuthHeaderAgentId, config.Config.ContainerName) + return authHeaderMap +} + +type DevopsHttpResult struct { + Data any `json:"data"` + Status int `json:"status"` + Message string `json:"message"` +} + +// IntoDevopsResult 解析devops后台数据类型 +func IntoDevopsResult[T any](body []byte) (*T, error) { + res := &DevopsHttpResult{} + err := json.Unmarshal(body, res) + if err != nil { + return nil, errors.Wrap(err, "parse devops result error") + } + + if res.Status != 0 { + return nil, errors.Errorf("devops result status error %s", res.Message) + } + + data, err := json.Marshal(res.Data) + if err != nil { + return nil, errors.Wrap(err, "marshal davops result data error") + } + + result := new(T) + err = json.Unmarshal(data, result) + if err != nil { + return nil, errors.Wrap(err, "parse devops result data error") + } + + return result, err +} diff --git a/src/agent/agent-slim/pkg/config/config.go b/src/agent/agent-slim/pkg/config/config.go index 9845a847af8..b0272f98519 100644 --- a/src/agent/agent-slim/pkg/config/config.go +++ b/src/agent/agent-slim/pkg/config/config.go @@ -41,18 +41,42 @@ func InitConfig() error { StartUser: startUser.Username, } + // 补全一些默认值 if Config.WorkerUser == "" { Config.WorkerUser = startUser.Username } + // 最大运行数不能为 0 + if Config.MaxWorkerCount == 0 { + Config.MaxWorkerCount = 1 + } + return nil } type EnvConfig struct { - IsDebug bool `env:"DEVOPS_AGENTSLIM_ISDEBUG"` - LogPath string `env:"DEVOPS_AGENTSLIM_LOGPATH"` + // DEBUG 模式 + IsDebug bool `env:"DEVOPS_AGENTSLIM_ISDEBUG"` + // 日志路径 + LogPath string `env:"DEVOPS_AGENTSLIM_LOGPATH"` + // worker启动用户 WorkerUser string `env:"DEVOPS_AGENTSLIM_WORKER_USER"` - Lanuage string `env:"DEVOPS_AGENTSLIM_LANUAGE"` + // 国际化语言 + Language string `env:"DEVOPS_AGENTSLIM_LANUAGE"` + // 最大可执行 worker 数量 + MaxWorkerCount int `env:"DEVOPS_AGENTSLIM_MAX_WORKER_COUNT"` + // 后台网关 + GateWay string `env:"DEVOPS_AGENTSLIM_GATEWAY"` + // 后台仓库网关 + FileGateWay string `env:"DEVOPS_AGENTSLIM_FILEGATEWAY"` + ProjectId string `env:"DEVOPS_AGENTSLIM_PROJECT_ID"` + ContainerName string `env:"DEVOPS_AGENTSLIM_CONTAINER_NAME"` + // workerjar 路径 + WorkerPath string `env:"DEVOPS_AGENTSLIM_WORKER_PATH"` + // java 路径 + JavaPath string `env:"DEVOPS_AGENTSLIM_JAVA_PATH"` + // 是否根据系统切换 shell,false使用 /bin/bash + DetectShell bool `env:"DEVOPS_AGENTSLIM_WORKER_DETECTSHELL"` } // loadConfigFromEnv 从环境变量中加载相关配置 diff --git a/src/agent/agent-slim/pkg/constant/constant.go b/src/agent/agent-slim/pkg/constant/constant.go index c1c49b111d5..fe390dab294 100644 --- a/src/agent/agent-slim/pkg/constant/constant.go +++ b/src/agent/agent-slim/pkg/constant/constant.go @@ -1,5 +1,14 @@ package constant const ( + // 构建机默认国际化语言 DEFAULT_LANGUAGE_TYPE = "zh_CN" + // 构建机接取任务间隔时间 + BuildIntervalInSeconds = 5 + // api 鉴权的头信息 + AuthHeaderBuildType = "X-DEVOPS-BUILD-TYPE" // 构建类型 + AuthHeaderProjectId = "X-DEVOPS-PROJECT-ID" // 项目ID + AuthHeaderAgentId = "X-DEVOPS-AGENT-ID" // Agent ID + + AuthHeaderBuildTypeValue = "AGENT" ) diff --git a/src/agent/agent-slim/pkg/i18n/i18n.go b/src/agent/agent-slim/pkg/i18n/i18n.go index 76d88574a07..a2e22d7960d 100644 --- a/src/agent/agent-slim/pkg/i18n/i18n.go +++ b/src/agent/agent-slim/pkg/i18n/i18n.go @@ -109,7 +109,7 @@ func Localize(messageId string, templateData map[string]interface{}) string { // CheckLocalizer 检查并且切换国际化语言 func CheckLocalizer() { - newLocal := language.Make(config.Config.Lanuage) + newLocal := language.Make(config.Config.Language) // 先用读锁看一眼,如果一样就不换了 localizer.rwLock.RLock() diff --git a/src/agent/agent-slim/pkg/i18n/translation/translation.go b/src/agent/agent-slim/pkg/i18n/translation/translation.go index 252e5daa94c..51176d90214 100644 --- a/src/agent/agent-slim/pkg/i18n/translation/translation.go +++ b/src/agent/agent-slim/pkg/i18n/translation/translation.go @@ -8,6 +8,36 @@ import "github.com/nicksnyder/go-i18n/v2/i18n" var Translations map[string][]*i18n.Message = make(map[string][]*i18n.Message) func init() { - Translations["en-US"] = []*i18n.Message{} - Translations["zh-CN"] = []*i18n.Message{} + Translations["en-US"] = []*i18n.Message{ + { + ID: "BuildProcessErr", Other: "build process err, pid: {{.pid}}, err: {{.err}}."}, + { + ID: "BuilderProcessWasKilled", Other: "Builder process was killed, it may be killed by the operating system or other programs. You need to self-check and reduce the load and try again, or unzip agent.zip, restore the installation, restart the agent and try again."}, + { + ID: "CreateStartScriptFailed", Other: "create start script failed: {{.err}}"}, + { + ID: "CreateTmpDirectoryFailed", Other: "create tmp directory failed: {{.err}}"}, + { + ID: "ExecutableFileMissing", Other: "\nMissing {{.filename}}, `run install.sh` or `unzip agent.zip` in {{.dir}}."}, + { + ID: "StartWorkerProcessFailed", Other: "start worker process failed: {{.err}}"}, + { + ID: "WorkerExit", Other: "worker pid[%d] exit"}, + } + Translations["zh-CN"] = []*i18n.Message{ + { + ID: "BuildProcessErr", Other: "构建进程运行错误, 进程号: {{.pid}}, 错误: {{.err}}."}, + { + ID: "BuilderProcessWasKilled", Other: "业务构建进程异常退出,可能被操作系统或其他程序杀掉,需自查并降低负载后重试,或解压 agent.zip 还原安装后重启agent再重试。"}, + { + ID: "CreateStartScriptFailed", Other: "准备构建脚本生成失败: {{.err}}"}, + { + ID: "CreateTmpDirectoryFailed", Other: "创建临时目录失败: {{.err}}"}, + { + ID: "ExecutableFileMissing", Other: "\n{{.filename}} 执行文件丢失,请到 {{.dir}} 目录下执行 install.sh 或者重新解压 agent.zip 还原安装目录"}, + { + ID: "StartWorkerProcessFailed", Other: "启动构建进程失败: {{.err}}"}, + { + ID: "WorkerExit", Other: "构建进程 {{.pid}} 退出"}, + } } diff --git a/src/agent/agent-slim/pkg/job/build.go b/src/agent/agent-slim/pkg/job/build.go new file mode 100644 index 00000000000..22d72b6bc17 --- /dev/null +++ b/src/agent/agent-slim/pkg/job/build.go @@ -0,0 +1,285 @@ +package job + +import ( + "encoding/base64" + "encoding/json" + "errors" + "fmt" + "os" + "os/exec" + "os/user" + "strconv" + "strings" + "syscall" + "time" + + "github.com/TencentBlueKing/bk-ci/agentcommon/logs" + "github.com/TencentBlueKing/bk-ci/agentcommon/utils/fileutil" + "github.com/TencentBlueKing/bk-ci/agentslim/pkg/api" + "github.com/TencentBlueKing/bk-ci/agentslim/pkg/config" + "github.com/TencentBlueKing/bk-ci/agentslim/pkg/constant" + "github.com/TencentBlueKing/bk-ci/agentslim/pkg/i18n" +) + +// DoPollAndBuild 获取构建,如果达到最大并发或者是处于升级中,则不执行 +func DoPollAndBuild() { + for { + if normalCanRun := checkWorkerCount(); !normalCanRun { + continue + } + + // 接构建任务 + buildInfo, err := api.StartUp() + if err != nil { + logs.WithError(err).Error("get build failed, retry") + continue + } + + if buildInfo == nil { + logs.Info("no build to run, skip") + continue + } + + logs.Infof("build info %v", buildInfo) + + err = runBuild(buildInfo) + if err != nil { + logs.WithError(err).Error("start build failed") + } + + time.Sleep(constant.BuildIntervalInSeconds * time.Second) + } +} + +// runBuild 启动构建 +func runBuild(buildInfo *api.PersistenceBuildInfo) error { + // 需要删除的文件 + toDelTmpFiles := make([]string, 0) + + workDir := config.Config.WorkDir + agentJarPath := config.Config.WorkerPath + if !fileutil.Exists(agentJarPath) { + errorMsg := i18n.Localize("ExecutableFileMissing", map[string]interface{}{"filename": agentJarPath, "dir": workDir}) + logs.Error(errorMsg) + workerBuildFinish(buildInfo.ToFinish(false, errorMsg, api.LoseRunFileErrorEnum), toDelTmpFiles) + } + + runUser := config.Config.WorkerUser + + goEnv := map[string]string{ + "DEVOPS_AGENT_VERSION": config.AgentVersion, + "DEVOPS_PROJECT_ID": buildInfo.ProjectId, + "DEVOPS_BUILD_ID": buildInfo.BuildId, + "DEVOPS_VM_SEQ_ID": buildInfo.VmSeqId, + "DEVOPS_FILE_GATEWAY": config.Config.FileGateWay, + "DEVOPS_GATEWAY": config.Config.GateWay, + "BK_CI_LOCALE_LANGUAGE": config.Config.Language, + } + + // 定义临时目录 + tmpDir, tmpMkErr := mkBuildTmpDir() + if tmpMkErr != nil { + errMsg := i18n.Localize("CreateTmpDirectoryFailed", map[string]interface{}{"err": tmpMkErr.Error()}) + logs.Error(errMsg) + workerBuildFinish(buildInfo.ToFinish(false, errMsg, api.MakeTmpDirErrorEnum), toDelTmpFiles) + return tmpMkErr + } + + startScriptFile, err := writeStartBuildAgentScript(buildInfo, tmpDir, toDelTmpFiles) + if err != nil { + errMsg := i18n.Localize("CreateStartScriptFailed", map[string]interface{}{"err": err.Error()}) + logs.Error(errMsg) + workerBuildFinish(buildInfo.ToFinish(false, errMsg, api.PrepareScriptCreateErrorEnum), toDelTmpFiles) + return err + } + pid, err := startProcess(startScriptFile, []string{}, workDir, goEnv, runUser) + if err != nil { + errMsg := i18n.Localize("StartWorkerProcessFailed", map[string]interface{}{"err": err.Error()}) + logs.Error(errMsg) + workerBuildFinish(buildInfo.ToFinish(false, errMsg, api.BuildProcessStartErrorEnum), toDelTmpFiles) + return err + } + GBuildManager.AddBuild(pid, buildInfo, toDelTmpFiles) + logs.Info(fmt.Sprintf("[%s]|Job#_%s|Build started, pid:%d ", buildInfo.BuildId, buildInfo.VmSeqId, pid)) + + return nil +} + +func writeStartBuildAgentScript(buildInfo *api.PersistenceBuildInfo, tmpDir string, toDelTmpFiles []string) (string, error) { + logs.Info("write start build agent script to file") + // 套娃,多加一层脚本,使用exec新起进程,这样才会读取 .bash_profile + prepareScriptFile := fmt.Sprintf( + "%s/devops_agent_prepare_start_%s_%s_%s.sh", + config.Config.WorkDir, + buildInfo.ProjectId, + buildInfo.BuildId, + buildInfo.VmSeqId, + ) + scriptFile := fmt.Sprintf( + "%s/devops_agent_start_%s_%s_%s.sh", + config.Config.WorkDir, + buildInfo.ProjectId, + buildInfo.BuildId, + buildInfo.VmSeqId, + ) + + errorMsgFile := getWorkerErrorMsgFile(buildInfo.BuildId, buildInfo.VmSeqId) + toDelTmpFiles = append(toDelTmpFiles, scriptFile, prepareScriptFile, errorMsgFile) + + logs.Info("start agent script: ", scriptFile) + agentLogPrefix := fmt.Sprintf("%s_%s_agent", buildInfo.BuildId, buildInfo.VmSeqId) + lines := []string{ + "#!" + getCurrentShell(), + fmt.Sprintf("cd %s", config.Config.WorkDir), + fmt.Sprintf("%s -Ddevops.slave.agent.start.file=%s -Ddevops.slave.agent.prepare.start.file=%s "+ + "-Ddevops.agent.error.file=%s "+ + "-Dbuild.type=AGENT -DAGENT_LOG_PREFIX=%s -Xmx2g -Djava.io.tmpdir=%s -jar %s %s", + config.Config.JavaPath, scriptFile, prepareScriptFile, + errorMsgFile, + agentLogPrefix, tmpDir, config.Config.WorkerPath, encodedBuildInfo(buildInfo)), + } + scriptContent := strings.Join(lines, "\n") + + err := os.WriteFile(scriptFile, []byte(scriptContent), os.ModePerm) + defer func() { + _ = os.Chmod(scriptFile, os.ModePerm) + _ = os.Chmod(prepareScriptFile, os.ModePerm) + }() + if err != nil { + return "", err + } else { + prepareScriptContent := strings.Join(getShellLines(scriptFile), "\n") + err := os.WriteFile(prepareScriptFile, []byte(prepareScriptContent), os.ModePerm) + if err != nil { + return "", err + } else { + return prepareScriptFile, nil + } + } +} + +func getCurrentShell() (shell string) { + if config.Config.DetectShell { + shell = os.Getenv("SHELL") + if strings.TrimSpace(shell) == "" { + shell = "/bin/bash" + } + } else { + shell = "/bin/bash" + } + logs.Debug("current shell: ", shell) + return +} + +func encodedBuildInfo(buildInfo *api.PersistenceBuildInfo) string { + strBuildInfo, _ := json.Marshal(buildInfo) + logs.Debug("buildInfo: ", string(strBuildInfo)) + codedBuildInfo := base64.StdEncoding.EncodeToString(strBuildInfo) + logs.Debug("base64: ", codedBuildInfo) + return codedBuildInfo +} + +// getShellLines 根据不同的shell的参数要求,这里可能需要不同的参数或者参数顺序 +func getShellLines(scriptFile string) (newLines []string) { + shell := getCurrentShell() + switch shell { + case "/bin/tcsh": + newLines = []string{ + "#!" + shell, + "exec " + shell + " " + scriptFile + " -l", + } + default: + newLines = []string{ + "#!" + shell, + "exec " + shell + " -l " + scriptFile, + } + } + return newLines +} + +func startProcess(command string, args []string, workDir string, envMap map[string]string, runUser string) (int, error) { + cmd := exec.Command(command) + + if len(args) > 0 { + cmd.Args = append(cmd.Args, args...) + } + + if workDir != "" { + cmd.Dir = workDir + } + + cmd.Env = os.Environ() + if envMap != nil { + for k, v := range envMap { + cmd.Env = append(cmd.Env, fmt.Sprintf("%s=%s", k, v)) + } + } + + err := setUser(cmd, runUser) + if err != nil { + logs.Error("set user failed: ", err.Error()) + return -1, errors.New( + fmt.Sprintf("%s, Please check [devops.slave.user] in the {agent_dir}/.agent.properties", err.Error())) + } + + logs.Info("cmd.Path: ", cmd.Path) + logs.Info("cmd.Args: ", cmd.Args) + logs.Info("cmd.workDir: ", cmd.Dir) + logs.Info("runUser: ", runUser) + + err = cmd.Start() + if err != nil { + return -1, err + } + return cmd.Process.Pid, nil +} + +const ( + envHome = "HOME" + envUser = "USER" + envLogName = "LOGNAME" +) + +func setUser(cmd *exec.Cmd, runUser string) error { + + if len(runUser) == 0 { // 传空则直接返回 + return nil + } + // 解决重启构建机后,Linux的 /etc/rc.local 自动启动的agent,读取到HOME等系统变量为空的问题 + if runUser == config.Config.StartUser { + envHomeFound := false + envUserFound := false + envLogNameFound := false + for i := range cmd.Env { + splits := strings.Split(cmd.Env[i], "=") + if splits[0] == envHome && len(splits[1]) > 0 { + envHomeFound = true + } else if splits[0] == envUser && len(splits[1]) > 0 { + envUserFound = true + } else if splits[0] == envLogName && len(splits[1]) > 0 { + envLogNameFound = true + } + } + if envHomeFound && envUserFound && envLogNameFound { + return nil + } + } + + logs.Info("set user(linux or darwin): ", runUser) + + rUser, err := user.Lookup(runUser) + if err != nil { + logs.Error("user lookup failed, user: -", runUser, "-, error: ", err.Error()) + return errors.New("user lookup failed, user: " + runUser) + } + uid, _ := strconv.Atoi(rUser.Uid) + gid, _ := strconv.Atoi(rUser.Gid) + cmd.SysProcAttr = &syscall.SysProcAttr{} + cmd.SysProcAttr.Credential = &syscall.Credential{Uid: uint32(uid), Gid: uint32(gid)} + + cmd.Env = append(cmd.Env, fmt.Sprintf("%s=%s", envHome, rUser.HomeDir)) + cmd.Env = append(cmd.Env, fmt.Sprintf("%s=%s", envUser, runUser)) + cmd.Env = append(cmd.Env, fmt.Sprintf("%s=%s", envLogName, runUser)) + + return nil +} diff --git a/src/agent/agent-slim/pkg/job/build_manager.go b/src/agent/agent-slim/pkg/job/build_manager.go new file mode 100644 index 00000000000..d5a6159c163 --- /dev/null +++ b/src/agent/agent-slim/pkg/job/build_manager.go @@ -0,0 +1,103 @@ +package job + +import ( + "encoding/json" + "os" + "sync" + + "github.com/TencentBlueKing/bk-ci/agentcommon/logs" + "github.com/TencentBlueKing/bk-ci/agentcommon/utils/fileutil" + "github.com/TencentBlueKing/bk-ci/agentslim/pkg/api" + "github.com/TencentBlueKing/bk-ci/agentslim/pkg/i18n" +) + +// buildManager 二进制构建对象管理 +type buildManager struct { + lock *sync.RWMutex + instances map[int]*buildData +} + +type buildData struct { + info *api.PersistenceBuildInfo + toDelFiles []string +} + +var GBuildManager *buildManager + +func init() { + GBuildManager = new(buildManager) +} + +func (b *buildManager) GetBuildCount() int { + b.lock.RLock() + defer b.lock.RUnlock() + return len(b.instances) +} + +func (b *buildManager) AddBuild(processId int, buildInfo *api.PersistenceBuildInfo, toDelFiles []string) { + b.lock.Lock() + defer b.lock.Unlock() + bytes, _ := json.Marshal(buildInfo) + logs.Infof("add build: processId: %d , buildInfo: %s", processId, string(bytes)) + b.instances[processId] = &buildData{ + info: buildInfo, + toDelFiles: toDelFiles, + } + + // #5806 预先录入异常信息,在构建进程正常结束时清理掉。如果没清理掉,则说明进程非正常退出,可能被OS或人为杀死 + errorMsgFile := getWorkerErrorMsgFile(buildInfo.BuildId, buildInfo.VmSeqId) + _ = fileutil.WriteString(errorMsgFile, i18n.Localize("BuilderProcessWasKilled", nil)) + _ = os.Chmod(errorMsgFile, os.ModePerm) + go b.waitProcessDone(processId) +} + +func (b *buildManager) GetBuild(processId int) *buildData { + b.lock.RLock() + defer b.lock.RUnlock() + return b.instances[processId] +} + +func (b *buildManager) RemoveBuild(processId int) { + b.lock.Lock() + defer b.lock.Unlock() + delete(b.instances, processId) +} + +func (b *buildManager) waitProcessDone(processId int) { + process, err := os.FindProcess(processId) + data := b.GetBuild(processId) + info := data.info + if err != nil { + errMsg := i18n.Localize("BuildProcessErr", map[string]interface{}{"pid": processId, "err": err.Error()}) + logs.Warn(errMsg) + b.RemoveBuild(processId) + workerBuildFinish(info.ToFinish(false, errMsg, api.BuildProcessRunErrorEnum), data.toDelFiles) + return + } + + state, err := process.Wait() + // #5806 从b-xxxx_build_msg.log 读取错误信息,此信息可由worker-agent.jar写入,用于当异常时能够将信息上报给服务器 + msgFile := getWorkerErrorMsgFile(info.BuildId, info.VmSeqId) + msg, _ := fileutil.GetString(msgFile) + logs.Infof("build[%s] pid[%d] finish, state=%v err=%v, msg=%s", info.BuildId, processId, state, err, msg) + + if err != nil { + if len(msg) == 0 { + msg = err.Error() + } + } + success := true + if len(msg) == 0 { + msg = i18n.Localize("WorkerExit", map[string]interface{}{"pid": processId}) + } else { + success = false + } + + buildInfo := info + b.RemoveBuild(processId) + if success { + workerBuildFinish(buildInfo.ToFinish(success, msg, api.NoErrorEnum), data.toDelFiles) + } else { + workerBuildFinish(buildInfo.ToFinish(success, msg, api.BuildProcessRunErrorEnum), data.toDelFiles) + } +} diff --git a/src/agent/agent-slim/pkg/job/common.go b/src/agent/agent-slim/pkg/job/common.go new file mode 100644 index 00000000000..a8506d34d62 --- /dev/null +++ b/src/agent/agent-slim/pkg/job/common.go @@ -0,0 +1,141 @@ +package job + +import ( + "fmt" + "io/fs" + "os" + "strings" + "time" + + "github.com/TencentBlueKing/bk-ci/agentcommon/logs" + "github.com/TencentBlueKing/bk-ci/agentslim/pkg/api" + "github.com/TencentBlueKing/bk-ci/agentslim/pkg/config" +) + +const ( + errorMsgFileSuffix = "build_msg.log" + prepareStartScriptFilePrefix = "devops_agent_prepare_start" + prepareStartScriptFileSuffix = ".sh" + startScriptFilePrefix = "devops_agent_start" + startScriptFileSuffix = ".sh" +) + +// checkWorkerCount 检查当前运行的最大任务数 +func checkWorkerCount() bool { + instanceCount := GBuildManager.GetBuildCount() + if config.Config.MaxWorkerCount != 0 && instanceCount >= config.Config.MaxWorkerCount { + logs.Infof("worker count exceed, wait worker done, MaxWorkerCount: %d, instance count: %d", config.Config.MaxWorkerCount, instanceCount) + return false + } + + return true +} + +// getWorkerErrorMsgFile 获取worker执行错误信息的日志文件 +func getWorkerErrorMsgFile(buildId, vmSeqId string) string { + return fmt.Sprintf("%s/build_tmp/%s_%s_%s", config.Config.WorkDir, buildId, vmSeqId, errorMsgFileSuffix) +} + +// getUnixWorkerPrepareStartScriptFile 获取unix系统,主要是darwin和linux的prepare start script文件 +func getUnixWorkerPrepareStartScriptFile(projectId, buildId, vmSeqId string) string { + return fmt.Sprintf("%s/%s_%s_%s_%s%s", config.Config.WorkDir, prepareStartScriptFilePrefix, projectId, buildId, vmSeqId, prepareStartScriptFileSuffix) +} + +// getUnixWorkerStartScriptFile 获取unix系统,主要是darwin和linux的prepare start script文件 +func getUnixWorkerStartScriptFile(projectId, buildId, vmSeqId string) string { + return fmt.Sprintf("%s/%s_%s_%s_%s%s", config.Config.WorkDir, startScriptFilePrefix, projectId, buildId, vmSeqId, startScriptFileSuffix) +} + +func workerBuildFinish(buildInfo *api.PersistenceBuildWithStatus, toDelFiles []string) { + if buildInfo == nil { + logs.Warn("buildInfo not exist") + return + } + + // 清理构建过程生成的文件 + if len(toDelFiles) > 0 { + for _, filePath := range toDelFiles { + e := os.Remove(filePath) + logs.Info(fmt.Sprintf("build[%s] finish, delete:%s, err:%s", buildInfo.BuildId, filePath, e)) + } + } + + // Agent build_tmp目录清理 + go checkAndDeleteBuildTmpFile() + + if buildInfo.Success { + time.Sleep(8 * time.Second) + } + result, err := api.WorkerBuildFinish(buildInfo) + if err != nil { + logs.Error("send worker build finish failed: ", err.Error()) + } + if !result { + logs.Error("worker build finish false") + } + logs.Info("workerBuildFinish done") +} + +// mkBuildTmpDir 创建构建提供的临时目录 +// 对于指定构建帐号与当前agent运行帐号不同时,常用是用root安装运行agent,但配置文件中devops.slave.user指定其他普通帐号 +// 需要设置最大权限,以便任何runUser能够使用, 不考虑用chown切换目录属主,会导致之前的运行中所产生的子目录/文件的清理权限问题。 +func mkBuildTmpDir() (string, error) { + tmpDir := fmt.Sprintf("%s/build_tmp", config.Config.WorkDir) + err := os.MkdirAll(tmpDir, os.ModePerm) + err2 := os.Chmod(tmpDir, os.ModePerm) + if err == nil && err2 != nil { + err = err2 + } + return tmpDir, err +} + +// checkAndDeleteBuildTmpFile 删除可能因为进程中断导致的没有被删除的构建过程临时文件 +// Job最长运行时间为7天,所以这里通过检查超过7天最后修改时间的文件 +func checkAndDeleteBuildTmpFile() { + // win只用检查build_tmp目录 + workDir := config.Config.WorkDir + dir := workDir + "/build_tmp" + fss, err := os.ReadDir(dir) + if err != nil { + logs.Error("checkAndDeleteBuildTmpFile|read build_tmp dir error ", err) + return + } + for _, f := range fss { + if f.IsDir() { + continue + } + // build_tmp 目录下的文件超过7天都清除掉 + removeFileThan7Days(dir, f) + } + + // 还有prepare 和start文件 + fss, err = os.ReadDir(workDir) + if err != nil { + logs.Error("checkAndDeleteBuildTmpFile|read worker dir error ", err) + return + } + for _, f := range fss { + if f.IsDir() { + continue + } + if !(strings.HasPrefix(f.Name(), startScriptFilePrefix) && strings.HasSuffix(f.Name(), startScriptFileSuffix)) && + !(strings.HasPrefix(f.Name(), prepareStartScriptFilePrefix) && strings.HasSuffix(f.Name(), prepareStartScriptFileSuffix)) { + continue + } + removeFileThan7Days(workDir, f) + } +} + +func removeFileThan7Days(dir string, f fs.DirEntry) { + info, err := f.Info() + if err != nil { + logs.Error("removeFileThan7Days|read file info error ", "file: ", f.Name(), " error: ", err) + return + } + if (time.Since(info.ModTime())) > 7*24*time.Hour { + err = os.Remove(dir + "/" + f.Name()) + if err != nil { + logs.Error("removeFileThan7Days|remove file error ", "file: ", f.Name(), " error: ", err) + } + } +} diff --git a/src/agent/agent-slim/pkg/slim.go b/src/agent/agent-slim/pkg/slim.go index aa5e4a58fbc..7b285fbbb02 100644 --- a/src/agent/agent-slim/pkg/slim.go +++ b/src/agent/agent-slim/pkg/slim.go @@ -1,5 +1,8 @@ package pkg -func Run() { +import "github.com/TencentBlueKing/bk-ci/agentslim/pkg/i18n" +func Run() { + // 初始化国际化 + i18n.InitAgentI18n() } diff --git a/src/agent/agent/src/cmd/daemon/main.go b/src/agent/agent/src/cmd/daemon/main.go index 3be4e9c1007..a1d62ad22ee 100644 --- a/src/agent/agent/src/cmd/daemon/main.go +++ b/src/agent/agent/src/cmd/daemon/main.go @@ -42,8 +42,8 @@ import ( "github.com/TencentBlueKing/bk-ci/agent/src/pkg/config" "github.com/TencentBlueKing/bk-ci/agent/src/pkg/upgrade" - "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/fileutil" "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/systemutil" + "github.com/TencentBlueKing/bk-ci/agentcommon/utils/fileutil" "github.com/gofrs/flock" ) diff --git a/src/agent/agent/src/cmd/daemon/main_win.go b/src/agent/agent/src/cmd/daemon/main_win.go index 834e1d13847..282dbc46f50 100644 --- a/src/agent/agent/src/cmd/daemon/main_win.go +++ b/src/agent/agent/src/cmd/daemon/main_win.go @@ -41,8 +41,8 @@ import ( "github.com/TencentBlueKing/bk-ci/agentcommon/logs" "github.com/TencentBlueKing/bk-ci/agent/src/pkg/config" - "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/fileutil" "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/systemutil" + "github.com/TencentBlueKing/bk-ci/agentcommon/utils/fileutil" "github.com/kardianos/service" ) diff --git a/src/agent/agent/src/pkg/collector/collector.go b/src/agent/agent/src/pkg/collector/collector.go index f1a8fdaad55..0caf71911d0 100644 --- a/src/agent/agent/src/pkg/collector/collector.go +++ b/src/agent/agent/src/pkg/collector/collector.go @@ -36,7 +36,7 @@ import ( "time" telegrafconf "github.com/TencentBlueKing/bk-ci/agent/src/pkg/collector/telegrafConf" - "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/fileutil" + "github.com/TencentBlueKing/bk-ci/agentcommon/utils/fileutil" "github.com/pkg/errors" "github.com/influxdata/telegraf/logger" diff --git a/src/agent/agent/src/pkg/config/config.go b/src/agent/agent/src/pkg/config/config.go index 4949e698ae2..02a90b0225b 100644 --- a/src/agent/agent/src/pkg/config/config.go +++ b/src/agent/agent/src/pkg/config/config.go @@ -48,7 +48,7 @@ import ( "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util" "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/command" - "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/fileutil" + "github.com/TencentBlueKing/bk-ci/agentcommon/utils/fileutil" "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/systemutil" ) diff --git a/src/agent/agent/src/pkg/installer/installer.go b/src/agent/agent/src/pkg/installer/installer.go index 2c19ca0d00c..d27b0e58803 100644 --- a/src/agent/agent/src/pkg/installer/installer.go +++ b/src/agent/agent/src/pkg/installer/installer.go @@ -36,8 +36,8 @@ import ( "github.com/TencentBlueKing/bk-ci/agent/src/pkg/api" "github.com/TencentBlueKing/bk-ci/agent/src/pkg/config" "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/command" - "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/fileutil" "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/systemutil" + "github.com/TencentBlueKing/bk-ci/agentcommon/utils/fileutil" "github.com/gofrs/flock" ) diff --git a/src/agent/agent/src/pkg/job/build.go b/src/agent/agent/src/pkg/job/build.go index 15ea55b3bbd..f99d390c11e 100644 --- a/src/agent/agent/src/pkg/job/build.go +++ b/src/agent/agent/src/pkg/job/build.go @@ -45,9 +45,9 @@ import ( "github.com/TencentBlueKing/bk-ci/agent/src/pkg/i18n" "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util" "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/command" - "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/fileutil" "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/httputil" "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/systemutil" + "github.com/TencentBlueKing/bk-ci/agentcommon/utils/fileutil" ) type BuildTotalManagerType struct { diff --git a/src/agent/agent/src/pkg/job/build_manager.go b/src/agent/agent/src/pkg/job/build_manager.go index d429cedf7f3..f421cc2c702 100644 --- a/src/agent/agent/src/pkg/job/build_manager.go +++ b/src/agent/agent/src/pkg/job/build_manager.go @@ -37,8 +37,8 @@ import ( "github.com/TencentBlueKing/bk-ci/agent/src/pkg/api" "github.com/TencentBlueKing/bk-ci/agent/src/pkg/i18n" - "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/fileutil" "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/systemutil" + "github.com/TencentBlueKing/bk-ci/agentcommon/utils/fileutil" ) // buildManager 二进制构建对象管理 diff --git a/src/agent/agent/src/pkg/upgrade/operation.go b/src/agent/agent/src/pkg/upgrade/operation.go index 6f140a1d38a..531f6ff280b 100644 --- a/src/agent/agent/src/pkg/upgrade/operation.go +++ b/src/agent/agent/src/pkg/upgrade/operation.go @@ -42,8 +42,8 @@ import ( "github.com/TencentBlueKing/bk-ci/agent/src/pkg/config" "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/command" - "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/fileutil" "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/systemutil" + "github.com/TencentBlueKing/bk-ci/agentcommon/utils/fileutil" ) const DAEMON_EXIT_CODE = 88 diff --git a/src/agent/agent/src/pkg/upgrade/upgrade.go b/src/agent/agent/src/pkg/upgrade/upgrade.go index dd7e3ba3979..d87b8b861e6 100644 --- a/src/agent/agent/src/pkg/upgrade/upgrade.go +++ b/src/agent/agent/src/pkg/upgrade/upgrade.go @@ -44,8 +44,8 @@ import ( "github.com/TencentBlueKing/bk-ci/agent/src/pkg/api" "github.com/TencentBlueKing/bk-ci/agent/src/pkg/config" - "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/fileutil" "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/systemutil" + "github.com/TencentBlueKing/bk-ci/agentcommon/utils/fileutil" ) var JdkVersion = &JdkVersionType{} diff --git a/src/agent/agent/src/pkg/upgrader/upgrader.go b/src/agent/agent/src/pkg/upgrader/upgrader.go index b5b25d2eb87..0756b2e9739 100644 --- a/src/agent/agent/src/pkg/upgrader/upgrader.go +++ b/src/agent/agent/src/pkg/upgrader/upgrader.go @@ -38,8 +38,8 @@ import ( "github.com/TencentBlueKing/bk-ci/agent/src/pkg/config" "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/command" - "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/fileutil" "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/systemutil" + "github.com/TencentBlueKing/bk-ci/agentcommon/utils/fileutil" "github.com/gofrs/flock" ) diff --git a/src/agent/agent/src/pkg/util/httputil/devops.go b/src/agent/agent/src/pkg/util/httputil/devops.go index 2dbdf243167..e072f334c17 100644 --- a/src/agent/agent/src/pkg/util/httputil/devops.go +++ b/src/agent/agent/src/pkg/util/httputil/devops.go @@ -40,8 +40,8 @@ import ( "github.com/TencentBlueKing/bk-ci/agentcommon/logs" "github.com/TencentBlueKing/bk-ci/agent/src/pkg/config" - "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/fileutil" "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/systemutil" + "github.com/TencentBlueKing/bk-ci/agentcommon/utils/fileutil" ) type DevopsResult struct { diff --git a/src/agent/agent/src/pkg/util/systemutil/systemutil.go b/src/agent/agent/src/pkg/util/systemutil/systemutil.go index 92d5766f8ce..be8f414e2f5 100644 --- a/src/agent/agent/src/pkg/util/systemutil/systemutil.go +++ b/src/agent/agent/src/pkg/util/systemutil/systemutil.go @@ -40,7 +40,7 @@ import ( "github.com/TencentBlueKing/bk-ci/agentcommon/logs" "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util" - "github.com/TencentBlueKing/bk-ci/agent/src/pkg/util/fileutil" + "github.com/TencentBlueKing/bk-ci/agentcommon/utils/fileutil" "github.com/gofrs/flock" ) diff --git a/src/agent/common/Makefile b/src/agent/common/Makefile new file mode 100644 index 00000000000..e6967371d60 --- /dev/null +++ b/src/agent/common/Makefile @@ -0,0 +1,7 @@ +test: test-unit + +.PHONY: test-unit +test-unit: + @echo + @echo "==> Running unit tests <==" + GO111MODULE=on go test -tags=${BUILD_OUT_TAG} -run . ./... \ No newline at end of file diff --git a/src/agent/agent/src/pkg/util/fileutil/fileutil.go b/src/agent/common/utils/fileutil/fileutil.go similarity index 97% rename from src/agent/agent/src/pkg/util/fileutil/fileutil.go rename to src/agent/common/utils/fileutil/fileutil.go index 6cf8efc4d14..1de9fbdf827 100644 --- a/src/agent/agent/src/pkg/util/fileutil/fileutil.go +++ b/src/agent/common/utils/fileutil/fileutil.go @@ -36,8 +36,6 @@ import ( "os" "path/filepath" "strconv" - - "github.com/TencentBlueKing/bk-ci/agentcommon/logs" ) func Exists(file string) bool { @@ -74,8 +72,6 @@ func GetFileMd5(file string) (string, error) { } func CopyFile(src string, dst string, overwrite bool) (written int64, err error) { - logs.Info("copy file from : " + src + ", to: " + dst) - srcStat, err := os.Stat(src) if err != nil { return 0, err diff --git a/src/agent/agent/src/pkg/util/fileutil/fileutil_test.go b/src/agent/common/utils/fileutil/fileutil_test.go similarity index 100% rename from src/agent/agent/src/pkg/util/fileutil/fileutil_test.go rename to src/agent/common/utils/fileutil/fileutil_test.go diff --git a/src/agent/agent/src/pkg/util/fileutil/testdata/existsFile b/src/agent/common/utils/fileutil/testdata/existsFile similarity index 100% rename from src/agent/agent/src/pkg/util/fileutil/testdata/existsFile rename to src/agent/common/utils/fileutil/testdata/existsFile diff --git a/src/agent/agent/src/pkg/util/fileutil/testdata/md5File b/src/agent/common/utils/fileutil/testdata/md5File similarity index 100% rename from src/agent/agent/src/pkg/util/fileutil/testdata/md5File rename to src/agent/common/utils/fileutil/testdata/md5File diff --git a/src/agent/agent/src/pkg/util/fileutil/testdata/stringAndPidFile b/src/agent/common/utils/fileutil/testdata/stringAndPidFile similarity index 100% rename from src/agent/agent/src/pkg/util/fileutil/testdata/stringAndPidFile rename to src/agent/common/utils/fileutil/testdata/stringAndPidFile diff --git a/support-files/i18n/agent-slim/en_US.json b/support-files/i18n/agent-slim/en_US.json index 9e26dfeeb6e..29c63c78713 100644 --- a/support-files/i18n/agent-slim/en_US.json +++ b/support-files/i18n/agent-slim/en_US.json @@ -1 +1,23 @@ -{} \ No newline at end of file +{ + "BuilderProcessWasKilled": { + "other": "Builder process was killed, it may be killed by the operating system or other programs. You need to self-check and reduce the load and try again, or unzip agent.zip, restore the installation, restart the agent and try again." + }, + "BuildProcessErr": { + "other": "build process err, pid: {{.pid}}, err: {{.err}}." + }, + "WorkerExit": { + "other": "worker pid[%d] exit" + }, + "ExecutableFileMissing": { + "other": "\nMissing {{.filename}}, `run install.sh` or `unzip agent.zip` in {{.dir}}." + }, + "CreateTmpDirectoryFailed": { + "other": "create tmp directory failed: {{.err}}" + }, + "CreateStartScriptFailed": { + "other": "create start script failed: {{.err}}" + }, + "StartWorkerProcessFailed": { + "other": "start worker process failed: {{.err}}" + } +} \ No newline at end of file diff --git a/support-files/i18n/agent-slim/zh_CN.json b/support-files/i18n/agent-slim/zh_CN.json index 9e26dfeeb6e..a5fabf1dd84 100644 --- a/support-files/i18n/agent-slim/zh_CN.json +++ b/support-files/i18n/agent-slim/zh_CN.json @@ -1 +1,23 @@ -{} \ No newline at end of file +{ + "BuilderProcessWasKilled": { + "other": "业务构建进程异常退出,可能被操作系统或其他程序杀掉,需自查并降低负载后重试,或解压 agent.zip 还原安装后重启agent再重试。" + }, + "BuildProcessErr": { + "other": "构建进程运行错误, 进程号: {{.pid}}, 错误: {{.err}}." + }, + "WorkerExit": { + "other": "构建进程 {{.pid}} 退出" + }, + "ExecutableFileMissing": { + "other": "\n{{.filename}} 执行文件丢失,请到 {{.dir}} 目录下执行 install.sh 或者重新解压 agent.zip 还原安装目录" + }, + "CreateTmpDirectoryFailed": { + "other": "创建临时目录失败: {{.err}}" + }, + "CreateStartScriptFailed": { + "other": "准备构建脚本生成失败: {{.err}}" + }, + "StartWorkerProcessFailed": { + "other": "启动构建进程失败: {{.err}}" + } +} \ No newline at end of file From d8d073292f0ffba3fd73a410544f3a5fc550ea57 Mon Sep 17 00:00:00 2001 From: ruotiantang Date: Wed, 9 Aug 2023 14:32:53 +0800 Subject: [PATCH 04/10] =?UTF-8?q?feat:=20=E5=85=AC=E5=85=B1=E6=9E=84?= =?UTF-8?q?=E5=BB=BA=E6=9C=BA=E6=94=AF=E6=8C=81=E6=8C=81=E4=B9=85=E5=8C=96?= =?UTF-8?q?=E6=9E=84=E5=BB=BA=E5=AE=B9=E5=99=A8=E8=B0=83=E5=BA=A6=20#9269?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/agent/agent-slim/pkg/api/ErrorEnum.go | 54 ++++++++----------- .../pkg/i18n/translation/translation.go | 20 +++++++ support-files/i18n/agent-slim/en_US.json | 15 ++++++ support-files/i18n/agent-slim/zh_CN.json | 15 ++++++ 4 files changed, 72 insertions(+), 32 deletions(-) diff --git a/src/agent/agent-slim/pkg/api/ErrorEnum.go b/src/agent/agent-slim/pkg/api/ErrorEnum.go index d0fece98207..54a1253af38 100644 --- a/src/agent/agent-slim/pkg/api/ErrorEnum.go +++ b/src/agent/agent-slim/pkg/api/ErrorEnum.go @@ -1,5 +1,7 @@ package api +import "github.com/TencentBlueKing/bk-ci/agentslim/pkg/i18n" + type ErrorCode int const ( @@ -9,22 +11,6 @@ const ( MakeTmpDirError BuildProcessStartError PrepareScriptCreateError - DockerOsError - DockerRunShInitError - DockerRunShStatError - DockerClientCreateError - DockerImagesFetchError - DockerImagePullError - DockerMakeTmpDirError - DockerMountCreateError - DockerContainerCreateError - DockerContainerStartError - DockerContainerRunError - DockerContainerDoneStatusError - DockerChmodInitshError - DockerCredGetError - DockerDockerOptions - DockerImageDebugError ) type ErrorTypes string @@ -37,19 +23,19 @@ const ( ) type ErrorEnum struct { - Type ErrorTypes - Code ErrorCode - Message string + Type ErrorTypes + Code ErrorCode + // 方便国际化 + MessageId string } var ( - NoErrorEnum = &ErrorEnum{Type: "", Code: 0, Message: ""} - BuildProcessRunErrorEnum = &ErrorEnum{Type: User, Code: BuildProcessRunError, Message: "构建进程执行错误"} - RecoverRunFileErrorEnum = &ErrorEnum{Type: User, Code: RecoverRunFileError, Message: "恢复执行文件失败错误"} - LoseRunFileErrorEnum = &ErrorEnum{Type: User, Code: LoseRunFileError, Message: "丢失执行文件失败错误"} - MakeTmpDirErrorEnum = &ErrorEnum{Type: User, Code: MakeTmpDirError, Message: "创建临时目录失败"} - BuildProcessStartErrorEnum = &ErrorEnum{Type: User, Code: BuildProcessStartError, Message: "启动构建进程失败"} - PrepareScriptCreateErrorEnum = &ErrorEnum{Type: User, Code: PrepareScriptCreateError, Message: "预构建脚本创建失败"} + NoErrorEnum = &ErrorEnum{Type: "", Code: 0, MessageId: ""} + BuildProcessRunErrorEnum = &ErrorEnum{Type: User, Code: BuildProcessRunError, MessageId: "EC_BuildProcessRunError"} + LoseRunFileErrorEnum = &ErrorEnum{Type: User, Code: LoseRunFileError, MessageId: "EC_LoseRunFileError"} + MakeTmpDirErrorEnum = &ErrorEnum{Type: User, Code: MakeTmpDirError, MessageId: "EC_MakeTmpDirError"} + BuildProcessStartErrorEnum = &ErrorEnum{Type: User, Code: BuildProcessStartError, MessageId: "EC_BuildProcessStartError"} + PrepareScriptCreateErrorEnum = &ErrorEnum{Type: User, Code: PrepareScriptCreateError, MessageId: "EC_PrepareScriptCreateError"} ) func (t *PersistenceBuildInfo) ToFinish( @@ -60,18 +46,22 @@ func (t *PersistenceBuildInfo) ToFinish( if success || errorEnum == NoErrorEnum { return &PersistenceBuildWithStatus{ PersistenceBuildInfo: *t, - Success: success, - Message: message, - Error: nil, + Success: success, + Message: message, + Error: nil, } } + errMsg := "" + if errorEnum.MessageId != "" { + errMsg = i18n.Localize(errorEnum.MessageId, nil) + } return &PersistenceBuildWithStatus{ PersistenceBuildInfo: *t, - Success: success, - Message: message, + Success: success, + Message: message, Error: &Error{ ErrorType: errorEnum.Type, - ErrorMessage: errorEnum.Message, + ErrorMessage: errMsg, ErrorCode: errorEnum.Code, }, } diff --git a/src/agent/agent-slim/pkg/i18n/translation/translation.go b/src/agent/agent-slim/pkg/i18n/translation/translation.go index 51176d90214..5345dcf7450 100644 --- a/src/agent/agent-slim/pkg/i18n/translation/translation.go +++ b/src/agent/agent-slim/pkg/i18n/translation/translation.go @@ -17,6 +17,16 @@ func init() { ID: "CreateStartScriptFailed", Other: "create start script failed: {{.err}}"}, { ID: "CreateTmpDirectoryFailed", Other: "create tmp directory failed: {{.err}}"}, + { + ID: "EC_BuildProcessRunError", Other: "build into town execution error"}, + { + ID: "EC_BuildProcessStartError", Other: "failed to start build process"}, + { + ID: "EC_LoseRunFileError", Other: "missing execute file failed error"}, + { + ID: "EC_MakeTmpDirError", Other: "failed to create temporary directory"}, + { + ID: "EC_PrepareScriptCreateError", Other: "prebuild script creation failed"}, { ID: "ExecutableFileMissing", Other: "\nMissing {{.filename}}, `run install.sh` or `unzip agent.zip` in {{.dir}}."}, { @@ -33,6 +43,16 @@ func init() { ID: "CreateStartScriptFailed", Other: "准备构建脚本生成失败: {{.err}}"}, { ID: "CreateTmpDirectoryFailed", Other: "创建临时目录失败: {{.err}}"}, + { + ID: "EC_BuildProcessRunError", Other: "构建进程执行错误"}, + { + ID: "EC_BuildProcessStartError", Other: "启动构建进程失败"}, + { + ID: "EC_LoseRunFileError", Other: "丢失执行文件失败错误"}, + { + ID: "EC_MakeTmpDirError", Other: "创建临时目录失败"}, + { + ID: "EC_PrepareScriptCreateError", Other: "预构建脚本创建失败"}, { ID: "ExecutableFileMissing", Other: "\n{{.filename}} 执行文件丢失,请到 {{.dir}} 目录下执行 install.sh 或者重新解压 agent.zip 还原安装目录"}, { diff --git a/support-files/i18n/agent-slim/en_US.json b/support-files/i18n/agent-slim/en_US.json index 29c63c78713..fe5f558a639 100644 --- a/support-files/i18n/agent-slim/en_US.json +++ b/support-files/i18n/agent-slim/en_US.json @@ -19,5 +19,20 @@ }, "StartWorkerProcessFailed": { "other": "start worker process failed: {{.err}}" + }, + "EC_BuildProcessRunError": { + "other": "build into town execution error" + }, + "EC_LoseRunFileError": { + "other": "missing execute file failed error" + }, + "EC_MakeTmpDirError": { + "other": "failed to create temporary directory" + }, + "EC_BuildProcessStartError": { + "other": "failed to start build process" + }, + "EC_PrepareScriptCreateError": { + "other": "prebuild script creation failed" } } \ No newline at end of file diff --git a/support-files/i18n/agent-slim/zh_CN.json b/support-files/i18n/agent-slim/zh_CN.json index a5fabf1dd84..4be6a85a850 100644 --- a/support-files/i18n/agent-slim/zh_CN.json +++ b/support-files/i18n/agent-slim/zh_CN.json @@ -19,5 +19,20 @@ }, "StartWorkerProcessFailed": { "other": "启动构建进程失败: {{.err}}" + }, + "EC_BuildProcessRunError": { + "other": "构建进程执行错误" + }, + "EC_LoseRunFileError": { + "other": "丢失执行文件失败错误" + }, + "EC_MakeTmpDirError": { + "other": "创建临时目录失败" + }, + "EC_BuildProcessStartError": { + "other": "启动构建进程失败" + }, + "EC_PrepareScriptCreateError": { + "other": "预构建脚本创建失败" } } \ No newline at end of file From 6e70d5dcc0f3e8fce56578f837032bd0f7ec5ad4 Mon Sep 17 00:00:00 2001 From: ruotiantang Date: Tue, 15 Aug 2023 10:26:04 +0800 Subject: [PATCH 05/10] =?UTF-8?q?feat:=20=E5=85=AC=E5=85=B1=E6=9E=84?= =?UTF-8?q?=E5=BB=BA=E6=9C=BA=E6=94=AF=E6=8C=81=E6=8C=81=E4=B9=85=E5=8C=96?= =?UTF-8?q?=E6=9E=84=E5=BB=BA=E5=AE=B9=E5=99=A8=E8=B0=83=E5=BA=A6=20#9269?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/agent/agent-slim/cmd/slim.go | 8 +++--- src/agent/agent-slim/pkg/api/api.go | 14 ++++++++-- src/agent/agent-slim/pkg/config/config.go | 14 ++++++++-- src/agent/agent-slim/pkg/constant/constant.go | 6 ++-- src/agent/agent-slim/pkg/job/build.go | 28 +++++++++++-------- src/agent/agent-slim/pkg/job/build_manager.go | 5 +++- src/agent/agent-slim/pkg/job/common.go | 2 ++ src/agent/agent-slim/pkg/slim.go | 14 +++++++++- src/agent/agent/src/cmd/agent/main.go | 2 +- src/agent/agent/src/cmd/daemon/main.go | 2 +- src/agent/agent/src/cmd/daemon/main_win.go | 2 +- src/agent/agent/src/cmd/installer/main.go | 2 +- src/agent/agent/src/cmd/upgrader/main.go | 2 +- src/agent/agent/src/pkg/config/config_test.go | 2 +- src/agent/common/logs/logs.go | 10 +++++-- 15 files changed, 81 insertions(+), 32 deletions(-) diff --git a/src/agent/agent-slim/cmd/slim.go b/src/agent/agent-slim/cmd/slim.go index 3b7e459d93f..3b4e89c78a5 100644 --- a/src/agent/agent-slim/cmd/slim.go +++ b/src/agent/agent-slim/cmd/slim.go @@ -30,11 +30,11 @@ func main() { } // 初始化日志 - var logFilePath = config.Config.LogPath - if logFilePath == "" { - filepath.Join(config.Config.WorkDir, "logs", "devopsAgent.log") + var logStd bool + if config.Config.IsDebug { + logStd = true } - if err := logs.Init(logFilePath, config.Config.IsDebug); err != nil { + if err := logs.Init(filepath.Join(config.Config.LogPath, "devopsAgent.log"), config.Config.IsDebug, logStd); err != nil { fmt.Printf("init agent log error %s\n", err.Error()) os.Exit(1) } diff --git a/src/agent/agent-slim/pkg/api/api.go b/src/agent/agent-slim/pkg/api/api.go index b9a34c62b03..bb455c1af1c 100644 --- a/src/agent/agent-slim/pkg/api/api.go +++ b/src/agent/agent-slim/pkg/api/api.go @@ -8,6 +8,7 @@ import ( "io" "net/http" + "github.com/TencentBlueKing/bk-ci/agentcommon/logs" "github.com/TencentBlueKing/bk-ci/agentslim/pkg/config" "github.com/TencentBlueKing/bk-ci/agentslim/pkg/constant" "github.com/pkg/errors" @@ -38,7 +39,7 @@ type PersistenceBuildInfo struct { } func StartUp() (*PersistenceBuildInfo, error) { - url := fmt.Sprintf("%s/ms/dispatchDevcloud/api/buildAgent/agent/devcloud/startup", config.Config.GateWay) + url := fmt.Sprintf("%s/ms/dispatch-devcloud/api/buildAgent/agent/devcloud/startup", config.Config.GateWay) req, err := http.NewRequestWithContext(context.Background(), "GET", url, nil) @@ -75,15 +76,17 @@ type Error struct { } func WorkerBuildFinish(buildInfo *PersistenceBuildWithStatus) (bool, error) { - url := fmt.Sprintf("%s/ms/dispatchDevcloud/api/buildAgent/agent/devcloud/workBuildFinish", config.Config.GateWay) + url := fmt.Sprintf("%s/ms/dispatch-devcloud/api/buildAgent/agent/devcloud/workerBuildFinish", config.Config.GateWay) body, err := json.Marshal(buildInfo) if err != nil { return false, err } + logs.Debug("WorkerBuildFinish body", string(body)) req, err := http.NewRequestWithContext(context.Background(), "POST", url, bytes.NewReader(body)) req.Header = GetAuthHeaderMap() + req.Header.Set("Content-Type", "application/json; charset=UTF-8") resp, err := devopsClient.client.Do(req) if err != nil { return false, errors.Wrap(err, "request WorkerBuildFinish failed") @@ -98,6 +101,9 @@ func WorkerBuildFinish(buildInfo *PersistenceBuildWithStatus) (bool, error) { if err != nil { return false, errors.Wrap(err, "parse WorkerBuildFinish result error") } + if result == nil { + return false, nil + } return *result, nil } @@ -129,6 +135,10 @@ func IntoDevopsResult[T any](body []byte) (*T, error) { return nil, errors.Errorf("devops result status error %s", res.Message) } + if res.Data == nil { + return nil, nil + } + data, err := json.Marshal(res.Data) if err != nil { return nil, errors.Wrap(err, "marshal davops result data error") diff --git a/src/agent/agent-slim/pkg/config/config.go b/src/agent/agent-slim/pkg/config/config.go index b0272f98519..ccc1cbf6c1c 100644 --- a/src/agent/agent-slim/pkg/config/config.go +++ b/src/agent/agent-slim/pkg/config/config.go @@ -51,6 +51,16 @@ func InitConfig() error { Config.MaxWorkerCount = 1 } + if Config.LogPath == "" { + Config.LogPath = workDir + } + + // 做一些初始化 + err = os.Mkdir(Config.LogPath, os.ModePerm) + if err != nil { + return err + } + return nil } @@ -74,9 +84,9 @@ type EnvConfig struct { // workerjar 路径 WorkerPath string `env:"DEVOPS_AGENTSLIM_WORKER_PATH"` // java 路径 - JavaPath string `env:"DEVOPS_AGENTSLIM_JAVA_PATH"` + JavaPath string `env:"DEVOPS_AGENTSLIM_JAVA_PATH"` // 是否根据系统切换 shell,false使用 /bin/bash - DetectShell bool `env:"DEVOPS_AGENTSLIM_WORKER_DETECTSHELL"` + DetectShell bool `env:"DEVOPS_AGENTSLIM_WORKER_DETECTSHELL"` } // loadConfigFromEnv 从环境变量中加载相关配置 diff --git a/src/agent/agent-slim/pkg/constant/constant.go b/src/agent/agent-slim/pkg/constant/constant.go index fe390dab294..be131a15722 100644 --- a/src/agent/agent-slim/pkg/constant/constant.go +++ b/src/agent/agent-slim/pkg/constant/constant.go @@ -6,9 +6,9 @@ const ( // 构建机接取任务间隔时间 BuildIntervalInSeconds = 5 // api 鉴权的头信息 - AuthHeaderBuildType = "X-DEVOPS-BUILD-TYPE" // 构建类型 - AuthHeaderProjectId = "X-DEVOPS-PROJECT-ID" // 项目ID - AuthHeaderAgentId = "X-DEVOPS-AGENT-ID" // Agent ID + AuthHeaderBuildType = "X-DEVOPS-BUILD-TYPE" // 构建类型 + AuthHeaderProjectId = "X-DEVOPS-PROJECT-ID" // 项目ID + AuthHeaderAgentId = "X-DEVOPS-AGENT-ID" // Agent ID AuthHeaderBuildTypeValue = "AGENT" ) diff --git a/src/agent/agent-slim/pkg/job/build.go b/src/agent/agent-slim/pkg/job/build.go index 22d72b6bc17..e7fa8ac7c55 100644 --- a/src/agent/agent-slim/pkg/job/build.go +++ b/src/agent/agent-slim/pkg/job/build.go @@ -25,6 +25,7 @@ import ( func DoPollAndBuild() { for { if normalCanRun := checkWorkerCount(); !normalCanRun { + time.Sleep(constant.BuildIntervalInSeconds * time.Second) continue } @@ -32,11 +33,13 @@ func DoPollAndBuild() { buildInfo, err := api.StartUp() if err != nil { logs.WithError(err).Error("get build failed, retry") + time.Sleep(constant.BuildIntervalInSeconds * time.Second) continue } if buildInfo == nil { logs.Info("no build to run, skip") + time.Sleep(constant.BuildIntervalInSeconds * time.Second) continue } @@ -46,8 +49,6 @@ func DoPollAndBuild() { if err != nil { logs.WithError(err).Error("start build failed") } - - time.Sleep(constant.BuildIntervalInSeconds * time.Second) } } @@ -67,13 +68,17 @@ func runBuild(buildInfo *api.PersistenceBuildInfo) error { runUser := config.Config.WorkerUser goEnv := map[string]string{ - "DEVOPS_AGENT_VERSION": config.AgentVersion, - "DEVOPS_PROJECT_ID": buildInfo.ProjectId, - "DEVOPS_BUILD_ID": buildInfo.BuildId, - "DEVOPS_VM_SEQ_ID": buildInfo.VmSeqId, - "DEVOPS_FILE_GATEWAY": config.Config.FileGateWay, - "DEVOPS_GATEWAY": config.Config.GateWay, - "BK_CI_LOCALE_LANGUAGE": config.Config.Language, + "DEVOPS_AGENT_VERSION": config.AgentVersion, + "DEVOPS_PROJECT_ID": buildInfo.ProjectId, + "DEVOPS_BUILD_ID": buildInfo.BuildId, + "DEVOPS_VM_SEQ_ID": buildInfo.VmSeqId, + "DEVOPS_FILE_GATEWAY": config.Config.FileGateWay, + "DEVOPS_GATEWAY": config.Config.GateWay, + "BK_CI_LOCALE_LANGUAGE": config.Config.Language, + "devops_project_id": buildInfo.BuildId, + "devops_agent_id": buildInfo.AgentId, + "devops_agent_secret_key": buildInfo.SecretKey, + "devops_gateway": config.Config.GateWay, } // 定义临时目录 @@ -133,10 +138,11 @@ func writeStartBuildAgentScript(buildInfo *api.PersistenceBuildInfo, tmpDir stri fmt.Sprintf("cd %s", config.Config.WorkDir), fmt.Sprintf("%s -Ddevops.slave.agent.start.file=%s -Ddevops.slave.agent.prepare.start.file=%s "+ "-Ddevops.agent.error.file=%s "+ - "-Dbuild.type=AGENT -DAGENT_LOG_PREFIX=%s -Xmx2g -Djava.io.tmpdir=%s -jar %s %s", + "-Dbuild.type=DOCKER -DLOG_PATH=%s -DAGENT_LOG_PREFIX=%s -Xmx2g -Djava.io.tmpdir=%s -jar %s", config.Config.JavaPath, scriptFile, prepareScriptFile, errorMsgFile, - agentLogPrefix, tmpDir, config.Config.WorkerPath, encodedBuildInfo(buildInfo)), + config.Config.LogPath, agentLogPrefix, + tmpDir, config.Config.WorkerPath), } scriptContent := strings.Join(lines, "\n") diff --git a/src/agent/agent-slim/pkg/job/build_manager.go b/src/agent/agent-slim/pkg/job/build_manager.go index d5a6159c163..bd919005a05 100644 --- a/src/agent/agent-slim/pkg/job/build_manager.go +++ b/src/agent/agent-slim/pkg/job/build_manager.go @@ -25,7 +25,10 @@ type buildData struct { var GBuildManager *buildManager func init() { - GBuildManager = new(buildManager) + GBuildManager = &buildManager{ + lock: &sync.RWMutex{}, + instances: make(map[int]*buildData, 0), + } } func (b *buildManager) GetBuildCount() int { diff --git a/src/agent/agent-slim/pkg/job/common.go b/src/agent/agent-slim/pkg/job/common.go index a8506d34d62..9ccf49a56e1 100644 --- a/src/agent/agent-slim/pkg/job/common.go +++ b/src/agent/agent-slim/pkg/job/common.go @@ -69,9 +69,11 @@ func workerBuildFinish(buildInfo *api.PersistenceBuildWithStatus, toDelFiles []s result, err := api.WorkerBuildFinish(buildInfo) if err != nil { logs.Error("send worker build finish failed: ", err.Error()) + return } if !result { logs.Error("worker build finish false") + return } logs.Info("workerBuildFinish done") } diff --git a/src/agent/agent-slim/pkg/slim.go b/src/agent/agent-slim/pkg/slim.go index 7b285fbbb02..8a475577c31 100644 --- a/src/agent/agent-slim/pkg/slim.go +++ b/src/agent/agent-slim/pkg/slim.go @@ -1,8 +1,20 @@ package pkg -import "github.com/TencentBlueKing/bk-ci/agentslim/pkg/i18n" +import ( + // "github.com/TencentBlueKing/bk-ci/agentcommon/logs" + "github.com/TencentBlueKing/bk-ci/agentslim/pkg/i18n" + "github.com/TencentBlueKing/bk-ci/agentslim/pkg/job" +) func Run() { + // defer func() { + // if err := recover(); err != nil { + // logs.Error("agent main panic: ", err) + // } + // }() + // 初始化国际化 i18n.InitAgentI18n() + + job.DoPollAndBuild() } diff --git a/src/agent/agent/src/cmd/agent/main.go b/src/agent/agent/src/cmd/agent/main.go index a182c6d4f33..2ac945fbd7e 100644 --- a/src/agent/agent/src/cmd/agent/main.go +++ b/src/agent/agent/src/cmd/agent/main.go @@ -74,7 +74,7 @@ func main() { // 初始化日志 logFilePath := filepath.Join(systemutil.GetWorkDir(), "logs", "devopsAgent.log") - err := logs.Init(logFilePath, isDebug) + err := logs.Init(logFilePath, isDebug, false) if err != nil { fmt.Printf("init agent log error %v\n", err) systemutil.ExitProcess(1) diff --git a/src/agent/agent/src/cmd/daemon/main.go b/src/agent/agent/src/cmd/daemon/main.go index a1d62ad22ee..2d6e1cf8ae7 100644 --- a/src/agent/agent/src/cmd/daemon/main.go +++ b/src/agent/agent/src/cmd/daemon/main.go @@ -72,7 +72,7 @@ func main() { // 初始化日志 logFilePath := filepath.Join(systemutil.GetWorkDir(), "logs", "devopsDaemon.log") - err := logs.Init(logFilePath, isDebug) + err := logs.Init(logFilePath, isDebug, false) if err != nil { fmt.Printf("init daemon log error %v\n", err) systemutil.ExitProcess(1) diff --git a/src/agent/agent/src/cmd/daemon/main_win.go b/src/agent/agent/src/cmd/daemon/main_win.go index 282dbc46f50..e1b3fb0c5f8 100644 --- a/src/agent/agent/src/cmd/daemon/main_win.go +++ b/src/agent/agent/src/cmd/daemon/main_win.go @@ -67,7 +67,7 @@ func main() { // 初始化日志 logFilePath := filepath.Join(systemutil.GetWorkDir(), "logs", "devopsDaemon.log") - err := logs.Init(logFilePath, isDebug) + err := logs.Init(logFilePath, isDebug, false) if err != nil { fmt.Printf("init daemon log error %v\n", err) systemutil.ExitProcess(1) diff --git a/src/agent/agent/src/cmd/installer/main.go b/src/agent/agent/src/cmd/installer/main.go index cc6663c9925..cf50314137f 100644 --- a/src/agent/agent/src/cmd/installer/main.go +++ b/src/agent/agent/src/cmd/installer/main.go @@ -49,7 +49,7 @@ const ( func main() { // 初始化日志 logFilePath := filepath.Join(systemutil.GetWorkDir(), "logs", "devopsInstaller.log") - err := logs.Init(logFilePath, false) + err := logs.Init(logFilePath, false, false) if err != nil { fmt.Printf("init installer log error %v\n", err) systemutil.ExitProcess(1) diff --git a/src/agent/agent/src/cmd/upgrader/main.go b/src/agent/agent/src/cmd/upgrader/main.go index 41e3aa0d62b..fea9f816e20 100644 --- a/src/agent/agent/src/cmd/upgrader/main.go +++ b/src/agent/agent/src/cmd/upgrader/main.go @@ -47,7 +47,7 @@ const ( func main() { // 初始化日志 logFilePath := filepath.Join(systemutil.GetWorkDir(), "logs", "devopsUpgrader.log") - err := logs.Init(logFilePath, false) + err := logs.Init(logFilePath, false, false) if err != nil { fmt.Printf("init upgrader log error %v\n", err) systemutil.ExitProcess(1) diff --git a/src/agent/agent/src/pkg/config/config_test.go b/src/agent/agent/src/pkg/config/config_test.go index 7a48bccfaa4..66e841807be 100644 --- a/src/agent/agent/src/pkg/config/config_test.go +++ b/src/agent/agent/src/pkg/config/config_test.go @@ -10,7 +10,7 @@ import ( func Test_parseWorkerVersion(t *testing.T) { logFile := "config_unit_test.log" - _ = logs.Init(logFile, false) + _ = logs.Init(logFile, false, false) defer func() { _ = os.Remove(logFile) }() diff --git a/src/agent/common/logs/logs.go b/src/agent/common/logs/logs.go index 5e5d1a1e950..5e0ec83e5ec 100644 --- a/src/agent/common/logs/logs.go +++ b/src/agent/common/logs/logs.go @@ -3,6 +3,7 @@ package logs import ( "bytes" "fmt" + "io" "os" "github.com/sirupsen/logrus" @@ -12,7 +13,7 @@ import ( var Logs = log.WithFields(log.Fields{}) -func Init(filepath string, isDebug bool) error { +func Init(filepath string, isDebug bool, logStd bool) error { logInfo := log.WithFields(log.Fields{}) lumLog := &lumberjack.Logger{ @@ -22,7 +23,12 @@ func Init(filepath string, isDebug bool) error { LocalTime: true, } - logInfo.Logger.Out = lumLog + // 同时写入到 std + if logStd { + logInfo.Logger.Out = io.MultiWriter(lumLog, os.Stdout) + } else { + logInfo.Logger.Out = lumLog + } logInfo.Logger.SetFormatter(&MyFormatter{}) From 4d7822da9024e4d1ac72357319274ffdba7851ff Mon Sep 17 00:00:00 2001 From: ruotiantang Date: Tue, 22 Aug 2023 17:38:01 +0800 Subject: [PATCH 06/10] =?UTF-8?q?feat:=20=E5=85=AC=E5=85=B1=E6=9E=84?= =?UTF-8?q?=E5=BB=BA=E6=9C=BA=E6=94=AF=E6=8C=81=E6=8C=81=E4=B9=85=E5=8C=96?= =?UTF-8?q?=E6=9E=84=E5=BB=BA=E5=AE=B9=E5=99=A8=E8=B0=83=E5=BA=A6=20#9269?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/agent/agent-slim/cmd/slim.go | 2 +- src/agent/agent-slim/pkg/config/config.go | 8 +-- src/agent/agent-slim/pkg/cron/cron.go | 85 +++++++++++++++++++++++ src/agent/agent-slim/pkg/job/build.go | 19 ++--- src/agent/agent-slim/pkg/slim.go | 15 ++-- src/agent/common/go.mod | 2 +- 6 files changed, 110 insertions(+), 21 deletions(-) create mode 100644 src/agent/agent-slim/pkg/cron/cron.go diff --git a/src/agent/agent-slim/cmd/slim.go b/src/agent/agent-slim/cmd/slim.go index 3b4e89c78a5..c6d7e5d80ee 100644 --- a/src/agent/agent-slim/cmd/slim.go +++ b/src/agent/agent-slim/cmd/slim.go @@ -34,7 +34,7 @@ func main() { if config.Config.IsDebug { logStd = true } - if err := logs.Init(filepath.Join(config.Config.LogPath, "devopsAgent.log"), config.Config.IsDebug, logStd); err != nil { + if err := logs.Init(filepath.Join(config.Config.LogDir, "devopsAgent.log"), config.Config.IsDebug, logStd); err != nil { fmt.Printf("init agent log error %s\n", err.Error()) os.Exit(1) } diff --git a/src/agent/agent-slim/pkg/config/config.go b/src/agent/agent-slim/pkg/config/config.go index ccc1cbf6c1c..1d769731df8 100644 --- a/src/agent/agent-slim/pkg/config/config.go +++ b/src/agent/agent-slim/pkg/config/config.go @@ -51,12 +51,12 @@ func InitConfig() error { Config.MaxWorkerCount = 1 } - if Config.LogPath == "" { - Config.LogPath = workDir + if Config.LogDir == "" { + Config.LogDir = workDir } // 做一些初始化 - err = os.Mkdir(Config.LogPath, os.ModePerm) + err = os.Mkdir(Config.LogDir, os.ModePerm) if err != nil { return err } @@ -68,7 +68,7 @@ type EnvConfig struct { // DEBUG 模式 IsDebug bool `env:"DEVOPS_AGENTSLIM_ISDEBUG"` // 日志路径 - LogPath string `env:"DEVOPS_AGENTSLIM_LOGPATH"` + LogDir string `env:"DEVOPS_AGENTSLIM_LOGPATH"` // worker启动用户 WorkerUser string `env:"DEVOPS_AGENTSLIM_WORKER_USER"` // 国际化语言 diff --git a/src/agent/agent-slim/pkg/cron/cron.go b/src/agent/agent-slim/pkg/cron/cron.go new file mode 100644 index 00000000000..2cf426d46b6 --- /dev/null +++ b/src/agent/agent-slim/pkg/cron/cron.go @@ -0,0 +1,85 @@ +package cron + +import ( + "fmt" + "os" + "strings" + "time" + + "github.com/TencentBlueKing/bk-ci/agentcommon/logs" + "github.com/TencentBlueKing/bk-ci/agentslim/pkg/config" +) + +func CleanLog() { + ticker := time.Tick(4 * time.Hour) + for range ticker { + + } +} + +func cleanDumpFile(timeBeforeInHours int) { + dumpFileBeforeStr := time.Now().Add(time.Hour * time.Duration(timeBeforeInHours*-1)).Format("2006-01-02 15:04:05") + workDir := config.Config.WorkDir + logs.Info(fmt.Sprintf("clean dump file before %s(%d hours) in %s", dumpFileBeforeStr, timeBeforeInHours, workDir)) + files, err := os.ReadDir(workDir) + if err != nil { + logs.Warn("read work dir error: ", err.Error()) + return + } + for _, file := range files { + if file.IsDir() { + continue + } + + info, err := file.Info() + if err != nil { + logs.WithError(err).Warn("cleanDumpFile error") + continue + } + + if strings.HasPrefix(file.Name(), "hs_err_pid") && int(time.Since(info.ModTime()).Hours()) > timeBeforeInHours { + fileFullName := workDir + "/" + file.Name() + err = os.Remove(fileFullName) + if err != nil { + logs.Warn(fmt.Sprintf("remove file %s failed: ", fileFullName)) + } else { + logs.Info(fmt.Sprintf("file %s removed", fileFullName)) + } + } + } + logs.Info("clean dump file done") +} + +func cleanLogFile(timeBeforeInHours int) { + logFileBeforeStr := time.Now().Add(time.Hour * time.Duration(timeBeforeInHours*-1)).Format("2006-01-02 15:04:05") + logDir := config.Config.LogDir + logs.Info(fmt.Sprintf("clean log file before %s(%d hours) in %s", logFileBeforeStr, timeBeforeInHours, logDir)) + files, err := os.ReadDir(logDir) + if err != nil { + logs.Warn("read log dir error: ", err.Error()) + return + } + for _, file := range files { + if file.IsDir() { + continue + } + + info, err := file.Info() + if err != nil { + logs.WithError(err).Warn("cleanLogFile error") + continue + } + + if strings.HasSuffix(file.Name(), ".log") && int(time.Since(info.ModTime()).Hours()) > timeBeforeInHours { + fileFullName := logDir + "/" + file.Name() + err = os.Remove(fileFullName) + if err != nil { + logs.Warn(fmt.Sprintf("remove file %s failed: ", fileFullName)) + } else { + logs.Info(fmt.Sprintf("file %s removed", fileFullName)) + } + } + } + + logs.Info("clean log file done") +} diff --git a/src/agent/agent-slim/pkg/job/build.go b/src/agent/agent-slim/pkg/job/build.go index e7fa8ac7c55..f9e8a587711 100644 --- a/src/agent/agent-slim/pkg/job/build.go +++ b/src/agent/agent-slim/pkg/job/build.go @@ -68,13 +68,13 @@ func runBuild(buildInfo *api.PersistenceBuildInfo) error { runUser := config.Config.WorkerUser goEnv := map[string]string{ - "DEVOPS_AGENT_VERSION": config.AgentVersion, - "DEVOPS_PROJECT_ID": buildInfo.ProjectId, - "DEVOPS_BUILD_ID": buildInfo.BuildId, - "DEVOPS_VM_SEQ_ID": buildInfo.VmSeqId, - "DEVOPS_FILE_GATEWAY": config.Config.FileGateWay, - "DEVOPS_GATEWAY": config.Config.GateWay, - "BK_CI_LOCALE_LANGUAGE": config.Config.Language, + "DEVOPS_AGENT_VERSION": config.AgentVersion, + "DEVOPS_PROJECT_ID": buildInfo.ProjectId, + "DEVOPS_BUILD_ID": buildInfo.BuildId, + "DEVOPS_VM_SEQ_ID": buildInfo.VmSeqId, + "DEVOPS_FILE_GATEWAY": config.Config.FileGateWay, + "DEVOPS_GATEWAY": config.Config.GateWay, + "BK_CI_LOCALE_LANGUAGE": config.Config.Language, "devops_project_id": buildInfo.BuildId, "devops_agent_id": buildInfo.AgentId, "devops_agent_secret_key": buildInfo.SecretKey, @@ -138,10 +138,11 @@ func writeStartBuildAgentScript(buildInfo *api.PersistenceBuildInfo, tmpDir stri fmt.Sprintf("cd %s", config.Config.WorkDir), fmt.Sprintf("%s -Ddevops.slave.agent.start.file=%s -Ddevops.slave.agent.prepare.start.file=%s "+ "-Ddevops.agent.error.file=%s "+ - "-Dbuild.type=DOCKER -DLOG_PATH=%s -DAGENT_LOG_PREFIX=%s -Xmx2g -Djava.io.tmpdir=%s -jar %s", + "-Dbuild.type=DOCKER -DLOG_PATH=%s -DAGENT_LOG_PREFIX=%s -Dsun.zip.disableMemoryMapping=true -Xmx1024m -Xms128m "+ + "-Djava.io.tmpdir=%s -jar %s", config.Config.JavaPath, scriptFile, prepareScriptFile, errorMsgFile, - config.Config.LogPath, agentLogPrefix, + config.Config.LogDir, agentLogPrefix, tmpDir, config.Config.WorkerPath), } scriptContent := strings.Join(lines, "\n") diff --git a/src/agent/agent-slim/pkg/slim.go b/src/agent/agent-slim/pkg/slim.go index 8a475577c31..7c97080f3db 100644 --- a/src/agent/agent-slim/pkg/slim.go +++ b/src/agent/agent-slim/pkg/slim.go @@ -1,20 +1,23 @@ package pkg import ( - // "github.com/TencentBlueKing/bk-ci/agentcommon/logs" + "github.com/TencentBlueKing/bk-ci/agentcommon/logs" + "github.com/TencentBlueKing/bk-ci/agentslim/pkg/cron" "github.com/TencentBlueKing/bk-ci/agentslim/pkg/i18n" "github.com/TencentBlueKing/bk-ci/agentslim/pkg/job" ) func Run() { - // defer func() { - // if err := recover(); err != nil { - // logs.Error("agent main panic: ", err) - // } - // }() + defer func() { + if err := recover(); err != nil { + logs.Error("agent run panic: ", err) + } + }() // 初始化国际化 i18n.InitAgentI18n() + go cron.CleanLog() + job.DoPollAndBuild() } diff --git a/src/agent/common/go.mod b/src/agent/common/go.mod index 03f66e746ca..bdff8dab238 100644 --- a/src/agent/common/go.mod +++ b/src/agent/common/go.mod @@ -1,6 +1,6 @@ module github.com/TencentBlueKing/bk-ci/agentcommon -go 1.20 +go 1.19 require ( github.com/sirupsen/logrus v1.9.3 From 95fc22872c293c91f50187ea8ea2769c7ed2404c Mon Sep 17 00:00:00 2001 From: ruotiantang Date: Mon, 28 Aug 2023 16:41:34 +0800 Subject: [PATCH 07/10] =?UTF-8?q?feat:=20=E5=85=AC=E5=85=B1=E6=9E=84?= =?UTF-8?q?=E5=BB=BA=E6=9C=BA=E6=94=AF=E6=8C=81=E6=8C=81=E4=B9=85=E5=8C=96?= =?UTF-8?q?=E6=9E=84=E5=BB=BA=E5=AE=B9=E5=99=A8=E8=B0=83=E5=BA=A6=20#9269?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/agent.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/agent.yml b/.github/workflows/agent.yml index 2eaf1e9ddbc..cabfbfd6dfa 100644 --- a/.github/workflows/agent.yml +++ b/.github/workflows/agent.yml @@ -4,11 +4,11 @@ on: push: branches: [ master ] paths: - - 'src/agent/**' + - 'src/agent/agent/**' pull_request: branches: [ master, release-* ] paths: - - 'src/agent/**' + - 'src/agent/agent/**' jobs: build: @@ -19,8 +19,8 @@ jobs: go-version: 1.19.6 - uses: actions/checkout@v2 - run: make clean all - working-directory: src/agent/ + working-directory: src/agent/agent/ - uses: actions/upload-artifact@v1 with: name: agent - path: src/agent/bin/ + path: src/agent/agent/bin/ From 7e38cea7f981dd8ce0b0095a237cac373ce348c1 Mon Sep 17 00:00:00 2001 From: ruotiantang Date: Mon, 28 Aug 2023 16:47:13 +0800 Subject: [PATCH 08/10] =?UTF-8?q?feat:=20=E5=85=AC=E5=85=B1=E6=9E=84?= =?UTF-8?q?=E5=BB=BA=E6=9C=BA=E6=94=AF=E6=8C=81=E6=8C=81=E4=B9=85=E5=8C=96?= =?UTF-8?q?=E6=9E=84=E5=BB=BA=E5=AE=B9=E5=99=A8=E8=B0=83=E5=BA=A6=20#9269?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/agent.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/agent.yml b/.github/workflows/agent.yml index 7644f7530fb..de24fc6bfe3 100644 --- a/.github/workflows/agent.yml +++ b/.github/workflows/agent.yml @@ -4,11 +4,11 @@ on: push: branches: [master] paths: - - 'src/agent/**' + - 'src/agent/agent/**' pull_request: branches: [master, release-*] paths: - - 'src/agent/**' + - 'src/agent/agent/**' workflow_dispatch: workflow_call: inputs: @@ -30,11 +30,11 @@ jobs: path: | ~/.cache/go-build ~/go/pkg/mod - key: ${{ runner.os }}-go-${{ hashFiles('src/agent/go.sum') }} + key: ${{ runner.os }}-go-${{ hashFiles('src/agent/agent/go.sum') }} - run: make BUILD_OUT_TAG=out clean all - working-directory: src/agent/ + working-directory: src/agent/agent/ - uses: actions/upload-artifact@v3 if: ${{ inputs.upload == 'true' }} with: name: agent - path: src/agent/bin/ + path: src/agent/agent/bin/ From 1afccbc7c5f93b315954923aac727dfa0946746e Mon Sep 17 00:00:00 2001 From: ruotiantang Date: Tue, 29 Aug 2023 12:04:34 +0800 Subject: [PATCH 09/10] =?UTF-8?q?feat:=20=E5=85=AC=E5=85=B1=E6=9E=84?= =?UTF-8?q?=E5=BB=BA=E6=9C=BA=E6=94=AF=E6=8C=81=E6=8C=81=E4=B9=85=E5=8C=96?= =?UTF-8?q?=E6=9E=84=E5=BB=BA=E5=AE=B9=E5=99=A8=E8=B0=83=E5=BA=A6=20#9269?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/agent.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/agent.yml b/.github/workflows/agent.yml index de24fc6bfe3..a4c00272fbe 100644 --- a/.github/workflows/agent.yml +++ b/.github/workflows/agent.yml @@ -5,10 +5,12 @@ on: branches: [master] paths: - 'src/agent/agent/**' + - 'src/agent/common/**' pull_request: branches: [master, release-*] paths: - 'src/agent/agent/**' + - 'src/agent/common/**' workflow_dispatch: workflow_call: inputs: From 35d4c69ed7df698c4c3a4bd764c4996acb6832eb Mon Sep 17 00:00:00 2001 From: ruotiantang Date: Wed, 25 Oct 2023 10:06:51 +0800 Subject: [PATCH 10/10] =?UTF-8?q?feat:=20=E5=85=AC=E5=85=B1=E6=9E=84?= =?UTF-8?q?=E5=BB=BA=E6=9C=BA=E6=94=AF=E6=8C=81=E6=8C=81=E4=B9=85=E5=8C=96?= =?UTF-8?q?=E6=9E=84=E5=BB=BA=E5=AE=B9=E5=99=A8=E8=B0=83=E5=BA=A6=20#9269?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/agent/agent-slim/pkg/cron/cron.go | 3 ++- src/agent/agent/Makefile | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/agent/agent-slim/pkg/cron/cron.go b/src/agent/agent-slim/pkg/cron/cron.go index 2cf426d46b6..40f9a0c1c13 100644 --- a/src/agent/agent-slim/pkg/cron/cron.go +++ b/src/agent/agent-slim/pkg/cron/cron.go @@ -13,7 +13,8 @@ import ( func CleanLog() { ticker := time.Tick(4 * time.Hour) for range ticker { - + cleanDumpFile(3 * 24) + cleanLogFile(3 * 24) } } diff --git a/src/agent/agent/Makefile b/src/agent/agent/Makefile index 1081f063551..d4d5b39316d 100644 --- a/src/agent/agent/Makefile +++ b/src/agent/agent/Makefile @@ -2,7 +2,7 @@ BINDIR := $(CURDIR)/bin CMDDIR := $(CURDIR)/src/cmd BuildTime := $(shell date '+%Y-%m-%d.%H:%M:%S%Z') GitCommit := $(shell git rev-parse HEAD) -AGENT_VERSION=v1.12.0-beta.36 +AGENT_VERSION=v1.12.0-beta.39 BUILD_FLAGS := -ldflags="-w -s -X github.com/TencentBlueKing/bk-ci/agent/src/pkg/config.BuildTime=$(BuildTime) \ -X github.com/TencentBlueKing/bk-ci/agent/src/pkg/config.GitCommit=$(GitCommit) -X github.com/TencentBlueKing/bk-ci/agent/src/pkg/config.AgentVersion=$(AGENT_VERSION)"