From 43317519ee0ab27be8322b0e77f9dd9603b3edcd Mon Sep 17 00:00:00 2001 From: Silviu Petrescu Date: Wed, 27 May 2026 20:45:00 +0100 Subject: [PATCH 1/2] Add Native Auth Sample App to 1ES pipeline --- .../buildTestApps/build-test-apps.yml | 5 ++- .../templates/runTests/run-firebase-tests.yml | 1 + .../templates/build-msal-automation-app.yml | 5 +-- .../templates/build-nativeauth-sample-app.yml | 36 +++++++++++++++++++ 4 files changed, 44 insertions(+), 3 deletions(-) create mode 100644 azure-pipelines/ui-automation/templates/build-nativeauth-sample-app.yml diff --git a/azure-pipelines/templates/buildTestApps/build-test-apps.yml b/azure-pipelines/templates/buildTestApps/build-test-apps.yml index 4c17681d..bbb0f1fd 100644 --- a/azure-pipelines/templates/buildTestApps/build-test-apps.yml +++ b/azure-pipelines/templates/buildTestApps/build-test-apps.yml @@ -99,4 +99,7 @@ jobs: feedName: ${{ parameters.testAppsFeedName }} oldMsalTestAppVersion: ${{ parameters.oldMsalTestAppVersion }} oldOneAuthTestAppVersion: ${{ parameters.oldOneAuthTestAppVersion }} - - template: ../../ui-automation/templates/download-first-party-apps.yml \ No newline at end of file + - template: ../../ui-automation/templates/download-first-party-apps.yml + - template: ../../ui-automation/templates/build-nativeauth-sample-app.yml + parameters: + packageVariant: RC \ No newline at end of file diff --git a/azure-pipelines/templates/runTests/run-firebase-tests.yml b/azure-pipelines/templates/runTests/run-firebase-tests.yml index 981114cb..53720110 100644 --- a/azure-pipelines/templates/runTests/run-firebase-tests.yml +++ b/azure-pipelines/templates/runTests/run-firebase-tests.yml @@ -31,6 +31,7 @@ parameters: /sdcard/LTW.apk=$(Pipeline.Workspace)/brokerapks/LTW-signed.apk,\ /sdcard/OneAuthTestApp.apk=$(Pipeline.WorkSpace)/oneauthtestapp/arm64-v8a_signed_APK/app-dist-AutoBroker-release-unsigned.apk,\ /sdcard/MsalTestApp.apk=$(Pipeline.WorkSpace)/msalTestApp/msalTestApp-dist-debug.apk,\ + /sdcard/NativeAuthSampleApp.apk=$(Pipeline.Workspace)/nativeauthsampleapk-RC/app-debug.apk,\ /data/local/tmp/LabVaultAccessCert.pfx=$(Build.SourcesDirectory)/LabVaultAccessCert.pfx" jobs: diff --git a/azure-pipelines/ui-automation/templates/build-msal-automation-app.yml b/azure-pipelines/ui-automation/templates/build-msal-automation-app.yml index d857b8ae..0f4adec5 100644 --- a/azure-pipelines/ui-automation/templates/build-msal-automation-app.yml +++ b/azure-pipelines/ui-automation/templates/build-msal-automation-app.yml @@ -50,6 +50,7 @@ jobs: vmImage: ubuntu-latest variables: - group: MSIDLABVARS + - group: devex-ciam-test - name: LabAppCert value: "/data/local/tmp/LabAuth.pfx" steps: @@ -65,7 +66,7 @@ jobs: inputs: targetType: inline script: | - $assembleTask = "msalautomationapp:assemble${{ parameters.msalFlavor }}${{ parameters.brokerApp }}Debug -PlabSecret=$(LabAppCert) -PbrokerSource=${{ parameters.brokerSource }} -PbrokerUpdateSource=${{ parameters.brokerUpdateSource }}" + $assembleTask = "msalautomationapp:assemble${{ parameters.msalFlavor }}${{ parameters.brokerApp }}Debug -PlabSecret=$(LabAppCert) -PbrokerSource=${{ parameters.brokerSource }} -PbrokerUpdateSource=${{ parameters.brokerUpdateSource }} -PnativeAuthConfigString=$(NATIVE_AUTH_CONFIG_STRING)" if (("${{ parameters.msalVersion }}" -ne "")) { $assembleTask = $assembleTask + " -PdistMsalVersion=" + "${{ parameters.msalVersion }}" } @@ -83,7 +84,7 @@ jobs: inputs: targetType: inline script: | - $assembleTestTask = "msalautomationapp:assemble${{ parameters.msalFlavor }}${{ parameters.brokerApp }}DebugAndroidTest -PlabSecret=$(LabAppCert)" + $assembleTestTask = "msalautomationapp:assemble${{ parameters.msalFlavor }}${{ parameters.brokerApp }}DebugAndroidTest -PlabSecret=$(LabAppCert) -PnativeAuthConfigString=$(NATIVE_AUTH_CONFIG_STRING)" if (("${{ parameters.msalVersion }}" -ne "")) { $assembleTestTask = $assembleTestTask + " -PdistMsalVersion=" + "${{ parameters.msalVersion }}" } diff --git a/azure-pipelines/ui-automation/templates/build-nativeauth-sample-app.yml b/azure-pipelines/ui-automation/templates/build-nativeauth-sample-app.yml new file mode 100644 index 00000000..a373410f --- /dev/null +++ b/azure-pipelines/ui-automation/templates/build-nativeauth-sample-app.yml @@ -0,0 +1,36 @@ +parameters: +- name: packageVariant + displayName: Package Variant + type: string + default: PROD + values: + - PROD + - RC + +jobs: +- job: nativeauthsampleapp${{ parameters.packageVariant }} + displayName: Build NativeAuth Sample App ${{ parameters.packageVariant }} + pool: + vmImage: ubuntu-latest + steps: + - checkout: self + clean: true + submodules: recursive + persistCredentials: True + - bash: | + echo "##vso[task.setvariable variable=ENV_VSTS_MVN_ANDROIDADACCOUNTS_ACCESSTOKEN]$(System.AccessToken)" + displayName: Set MVN Access Token in Environment + - task: Gradle@2 + displayName: 'Assemble NativeAuth Sample App' + inputs: + tasks: NativeAuthSample:clean NativeAuthSample:assembleDebug + publishJUnitResults: false + - task: CopyFiles@2 + displayName: 'Copy apks for later use in the pipeline' + inputs: + flattenFolders: true + contents: '$(Build.SourcesDirectory)/nativeauthsample/app/build/outputs/apk/**/*.apk' + targetFolder: '$(Build.ArtifactStagingDirectory)/nativeauthsample' + - publish: '$(Build.ArtifactStagingDirectory)/nativeauthsample' + displayName: 'Publish NativeAuth Sample APK' + artifact: nativeauthsampleapk-${{ upper(parameters.packageVariant) }} From e48ae4a6b093db1ec4354459232a07e39d0743a6 Mon Sep 17 00:00:00 2001 From: Silviu Petrescu Date: Thu, 28 May 2026 16:59:56 +0100 Subject: [PATCH 2/2] Move to own pipeline --- .../buildTestApps/build-test-apps.yml | 3 - .../templates/runTests/run-firebase-tests.yml | 1 - .../ui-automation/nativeauth-test.yml | 91 +++++++++++++++++++ .../templates/build-msal-automation-app.yml | 14 ++- 4 files changed, 102 insertions(+), 7 deletions(-) create mode 100644 azure-pipelines/ui-automation/nativeauth-test.yml diff --git a/azure-pipelines/templates/buildTestApps/build-test-apps.yml b/azure-pipelines/templates/buildTestApps/build-test-apps.yml index bbb0f1fd..dbe3759d 100644 --- a/azure-pipelines/templates/buildTestApps/build-test-apps.yml +++ b/azure-pipelines/templates/buildTestApps/build-test-apps.yml @@ -100,6 +100,3 @@ jobs: oldMsalTestAppVersion: ${{ parameters.oldMsalTestAppVersion }} oldOneAuthTestAppVersion: ${{ parameters.oldOneAuthTestAppVersion }} - template: ../../ui-automation/templates/download-first-party-apps.yml - - template: ../../ui-automation/templates/build-nativeauth-sample-app.yml - parameters: - packageVariant: RC \ No newline at end of file diff --git a/azure-pipelines/templates/runTests/run-firebase-tests.yml b/azure-pipelines/templates/runTests/run-firebase-tests.yml index 53720110..981114cb 100644 --- a/azure-pipelines/templates/runTests/run-firebase-tests.yml +++ b/azure-pipelines/templates/runTests/run-firebase-tests.yml @@ -31,7 +31,6 @@ parameters: /sdcard/LTW.apk=$(Pipeline.Workspace)/brokerapks/LTW-signed.apk,\ /sdcard/OneAuthTestApp.apk=$(Pipeline.WorkSpace)/oneauthtestapp/arm64-v8a_signed_APK/app-dist-AutoBroker-release-unsigned.apk,\ /sdcard/MsalTestApp.apk=$(Pipeline.WorkSpace)/msalTestApp/msalTestApp-dist-debug.apk,\ - /sdcard/NativeAuthSampleApp.apk=$(Pipeline.Workspace)/nativeauthsampleapk-RC/app-debug.apk,\ /data/local/tmp/LabVaultAccessCert.pfx=$(Build.SourcesDirectory)/LabVaultAccessCert.pfx" jobs: diff --git a/azure-pipelines/ui-automation/nativeauth-test.yml b/azure-pipelines/ui-automation/nativeauth-test.yml new file mode 100644 index 00000000..6c7fca69 --- /dev/null +++ b/azure-pipelines/ui-automation/nativeauth-test.yml @@ -0,0 +1,91 @@ +# Run NativeAuth UI automation tests (standalone stabilization pipeline) +# This pipeline is used during test development/stabilization. +# Once tests are stable, they can be added to the weekly-validation pipeline. +# https://dev.azure.com/IdentityDivision/Engineering/_build?definitionId=XXXX +name: $(Build.BuildId)_NativeAuth_$(SourceBranchName)_$(Date:yyyyMMdd)$(Rev:.r) + +trigger: none +pr: none + +resources: + repositories: + - repository: msal + type: github + name: AzureAD/microsoft-authentication-library-for-android + ref: $(msal_branch) + endpoint: ANDROID_GITHUB + +variables: + - group: devex-ciam-test + - name: engineeringProjectId + value: 'fac9d424-53d2-45c0-91b5-ef6ba7a6bf26' + - name: msalApp + value: msalautomationapp-local-AutoBroker-debug.apk + - name: msalTestApp + value: msalautomationapp-local-AutoBroker-debug-androidTest.apk + - name: nativeAuthSampleApk + value: app-debug.apk + - name: firebaseTimeout + value: 45m + - name: resultsHistoryName + value: NativeAuth Tests + +parameters: +- name: msal_branch + displayName: MSAL Branch + type: string + default: 'spetrescu/custom_headers' +- name: firebaseDeviceId + displayName: Firebase Device Id + type: string + default: oriole +- name: firebaseDeviceAndroidVersion + displayName: Firebase Device Android Version + type: number + default: 33 + +stages: +# Build MSAL Automation App (Local flavor, no broker needed for NativeAuth tests) +- stage: 'msalautomationapp' + dependsOn: [] + displayName: Build MSAL Automation APKs + jobs: + - template: ./templates/build-msal-automation-app.yml + parameters: + brokerApp: AutoBroker + msalFlavor: Local + brokerSource: LocalApk + brokerUpdateSource: LocalApk + packageVariant: RC + nativeAuthConfigString: $(NATIVE_AUTH_CONFIG_STRING) + +# Build NativeAuth Sample App +- stage: 'nativeauthsampleapp' + dependsOn: [] + displayName: Build NativeAuth Sample App + jobs: + - template: ./templates/build-nativeauth-sample-app.yml + parameters: + packageVariant: RC + +# Run NativeAuth tests on Firebase +- stage: 'nativeauth_tests' + dependsOn: + - msalautomationapp + - nativeauthsampleapp + displayName: Running NativeAuth Tests (API ${{ parameters.firebaseDeviceAndroidVersion }}) + jobs: + - template: ./templates/flank/run-on-firebase-with-flank.yml + parameters: + automationAppApkPath: "$(Pipeline.Workspace)/msalautomationapks-AutoBroker-RC-LocalApk/$(msalApp)" + automationAppTestApkPath: "$(Pipeline.Workspace)/msalautomationapks-AutoBroker-RC-LocalApk/$(msalTestApp)" + testTargetPackages: "package com.microsoft.identity.client.msal.automationapp.testpass.msalonly.nativeauth" + resultsHistoryName: "$(resultsHistoryName)" + resultsDir: "nativeauth-tests-$(Build.BuildId)" + otherFiles: "/sdcard/NativeAuthSampleApp.apk=$(Pipeline.Workspace)/nativeauthsampleapk-RC/$(nativeAuthSampleApk),\ + /data/local/tmp/LabAuth.pfx=$(Build.SourcesDirectory)/LabAuth.pfx" + firebaseDeviceId: ${{ parameters.firebaseDeviceId }} + firebaseDeviceAndroidVersion: ${{ parameters.firebaseDeviceAndroidVersion }} + testRunTitle: "NativeAuth UI Automation (API ${{ parameters.firebaseDeviceAndroidVersion }}) # $(Build.BuildNumber)" + extraTarget: "" + flankShards: 1 diff --git a/azure-pipelines/ui-automation/templates/build-msal-automation-app.yml b/azure-pipelines/ui-automation/templates/build-msal-automation-app.yml index 0f4adec5..b9ccac2e 100644 --- a/azure-pipelines/ui-automation/templates/build-msal-automation-app.yml +++ b/azure-pipelines/ui-automation/templates/build-msal-automation-app.yml @@ -42,6 +42,9 @@ parameters: - name: preInstallLtw type: boolean default: false + - name: nativeAuthConfigString + type: string + default: "" jobs: - job: msalautomationapp${{ parameters.packageVariant }}${{ parameters.msalFlavor }} @@ -50,7 +53,6 @@ jobs: vmImage: ubuntu-latest variables: - group: MSIDLABVARS - - group: devex-ciam-test - name: LabAppCert value: "/data/local/tmp/LabAuth.pfx" steps: @@ -66,7 +68,10 @@ jobs: inputs: targetType: inline script: | - $assembleTask = "msalautomationapp:assemble${{ parameters.msalFlavor }}${{ parameters.brokerApp }}Debug -PlabSecret=$(LabAppCert) -PbrokerSource=${{ parameters.brokerSource }} -PbrokerUpdateSource=${{ parameters.brokerUpdateSource }} -PnativeAuthConfigString=$(NATIVE_AUTH_CONFIG_STRING)" + $assembleTask = "msalautomationapp:assemble${{ parameters.msalFlavor }}${{ parameters.brokerApp }}Debug -PlabSecret=$(LabAppCert) -PbrokerSource=${{ parameters.brokerSource }} -PbrokerUpdateSource=${{ parameters.brokerUpdateSource }}" + if ("${{ parameters.nativeAuthConfigString }}" -ne "") { + $assembleTask = $assembleTask + " -PnativeAuthConfigString=${{ parameters.nativeAuthConfigString }}" + } if (("${{ parameters.msalVersion }}" -ne "")) { $assembleTask = $assembleTask + " -PdistMsalVersion=" + "${{ parameters.msalVersion }}" } @@ -84,7 +89,10 @@ jobs: inputs: targetType: inline script: | - $assembleTestTask = "msalautomationapp:assemble${{ parameters.msalFlavor }}${{ parameters.brokerApp }}DebugAndroidTest -PlabSecret=$(LabAppCert) -PnativeAuthConfigString=$(NATIVE_AUTH_CONFIG_STRING)" + $assembleTestTask = "msalautomationapp:assemble${{ parameters.msalFlavor }}${{ parameters.brokerApp }}DebugAndroidTest -PlabSecret=$(LabAppCert)" + if ("${{ parameters.nativeAuthConfigString }}" -ne "") { + $assembleTestTask = $assembleTestTask + " -PnativeAuthConfigString=${{ parameters.nativeAuthConfigString }}" + } if (("${{ parameters.msalVersion }}" -ne "")) { $assembleTestTask = $assembleTestTask + " -PdistMsalVersion=" + "${{ parameters.msalVersion }}" }