Skip to content

Commit 4cae093

Browse files
committed
CH-169 tests and fixes
1 parent 08b3716 commit 4cae093

6 files changed

Lines changed: 98 additions & 11 deletions

File tree

tools/deployment-cli-tools/ch_cli_tools/codefresh.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -322,11 +322,13 @@ def add_unit_test_step(app_config: ApplicationHarnessConfig):
322322
steps = codefresh["steps"]
323323
if CD_E2E_TEST_STEP in steps and not steps[CD_E2E_TEST_STEP]["scale"]:
324324
del steps[CD_E2E_TEST_STEP]
325-
del steps[CD_BUILD_STEP_TEST]["steps"]["test-e2e"]
325+
if CD_BUILD_STEP_TEST in steps and 'test-e2e' in steps[CD_BUILD_STEP_TEST]["steps"]:
326+
del steps[CD_BUILD_STEP_TEST]["steps"]["test-e2e"]
326327

327328
if CD_API_TEST_STEP in steps and not steps[CD_API_TEST_STEP]["scale"]:
328329
del steps[CD_API_TEST_STEP]
329-
del steps[CD_BUILD_STEP_TEST]["steps"]["test-api"]
330+
if CD_BUILD_STEP_TEST in steps and 'test-api' in steps[CD_BUILD_STEP_TEST]["steps"]:
331+
del steps[CD_BUILD_STEP_TEST]["steps"]["test-api"]
330332

331333
if CD_BUILD_STEP_TEST in steps and not steps[CD_BUILD_STEP_TEST]["steps"]:
332334
del steps[CD_BUILD_STEP_TEST]

