Skip to content
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 19 additions & 2 deletions src/spring-cloud/azext_spring_cloud/_buildservices_factory.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
from .vendored_sdks.appplatform.v2022_01_01_preview import models
from ._deployment_uploadable_factory import uploader_selector
from ._log_stream import LogStream
from .vendored_sdks.appplatform.v2022_01_01_preview.models._app_platform_management_client_enums import SupportedRuntimeValue

logger = get_logger(__name__)

Expand Down Expand Up @@ -56,14 +57,14 @@ def _get_upload_info(self):
except AttributeError as e:
raise AzureInternalError("Failed to get a SAS URL to upload context. Error: {}".format(e))

def _queue_build(self, relative_path=None, builder=None, target_module=None, app=None, **_):
def _queue_build(self, relative_path=None, builder=None, target_module=None, runtime_version=None, app=None, **_):
subscription = get_subscription_id(self.cmd.cli_ctx)
service_resource_id = '/subscriptions/{}/resourceGroups/{}/providers/Microsoft.AppPlatform/Spring/{}'.format(subscription, self.resource_group, self.service)
properties = models.BuildProperties(
builder='{}/buildservices/default/builders/{}'.format(service_resource_id, builder),
agent_pool='{}/buildservices/default/agentPools/default'.format(service_resource_id),
relative_path=relative_path,
env={"BP_MAVEN_BUILT_MODULE": target_module} if target_module else None)
env=self._get_build_env(target_module, runtime_version))
build = models.Build(properties=properties)
try:
return self.client.build_service.create_or_update_build(self.resource_group,
Expand All @@ -74,6 +75,22 @@ def _queue_build(self, relative_path=None, builder=None, target_module=None, app
except (AttributeError, CloudError) as e:
raise DeploymentError("Failed to create or update a build. Error: {}".format(e.message))

def _get_build_env(self, target_module, runtime_version):
if all(x is None for x in [target_module, runtime_version]):
return None
env = {}
if target_module:
env['BP_MAVEN_BUILT_MODULE'] = target_module

runtime_version_table = {
SupportedRuntimeValue.JAVA8: '8.*',
SupportedRuntimeValue.JAVA11: '11.*',
SupportedRuntimeValue.JAVA17: '17.*'
}
if runtime_version:
env['BP_JVM_VERSION'] = runtime_version_table.get(runtime_version, '11.*')
return env
Comment thread
smile37773 marked this conversation as resolved.

def _wait_build_finished(self, build_result_id):
'''
Wait build result finished and stream the log during the waiting
Expand Down
16 changes: 15 additions & 1 deletion src/spring-cloud/azext_spring_cloud/tests/latest/test_asc_app.py
Original file line number Diff line number Diff line change
Expand Up @@ -265,7 +265,21 @@ def test_app_deploy_enterprise(self, file_mock):
self.assertIsNone(resource.properties.source.version)
self.assertEqual({'applicationConfigurationService': {'configFilePatterns': 'my-pattern'}},\
resource.properties.deployment_settings.addon_configs)


@mock.patch('azext_spring_cloud._deployment_uploadable_factory.FileUpload.upload_and_build')
def test_app_deploy_build_enterprise(self, file_mock):
file_mock.return_value = mock.MagicMock()
deployment=self._get_deployment()
self._execute('rg', 'asc', 'app', deployment=deployment, artifact_path='my-path', runtime_version='Java_8')
resource = self.put_build_resource
self.assertEqual({"BP_JVM_VERSION": "8.*"}, resource.properties.env)
self._execute('rg', 'asc', 'app', deployment=deployment, artifact_path='my-path', runtime_version='Java_11')
resource = self.put_build_resource
self.assertEqual({"BP_JVM_VERSION": "11.*"}, resource.properties.env)
self._execute('rg', 'asc', 'app', deployment=deployment, artifact_path='my-path', runtime_version='Java_17')
resource = self.put_build_resource
self.assertEqual({"BP_JVM_VERSION": "17.*"}, resource.properties.env)

@mock.patch('azext_spring_cloud._deployment_uploadable_factory.FolderUpload.upload_and_build')
def test_app_deploy_folder_enterprise(self, file_mock):
file_mock.return_value = mock.MagicMock()
Expand Down