diff --git a/tools/deployment-cli-tools/ch_cli_tools/codefresh.py b/tools/deployment-cli-tools/ch_cli_tools/codefresh.py index 08b81dea..eec6d241 100644 --- a/tools/deployment-cli-tools/ch_cli_tools/codefresh.py +++ b/tools/deployment-cli-tools/ch_cli_tools/codefresh.py @@ -507,8 +507,7 @@ def adjust_build_steps(index): cmds = codefresh['steps']['prepare_deployment']['commands'] - params = [p for inc in include for p in ["-i", inc]] +\ - [p for ex in exclude for p in ["-i", ex]] + params = [f"-i {inc}" for inc in include] + [f"-ex {ex}" for ex in exclude] for i in range(len(cmds)): cmds[i] = cmds[i].replace("$ENV", "-".join(envs)) diff --git a/tools/deployment-cli-tools/tests/test_codefresh.py b/tools/deployment-cli-tools/tests/test_codefresh.py index 93f6d2dd..7db9fe4c 100644 --- a/tools/deployment-cli-tools/tests/test_codefresh.py +++ b/tools/deployment-cli-tools/tests/test_codefresh.py @@ -179,12 +179,60 @@ def test_create_codefresh_configuration_multienv(): assert cf['test_step'] == 'test' assert cf['test'] == True assert cf['dev'] == True - for cmd in cf['steps']['prepare_deployment']['commands']: + assert len(build_included) > 0 + + commands = cf['steps']['prepare_deployment']['commands'] + assert any("harness-deployment" in cmd for cmd in commands) + for cmd in commands: if 'harness-deployment' in cmd: assert '-e dev-test' in cmd assert "test-${{NAMESPACE_BASENAME}}" in cmd - assert "-i samples" in cmd + for inc in build_included: + assert f"-i {inc}" in cmd + + finally: + shutil.rmtree(BUILD_MERGE_DIR) + +def test_create_codefresh_configuration_exclude_params_use_ex_flag(): + """Excluded apps must be re-emitted as -ex in the generated prepare_deployment command. + + Regression: both include and exclude used to be flattened to "-i" pairs, so an app passed + via -ex on the original CLI invocation would come back as -i in the CI-generated command, + turning it into a (mistaken) whitelist entry instead of being excluded. + """ + values = create_helm_chart( + [CLOUDHARNESS_ROOT, RESOURCES], + output_path=OUT, + include=['samples', 'myapp', "workflows"], + exclude=['events'], + domain="my.local", + namespace='test', + env='dev', + local=False, + tag=1, + registry='reg' + ) + try: + root_paths = preprocess_build_overrides( + root_paths=[CLOUDHARNESS_ROOT, RESOURCES], + helm_values=values, + merge_build_path=BUILD_MERGE_DIR + ) + + cf = create_codefresh_deployment_scripts(root_paths, include=['samples'], + exclude=['myapp'], + envs=['dev'], + base_image_name=values['name'], + helm_values=values, save=False) + + commands = cf['steps']['prepare_deployment']['commands'] + assert any("harness-deployment" in cmd for cmd in commands) + for cmd in commands: + if 'harness-deployment' in cmd: + assert "-i samples" in cmd + assert "-ex myapp" in cmd + assert "-i myapp" not in cmd finally: shutil.rmtree(BUILD_MERGE_DIR)