From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by mx.groups.io with SMTP id smtpd.web11.16865.1669117674960617993 for ; Tue, 22 Nov 2022 03:48:08 -0800 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=Vm2uaY9s; spf=pass (domain: intel.com, ip: 192.55.52.136, mailfrom: dun.tan@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1669117688; x=1700653688; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=hmmfsLUDjYKkhcmS5zxRFe66ZP+TmNrDAah7ILDOL9Y=; b=Vm2uaY9sDqVrqMk0NZuDWvb/UD/D2+Z1yx10HZOXJGgA/Cjh99JgYOY7 +Jx1PX/yg9ugee+hjU1y4pl5cCZXoW44PivGLerGFegt6cLkEsyrA6HI4 M4n/8bcdsGrHzrp2GwsFYXKnNcNWwKwSHEZZ18ASTh9IiveDqhacBqXDo aliUQ0ngOR8tHP3W6uQHTOFF8wyqYQ9ipCGnUXFQdM7I4LaY8DNZQV4hh BPAPzft6BjTED7Vd4cTKPcF2DwKVRXzEVROk7ctBVsRlyM7v93t27xJax MHa43nSFULB/qZj2zK1FrDEmyk8I7M958UNdReua8LhDY1GQ7mpYF+I4Q g==; X-IronPort-AV: E=McAfee;i="6500,9779,10538"; a="293505523" X-IronPort-AV: E=Sophos;i="5.96,183,1665471600"; d="scan'208";a="293505523" Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Nov 2022 03:48:07 -0800 X-IronPort-AV: E=McAfee;i="6500,9779,10538"; a="592118864" X-IronPort-AV: E=Sophos;i="5.96,183,1665471600"; d="scan'208";a="592118864" Received: from shwdeopenlab702.ccr.corp.intel.com ([10.239.56.220]) by orsmga003-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Nov 2022 03:48:06 -0800 From: "duntan" To: devel@edk2.groups.io Cc: Sean Brogan , Michael Kubacki , Michael D Kinney , Liming Gao , Ray Ni Subject: [PATCH 3/3] .azurepipelines: Expand PlatformCI template for Shell UnitTest Date: Tue, 22 Nov 2022 19:47:37 +0800 Message-Id: <20221122114737.393-4-dun.tan@intel.com> X-Mailer: git-send-email 2.31.1.windows.1 In-Reply-To: <20221122114737.393-1-dun.tan@intel.com> References: <20221122114737.393-1-dun.tan@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Expand PlatformCI build and run steps template for Shell UnitTest. Add a new parameter unit_test_list to support building and running specific Shell UnitTest modules. In stuart_pr_eval step, if the unit_test_list passed from platform yml file is not null, it will select some packages from the packages which contain the module in unit_test_list and set them into a new variable pkgs_to_build base on its evaluation rule. In stuart_build step, if unit_test_list is not null, '${{ parameters.unit_test_list}} -p $(pkgs_to_build)' will be added into the arguments to build specific UnitTest modules in pkgs_to_build. In 'Run to shell' step, if unit_test_list is not null, all the UnitTest modules built in stuart_build step will runs in shell. Signed-off-by: Dun Tan Cc: Sean Brogan Cc: Michael Kubacki Cc: Michael D Kinney Cc: Liming Gao Cc: Ray Ni --- .azurepipelines/templates/platform-build-run-steps.yml | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/.azurepipelines/templates/platform-build-run-steps.yml b/.azurepipelines/templates/platform-build-run-steps.yml index 40a31a509f..51503287c4 100644 --- a/.azurepipelines/templates/platform-build-run-steps.yml +++ b/.azurepipelines/templates/platform-build-run-steps.yml @@ -30,6 +30,9 @@ parameters: - name: run_flags type: string default: '' +- name: unit_test_list + type: string + default: '' - name: extra_install_step type: stepList @@ -49,7 +52,9 @@ steps: displayName: 'Install/Upgrade pip modules' # Set default -- bash: echo "##vso[task.setvariable variable=pkg_count]${{ 1 }}" +- bash: | + echo "##vso[task.setvariable variable=pkg_count]${{ 1 }}" + echo "##vso[task.setvariable variable=pkgs_to_build]${{ 'all' }}" # Fetch the target branch so that pr_eval can diff them. # Seems like azure pipelines/github changed checkout process in nov 2020. @@ -62,7 +67,7 @@ steps: displayName: Check if ${{ parameters.build_pkg }} need testing inputs: filename: stuart_pr_eval - arguments: -c ${{ parameters.build_file }} -t ${{ parameters.build_target}} -a ${{ parameters.build_arch}} --pr-target origin/$(System.PullRequest.targetBranch) --output-count-format-string "##vso[task.setvariable variable=pkg_count;isOutpout=true]{pkgcount}" + arguments: -c ${{ parameters.build_file }} -t ${{ parameters.build_target}} -a ${{ parameters.build_arch}} --pr-target origin/$(System.PullRequest.targetBranch) --output-count-format-string "##vso[task.setvariable variable=pkg_count;isOutpout=true]{pkgcount}" --output-csv-format-string "##vso[task.setvariable variable=pkgs_to_build]{pkgcsv}" ${{ parameters.unit_test_list}} condition: eq(variables['Build.Reason'], 'PullRequest') # Setup repo @@ -97,14 +102,22 @@ steps: inputs: filename: stuart_build arguments: -c ${{ parameters.build_file }} TOOL_CHAIN_TAG=${{ parameters.tool_chain_tag}} TARGET=${{ parameters.build_target}} -a ${{ parameters.build_arch}} ${{ parameters.build_flags}} - condition: and(gt(variables.pkg_count, 0), succeeded()) + condition: and(and(gt(variables.pkg_count, 0), succeeded()), eq(variables.unit_test_list, '')) + +# Build specific pkg for UnitTest +- task: CmdLine@1 + displayName: Build UnitTest + inputs: + filename: stuart_build + arguments: ${{ parameters.unit_test_list}} -p $(pkgs_to_build) -c ${{ parameters.build_file }} TOOL_CHAIN_TAG=${{ parameters.tool_chain_tag}} TARGET=${{ parameters.build_target}} -a ${{ parameters.build_arch}} ${{ parameters.build_flags}} + condition: and(and(gt(variables.pkg_count, 0), succeeded()), not(eq(variables.unit_test_list, ''))) # Run - task: CmdLine@1 displayName: Run to shell inputs: filename: stuart_build - arguments: -c ${{ parameters.build_file }} TOOL_CHAIN_TAG=${{ parameters.tool_chain_tag}} TARGET=${{ parameters.build_target}} -a ${{ parameters.build_arch}} ${{ parameters.build_flags}} ${{ parameters.run_flags }} --FlashOnly + arguments: -c ${{ parameters.build_file }} TOOL_CHAIN_TAG=${{ parameters.tool_chain_tag}} TARGET=${{ parameters.build_target}} -a ${{ parameters.build_arch}} ${{ parameters.build_flags}} ${{ parameters.run_flags }} --FlashOnly ${{ parameters.unit_test_list}} condition: and(and(gt(variables.pkg_count, 0), succeeded()), eq(variables['Run'], true)) timeoutInMinutes: 1 -- 2.31.1.windows.1