diff --git a/apiserver/paasng/paas_wl/workloads/processes/controllers.py b/apiserver/paasng/paas_wl/workloads/processes/controllers.py index a30a134eba..1b52166b77 100644 --- a/apiserver/paasng/paas_wl/workloads/processes/controllers.py +++ b/apiserver/paasng/paas_wl/workloads/processes/controllers.py @@ -100,7 +100,12 @@ def list_processes(env: ModuleEnvironment) -> ProcessesInfo: else: try: release: Release = Release.objects.get_latest(wl_app) - procfile = release.get_procfile() + # 历史遗留问题,release 脏数据符合条件 version = 1 , procfile 为空 ,build 为 None + is_dirty_release = release.version == 1 and not release.procfile and not release.build + if is_dirty_release: + procfile = {} + else: + procfile = release.get_procfile() except Release.DoesNotExist: logger.warning("Not any available Release") diff --git a/apiserver/paasng/paasng/dev_resources/sourcectl/git/client.py b/apiserver/paasng/paasng/dev_resources/sourcectl/git/client.py index b6b194a904..5c3c054ddf 100644 --- a/apiserver/paasng/paasng/dev_resources/sourcectl/git/client.py +++ b/apiserver/paasng/paasng/dev_resources/sourcectl/git/client.py @@ -100,11 +100,11 @@ def to_cmd(self, obscure: bool = False) -> List[str]: class GitClient: """Git 客户端""" - VERSION_REGEX = re.compile(r"refs/(?P(remotes/origin|tags))/(?P[{}\w.\-_]+)") + VERSION_REGEX = re.compile(r"refs/(?P(remotes/origin|tags))/(?P[{}\w.\-_/]+)") COMMIT_INFO_REGEX = re.compile(r"(?P(\d+))/(?P[\S\s]*)", re.M) META_GIT_DIR = ".git" _git_filepath = "git" - _default_timeout = 30 + _default_timeout = 600 def checkout(self, path: Path, target: str) -> str: """切换分支或tag""" diff --git a/apiserver/paasng/tests/paas_wl/conftest.py b/apiserver/paasng/tests/paas_wl/conftest.py index 66cffbabee..3b76dd26fc 100644 --- a/apiserver/paasng/tests/paas_wl/conftest.py +++ b/apiserver/paasng/tests/paas_wl/conftest.py @@ -318,6 +318,14 @@ def wl_release(wl_app): ) +@pytest.fixture +def wl_dirty_release(wl_app): + return create_wl_release( + wl_app=wl_app, + release_params={"version": 1, "build": None}, + ) + + @pytest.fixture def build_proc(wl_app) -> BuildProcess: """A new BuildProcess object with random info""" diff --git a/apiserver/paasng/tests/paas_wl/workloads/processes/test_controllers.py b/apiserver/paasng/tests/paas_wl/workloads/processes/test_controllers.py index fe47298f93..11fa0f5ea7 100644 --- a/apiserver/paasng/tests/paas_wl/workloads/processes/test_controllers.py +++ b/apiserver/paasng/tests/paas_wl/workloads/processes/test_controllers.py @@ -89,6 +89,10 @@ def test_list_processes(bk_stag_env, wl_app, wl_release, mock_reader): assert list_processes(bk_stag_env).processes == [web_proc, worker_proc] +def test_list_processes_with_dirty_release(bk_stag_env, wl_app, wl_dirty_release, mock_reader): + assert not list_processes(bk_stag_env).processes + + def test_list_processes_boundary_case(bk_stag_env, wl_app, wl_release, mock_reader): mock_reader.set_processes( # worker 没有实例, 不会被忽略 diff --git a/apiserver/paasng/tests/sourcectl/git/test_git_client.py b/apiserver/paasng/tests/sourcectl/git/test_git_client.py index 083a1b61c4..f062936dc8 100644 --- a/apiserver/paasng/tests/sourcectl/git/test_git_client.py +++ b/apiserver/paasng/tests/sourcectl/git/test_git_client.py @@ -99,6 +99,7 @@ def test_clone(self, client, bare, expected): ], {"branch": ["develop"], "tag": ["develop", "v20210203"]}, ), + (["9n8b7u6y5t refs/remotes/origin/develop/1.2"], {"branch": ["develop/1.2"]}), ], ) def test_list_refs(self, client, refs, expected):