tools/deployment-cli-tools/ch_cli_tools/helm.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -190,13 +190,13 @@ def create_app_values_spec(self, app_name, app_path, base_image_name=None, helm_
190190
else:
191191
build_dependencies = []
192192

193-
deployment_values = values[KEY_HARNESS].get(KEY_DEPLOYMENT, {})
193+
deployment_values = values.get(KEY_HARNESS, {}).get(KEY_DEPLOYMENT, {})
194194
deployment_image = deployment_values.get('image', None) or values.get('image', None)
195195
values['build'] = not bool(deployment_image) # Used by skaffold and ci/cd to determine if the image should be built
196196
if len(image_paths) > 0 and not deployment_image:
197197
image_name = image_name_from_dockerfile_path(os.path.relpath(
198198
image_paths[0], os.path.dirname(app_path)), base_image_name)
199-
deployment_values['image'] = self.image_tag(
199+
values['image'] = self.image_tag(
200200
image_name, build_context_path=app_path, dependencies=build_dependencies)
201201
elif KEY_HARNESS in values and not deployment_image and values[
202202
KEY_HARNESS].get(KEY_DEPLOYMENT, {}).get('auto', False):
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
harness:
2+
dependencies:
3+
build: []
4+
deployment:
5+
image: "custom-image"

tools/deployment-cli-tools/tests/test_codefresh.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -282,3 +282,39 @@ def test_create_codefresh_configuration_tests():
282282

283283
finally:
284284
shutil.rmtree(BUILD_MERGE_DIR)
285+
286+
287+
def test_create_codefresh_configuration_nobuild():
288+
values = create_helm_chart(
289+
[RESOURCES],
290+
output_path=OUT,
291+
include=['myapp'],
292+
exclude=['events'],
293+
domain="my.local",
294+
namespace='test',
295+
env=['dev', 'nobuild'],
296+
local=False,
297+
tag=1,
298+
registry='reg'
299+
)
300+
301+
root_paths = preprocess_build_overrides(
302+
root_paths=[CLOUD_HARNESS_PATH, RESOURCES],
303+
helm_values=values,
304+
merge_build_path=BUILD_MERGE_DIR
305+
)
306+
307+
build_included = [app['harness']['name']
308+
for app in values['apps'].values() if 'harness' in app]
309+
310+
cf = create_codefresh_deployment_scripts(root_paths, include=build_included,
311+
envs=['dev', 'nobuild'],
312+
base_image_name=values['name'],
313+
helm_values=values, save=False)
314+
l1_steps = cf['steps']
315+
steps = l1_steps["build_application_images"]["steps"]
316+
assert len(steps) == 1
317+
assert "myapp" not in steps
318+
assert "myapp-mytask" in steps
319+
assert "publish_myapp" not in l1_steps["publish"]["steps"]
320+
assert "publish_myapp-mytask" in l1_steps["publish"]["steps"]

tools/deployment-cli-tools/tests/test_helm.py

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,6 @@ def test_collect_helm_values(tmp_path):
1717
exclude=['events'], domain="my.local",
1818
namespace='test', env='dev', local=False, tag=1, registry='reg')
1919

20-
# Auto values
21-
assert values[KEY_APPS]['myapp'][KEY_HARNESS]['deployment']['image'] == 'reg/cloudharness/myapp:1'
22-
assert values.apps['myapp'].harness.deployment.image == 'reg/cloudharness/myapp:1'
23-
assert values[KEY_APPS]['myapp'][KEY_HARNESS]['name'] == 'myapp'
24-
assert values[KEY_APPS]['legacy'][KEY_HARNESS]['name'] == 'legacy'
25-
assert values[KEY_APPS]['accounts'][KEY_HARNESS]['deployment']['image'] == 'reg/cloudharness/accounts:1'
26-
2720
# First level include apps
2821
assert 'samples' in values[KEY_APPS]
2922
assert 'myapp' in values[KEY_APPS]
@@ -41,6 +34,14 @@ def test_collect_helm_values(tmp_path):
4134
# Explicit exclude overrides include
4235
assert 'events' not in values[KEY_APPS]
4336

37+
# Auto values
38+
assert values[KEY_APPS]['myapp'][KEY_HARNESS]['deployment']['image'] == 'reg/cloudharness/myapp:1'
39+
assert values[KEY_APPS]['myapp']['build'] == True
40+
assert values.apps['myapp'].harness.deployment.image == 'reg/cloudharness/myapp:1'
41+
assert values[KEY_APPS]['myapp'][KEY_HARNESS]['name'] == 'myapp'
42+
assert values[KEY_APPS]['legacy'][KEY_HARNESS]['name'] == 'legacy'
43+
assert values[KEY_APPS]['accounts'][KEY_HARNESS]['deployment']['image'] == 'reg/cloudharness/accounts:1'
44+
4445
# Base values kept
4546
assert values[KEY_APPS]['accounts'][KEY_HARNESS]['subdomain'] == 'accounts'
4647

@@ -79,6 +80,15 @@ def test_collect_helm_values(tmp_path):
7980
assert 'cloudharness-base-debian' not in values[KEY_TASK_IMAGES]
8081

8182

83+
def test_collect_nobuild(tmp_path):
84+
out_folder = tmp_path / 'test_collect_helm_values'
85+
values = create_helm_chart([RESOURCES], output_path=out_folder, include=['myapp'],
86+
exclude=['events'], domain="my.local",
87+
namespace='test', env='nobuild', local=False, tag=1, registry='reg')
88+
assert values[KEY_APPS]['myapp'][KEY_HARNESS]['deployment']['image'] == 'custom-image'
89+
assert values[KEY_APPS]['myapp']['build'] == False
90+
91+
8292
def test_collect_helm_values_noreg_noinclude(tmp_path):
8393
out_path = tmp_path / 'test_collect_helm_values_noreg_noinclude'
8494
values = create_helm_chart([CLOUDHARNESS_ROOT, RESOURCES], output_path=out_path, domain="my.local",

tools/deployment-cli-tools/tests/test_skaffold.py

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,3 +180,37 @@ def test_create_skaffold_configuration_with_conflicting_dependencies_requirement
180180

181181
myapp_config = release['overrides']['apps']['myapp2']
182182
assert myapp_config['harness']['deployment']['args'][0] == '/usr/src/app/myapp_code/__main__.py'
183+
184+
185+
def test_create_skaffold_configuration_nobuild():
186+
values = create_helm_chart(
187+
[RESOURCES],
188+
output_path=OUT,
189+
include=['myapp'],
190+
domain="my.local",
191+
namespace='test',
192+
env='nobuild',
193+
local=False,
194+
tag=1,
195+
registry='reg'
196+
)
197+
198+
BUILD_DIR = "/tmp/build"
199+
root_paths = preprocess_build_overrides(
200+
root_paths=[CLOUDHARNESS_ROOT, RESOURCES],
201+
helm_values=values,
202+
merge_build_path=BUILD_DIR
203+
)
204+
205+
sk = create_skaffold_configuration(
206+
root_paths=root_paths,
207+
helm_values=values,
208+
output_path=OUT
209+
)
210+
releases = sk['deploy']['helm']['releases']
211+
212+
assert len(sk['build']['artifacts']) == 1
213+
assert len(releases) == 1 # Ensure we only found 1 deployment (for myapp)
214+
215+
release = releases[0]
216+
assert 'myapp' not in release['overrides']['apps']

0 commit comments

Comments
 (0)