diff --git a/src/command_modules/azure-cli-acr/HISTORY.rst b/src/command_modules/azure-cli-acr/HISTORY.rst index 0384a765f23..cde785f703d 100644 --- a/src/command_modules/azure-cli-acr/HISTORY.rst +++ b/src/command_modules/azure-cli-acr/HISTORY.rst @@ -3,6 +3,10 @@ Release History =============== +2.1.8 ++++++ +* Support commit and pull request git events for Task source trigger. + 2.1.7 +++++ * Fix an ACR Build encoding issue in Python2. diff --git a/src/command_modules/azure-cli-acr/azure/cli/command_modules/acr/_format.py b/src/command_modules/azure-cli-acr/azure/cli/command_modules/acr/_format.py index a8e700bbf2c..e8ceddc1abf 100644 --- a/src/command_modules/azure-cli-acr/azure/cli/command_modules/acr/_format.py +++ b/src/command_modules/azure-cli-acr/azure/cli/command_modules/acr/_format.py @@ -199,7 +199,7 @@ def _task_format_group(item): ('Name', _get_value(item, 'name')), ('PLATFORM', _get_value(item, 'platform', 'os')), ('STATUS', _get_value(item, 'status')), - ('COMMIT TRIGGER', _get_value(item, 'trigger', 'sourceTriggers', 0, 'status')), + ('SOURCE TRIGGER', _get_value(item, 'trigger', 'sourceTriggers', 0, 'status')), ('SOURCE REPOSITORY', _get_value(item, 'step', 'contextPath')), ('BRANCH', _get_value(item, 'trigger', 'sourceTriggers', 0, 'sourceRepository', 'branch')), ('BASE IMAGE TRIGGER', _get_value(item, 'trigger', 'baseImageTrigger', 'baseImageTriggerType')), @@ -214,7 +214,8 @@ def _build_format_group(item): ('TASK', _get_value(item, 'buildTask')), ('PLATFORM', _get_value(item, 'platform', 'osType')), ('STATUS', _get_value(item, 'status')), - ("TRIGGER", _get_build_trigger(_get_value(item, 'imageUpdateTrigger'), _get_value(item, 'gitCommitTrigger'))), + ("TRIGGER", _get_build_trigger(_get_value(item, 'imageUpdateTrigger'), + _get_value(item, 'sourceTrigger', 'eventType'))), ('STARTED', _format_datetime(_get_value(item, 'startTime'))), ('DURATION', _get_duration(_get_value(item, 'startTime'), _get_value(item, 'finishTime'))) ]) @@ -226,7 +227,8 @@ def _run_format_group(item): ('TASK', _get_value(item, 'task')), ('PLATFORM', _get_value(item, 'platform', 'os')), ('STATUS', _get_value(item, 'status')), - ("TRIGGER", _get_build_trigger(_get_value(item, 'imageUpdateTrigger'), _get_value(item, 'sourceTrigger'))), + ("TRIGGER", _get_build_trigger(_get_value(item, 'imageUpdateTrigger'), + _get_value(item, 'sourceTrigger', 'eventType'))), ('STARTED', _format_datetime(_get_value(item, 'startTime'))), ('DURATION', _get_duration(_get_value(item, 'startTime'), _get_value(item, 'finishTime'))) ]) @@ -257,9 +259,9 @@ def _get_value(item, *args): return ' ' -def _get_build_trigger(image_update_trigger, git_commit_trigger): - if git_commit_trigger.strip(): - return 'Git Commit' +def _get_build_trigger(image_update_trigger, git_source_trigger): + if git_source_trigger.strip(): + return git_source_trigger if image_update_trigger.strip(): return 'Image Update' return 'Manual' diff --git a/src/command_modules/azure-cli-acr/azure/cli/command_modules/acr/_params.py b/src/command_modules/azure-cli-acr/azure/cli/command_modules/acr/_params.py index 79071923a80..6bc305913d9 100644 --- a/src/command_modules/azure-cli-acr/azure/cli/command_modules/acr/_params.py +++ b/src/command_modules/azure-cli-acr/azure/cli/command_modules/acr/_params.py @@ -207,6 +207,7 @@ def load_arguments(self, _): # pylint: disable=too-many-statements # Source Trigger parameters c.argument('source_trigger_name', help="The name of the source trigger.") c.argument('commit_trigger_enabled', help="Indicates whether the source control commit trigger is enabled.", arg_type=get_three_state_flag()) + c.argument('pull_request_trigger_enabled', help="Indicates whether the source control pull request trigger is enabled.", arg_type=get_three_state_flag()) c.argument('git_access_token', help="The access token used to access the source control provider.") c.argument('branch', help="The source control branch name.") c.argument('base_image_trigger_name', help="The name of the base image trigger.") diff --git a/src/command_modules/azure-cli-acr/azure/cli/command_modules/acr/task.py b/src/command_modules/azure-cli-acr/azure/cli/command_modules/acr/task.py index 08886673f68..d84606eb982 100644 --- a/src/command_modules/azure-cli-acr/azure/cli/command_modules/acr/task.py +++ b/src/command_modules/azure-cli-acr/azure/cli/command_modules/acr/task.py @@ -66,6 +66,7 @@ def acr_task_create(cmd, # pylint: disable=too-many-locals values=None, source_trigger_name='defaultSourceTriggerName', commit_trigger_enabled=True, + pull_request_trigger_enabled=True, branch='master', no_push=False, no_cache=False, @@ -77,9 +78,9 @@ def acr_task_create(cmd, # pylint: disable=too-many-locals base_image_trigger_enabled=True, base_image_trigger_type='Runtime', resource_group_name=None): - if commit_trigger_enabled and not git_access_token: - raise CLIError("Commit trigger needs to be disabled [--commit-trigger-enabled False] " - "if no --git-access-token is provided.") + if (commit_trigger_enabled or pull_request_trigger_enabled) and not git_access_token: + raise CLIError("If source control trigger is enabled [--commit-trigger-enabled] or " + "[--pull-request-trigger-enabled] --git-access-token must be provided.") if file.endswith(ALLOWED_TASK_FILE_TYPES): step = FileTaskStep( @@ -106,7 +107,13 @@ def acr_task_create(cmd, # pylint: disable=too-many-locals source_control_type = SourceControlType.github.value source_triggers = None + source_trigger_events = [] if commit_trigger_enabled: + source_trigger_events.append(SourceTriggerEvent.commit.value) + if pull_request_trigger_enabled: + source_trigger_events.append(SourceTriggerEvent.pullrequest.value) + # if source_trigger_events contains any event types we assume they are enabled + if source_trigger_events: source_triggers = [ SourceTrigger( source_repository=SourceProperties( @@ -119,8 +126,8 @@ def acr_task_create(cmd, # pylint: disable=too-many-locals scope='repo' ) ), - source_trigger_events=[SourceTriggerEvent.commit.value], - status=TriggerStatus.enabled.value if commit_trigger_enabled else TriggerStatus.disabled.value, + source_trigger_events=source_trigger_events, + status=TriggerStatus.enabled.value, name=source_trigger_name ) ] @@ -205,6 +212,7 @@ def acr_task_update(cmd, # pylint: disable=too-many-locals timeout=None, context_path=None, commit_trigger_enabled=None, + pull_request_trigger_enabled=None, git_access_token=None, branch=None, image_names=None, @@ -282,10 +290,10 @@ def acr_task_update(cmd, # pylint: disable=too-many-locals if task.trigger: source_triggers = task.trigger.source_triggers base_image_trigger = task.trigger.base_image_trigger - if commit_trigger_enabled or source_triggers is not None: - status = None - if commit_trigger_enabled is not None: - status = TriggerStatus.enabled.value if commit_trigger_enabled else TriggerStatus.disabled.value + if (commit_trigger_enabled or pull_request_trigger_enabled) or source_triggers: + source_trigger_events = _get_trigger_event_list(source_triggers, + commit_trigger_enabled, + pull_request_trigger_enabled) source_trigger_update_params = [ SourceTriggerUpdateParameters( source_repository=SourceUpdateParameters( @@ -297,11 +305,12 @@ def acr_task_update(cmd, # pylint: disable=too-many-locals token_type=DEFAULT_TOKEN_TYPE ) ), - source_trigger_events=[SourceTriggerEvent.commit], - status=status, - name=source_triggers[0].name if source_triggers else "defaultBaseimageTriggerName" + source_trigger_events=source_trigger_events, + status=TriggerStatus.enabled.value if source_trigger_events else TriggerStatus.disabled.value, + name=source_triggers[0].name if source_triggers else "defaultSourceTriggerName" ) ] + if base_image_trigger_enabled or base_image_trigger is not None: status = None if base_image_trigger_enabled is not None: @@ -488,3 +497,27 @@ def _get_list_runs_message(base_message, task_name=None, image=None): if image: base_message = "{} for image '{}'".format(base_message, image) return "{}.".format(base_message) + + +def _get_trigger_event_list(source_triggers, + commit_trigger_enabled=None, + pull_request_trigger_enabled=None): + source_trigger_events = set() + # perform merge with server-side event list + if source_triggers: + source_trigger_events = set(source_triggers[0].source_trigger_events) + if source_triggers[0].status == TriggerStatus.disabled.value: + source_trigger_events.clear() + if commit_trigger_enabled is not None: + if commit_trigger_enabled: + source_trigger_events.add(SourceTriggerEvent.commit.value) + else: + if SourceTriggerEvent.commit.value in source_trigger_events: + source_trigger_events.remove(SourceTriggerEvent.commit.value) + if pull_request_trigger_enabled is not None: + if pull_request_trigger_enabled: + source_trigger_events.add(SourceTriggerEvent.pullrequest.value) + else: + if SourceTriggerEvent.pullrequest.value in source_trigger_events: + source_trigger_events.remove(SourceTriggerEvent.pullrequest.value) + return source_trigger_events diff --git a/src/command_modules/azure-cli-acr/setup.py b/src/command_modules/azure-cli-acr/setup.py index 01582c74e1b..0a321dfce23 100644 --- a/src/command_modules/azure-cli-acr/setup.py +++ b/src/command_modules/azure-cli-acr/setup.py @@ -14,7 +14,7 @@ logger.warn("Wheel is not available, disabling bdist_wheel hook") cmdclass = {} -VERSION = "2.1.7" +VERSION = "2.1.8" CLASSIFIERS = [ 'Development Status :: 4 - Beta', 'Intended Audience :: Developers', @@ -33,7 +33,7 @@ 'azure-cli-core', 'azure-mgmt-storage==2.0.0rc4', 'azure-storage-blob==1.3.1', - 'azure-mgmt-containerregistry==2.2.0', + 'azure-mgmt-containerregistry==2.3.0', ] with open('README.rst', 'r', encoding='utf-8') as f: diff --git a/src/command_modules/azure-cli-appservice/HISTORY.rst b/src/command_modules/azure-cli-appservice/HISTORY.rst index e08af786b2b..567dcbcfe03 100644 --- a/src/command_modules/azure-cli-appservice/HISTORY.rst +++ b/src/command_modules/azure-cli-appservice/HISTORY.rst @@ -2,6 +2,10 @@ Release History =============== +0.2.6 ++++++ +* update ACR SDK + 0.2.5 +++++ * az functionapp create supports creating a linux consumption plan type with a specific runtime diff --git a/src/command_modules/azure-cli-appservice/setup.py b/src/command_modules/azure-cli-appservice/setup.py index cd3b717c305..ddcc8c083f6 100644 --- a/src/command_modules/azure-cli-appservice/setup.py +++ b/src/command_modules/azure-cli-appservice/setup.py @@ -14,7 +14,7 @@ logger.warn("Wheel is not available, disabling bdist_wheel hook") cmdclass = {} -VERSION = "0.2.5" +VERSION = "0.2.6" CLASSIFIERS = [ 'Development Status :: 4 - Beta', 'Intended Audience :: Developers', @@ -33,7 +33,7 @@ 'azure-cli-core', 'azure-mgmt-web==0.40.0', 'azure-mgmt-storage==2.0.0rc4', - 'azure-mgmt-containerregistry==2.2.0', + 'azure-mgmt-containerregistry==2.3.0', # v1.17 breaks on wildcard cert https://github.com/shazow/urllib3/issues/981 'urllib3[secure]>=1.18', 'xmltodict',