From 8edcf00829a9df02abd36938fb2d31dfd16bd942 Mon Sep 17 00:00:00 2001 From: ramsessanchez <63934382+ramsessanchez@users.noreply.github.com> Date: Thu, 21 May 2026 14:45:48 -0700 Subject: [PATCH 01/26] fix: add missing image property to daily-ci pipeline pool configuration Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .azure-pipelines/daily-ci-build.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.azure-pipelines/daily-ci-build.yml b/.azure-pipelines/daily-ci-build.yml index 885f89ee..6fcd8672 100644 --- a/.azure-pipelines/daily-ci-build.yml +++ b/.azure-pipelines/daily-ci-build.yml @@ -21,11 +21,12 @@ extends: parameters: pool: name: Azure-Pipelines-1ESPT-ExDShared + image: ubuntu-latest os: linux sdl: sourceAnalysisPool: name: Azure-Pipelines-1ESPT-ExDShared - image: windows-2022 + image: windows-latest os: windows credscan: enabled: true From 0e23139837b46edacf632f5bfe57424bcb62235d Mon Sep 17 00:00:00 2001 From: ramsessanchez <63934382+ramsessanchez@users.noreply.github.com> Date: Thu, 21 May 2026 14:51:52 -0700 Subject: [PATCH 02/26] fix: update spotbugs plugin to 6.5.4 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 6dc986e8..072d2460 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ plugins { id 'maven-publish' id 'signing' id 'jacoco' - id 'com.github.spotbugs' version '6.2.5' + id 'com.github.spotbugs' version '6.5.4' id "org.sonarqube" version "7.2.2.6593" } From da7898bde9813792c99e98b10695ab5d13dc7fa9 Mon Sep 17 00:00:00 2001 From: ramsessanchez <63934382+ramsessanchez@users.noreply.github.com> Date: Thu, 21 May 2026 14:56:58 -0700 Subject: [PATCH 03/26] fix: update sonarqube plugin to 7.3.0.8198 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 072d2460..d038af23 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ plugins { id 'signing' id 'jacoco' id 'com.github.spotbugs' version '6.5.4' - id "org.sonarqube" version "7.2.2.6593" + id "org.sonarqube" version "7.3.0.8198" } From 7b6fb9910ff845725cb24d9e6b3e4a4cfa360cc1 Mon Sep 17 00:00:00 2001 From: Ramses Sanchez-Hernandez <63934382+ramsessanchez@users.noreply.github.com> Date: Fri, 22 May 2026 11:47:27 -0700 Subject: [PATCH 04/26] Update SpotBugs plugin version to 6.5.5 --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index d038af23..bed9a08f 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ plugins { id 'maven-publish' id 'signing' id 'jacoco' - id 'com.github.spotbugs' version '6.5.4' + id 'com.github.spotbugs' version '6.5.5' id "org.sonarqube" version "7.3.0.8198" } From 0c1be82d3c074719844444c4e388fb471a15b3aa Mon Sep 17 00:00:00 2001 From: ramsessanchez <63934382+ramsessanchez@users.noreply.github.com> Date: Fri, 22 May 2026 11:54:25 -0700 Subject: [PATCH 05/26] fix: add pluginManagement repositories to settings.gradle Adds gradlePluginPortal() and mavenCentral() as plugin repositories to ensure plugins can be resolved in restricted network environments like the Azure DevOps 1ESPT pipeline agents. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- settings.gradle | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/settings.gradle b/settings.gradle index ab8f7824..c308a25d 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,3 +1,10 @@ +pluginManagement { + repositories { + gradlePluginPortal() + mavenCentral() + } +} + /* * This file was generated by the Gradle 'init' task. * From 5c84da030708899432bd2f620f9d75c99c2eeacf Mon Sep 17 00:00:00 2001 From: Ramses Sanchez-Hernandez <63934382+ramsessanchez@users.noreply.github.com> Date: Fri, 22 May 2026 12:00:18 -0700 Subject: [PATCH 06/26] Downgrade SpotBugs plugin version to 6.5.4 --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index bed9a08f..d038af23 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ plugins { id 'maven-publish' id 'signing' id 'jacoco' - id 'com.github.spotbugs' version '6.5.5' + id 'com.github.spotbugs' version '6.5.4' id "org.sonarqube" version "7.3.0.8198" } From 5f8ae021d7cb2760f52740364e74308c0b41ceb5 Mon Sep 17 00:00:00 2001 From: ramsessanchez <63934382+ramsessanchez@users.noreply.github.com> Date: Fri, 22 May 2026 12:17:10 -0700 Subject: [PATCH 07/26] fix: make spotbugs/sonarqube plugins conditional for restricted CI environments Moves spotbugs and sonarqube from the plugins block to buildscript dependencies with conditional application. Pass -PskipCodeAnalysis to skip loading these plugins in environments without external Maven repository access (e.g., ADO 1ESPT pipeline agents). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .azure-pipelines/daily-ci-build.yml | 4 +- build.gradle | 64 +++++++++++++++++++---------- 2 files changed, 44 insertions(+), 24 deletions(-) diff --git a/.azure-pipelines/daily-ci-build.yml b/.azure-pipelines/daily-ci-build.yml index 6fcd8672..8aa27a10 100644 --- a/.azure-pipelines/daily-ci-build.yml +++ b/.azure-pipelines/daily-ci-build.yml @@ -50,10 +50,10 @@ extends: jdkArchitectureOption: 'x64' jdkSourceOption: 'PreInstalled' - - script: chmod +x gradlew && ./gradlew assemble + - script: chmod +x gradlew && ./gradlew assemble -PskipCodeAnalysis displayName: Build SDK workingDirectory: $(Build.SourcesDirectory) - - script: ./gradlew test + - script: ./gradlew test -PskipCodeAnalysis displayName: Run unit tests workingDirectory: $(Build.SourcesDirectory) diff --git a/build.gradle b/build.gradle index d038af23..0b8dc720 100644 --- a/build.gradle +++ b/build.gradle @@ -1,3 +1,16 @@ +buildscript { + repositories { + gradlePluginPortal() + mavenCentral() + } + if (!hasProperty('skipCodeAnalysis')) { + dependencies { + classpath 'com.github.spotbugs.snom:spotbugs-gradle-plugin:6.5.4' + classpath 'org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:7.3.0.8198' + } + } +} + plugins { // Apply the java-library plugin to add support for Java Library id 'java-library' @@ -5,11 +18,14 @@ plugins { id 'maven-publish' id 'signing' id 'jacoco' - id 'com.github.spotbugs' version '6.5.4' - id "org.sonarqube" version "7.3.0.8198" } +if (!project.hasProperty('skipCodeAnalysis')) { + apply plugin: 'com.github.spotbugs' + apply plugin: 'org.sonarqube' +} + java { modularity.inferModulePath = true withSourcesJar() @@ -29,24 +45,26 @@ jacoco { toolVersion = "0.8.12" } -spotbugsMain { - excludeFilter = file("spotBugsExcludeFilter.xml") - reports { - html { - required - outputLocation = file("$buildDir/reports/spotbugs/main/spotbugs.html") - stylesheet = 'fancy-hist.xsl' +if (!project.hasProperty('skipCodeAnalysis')) { + spotbugsMain { + excludeFilter = file("spotBugsExcludeFilter.xml") + reports { + html { + required + outputLocation = file("$buildDir/reports/spotbugs/main/spotbugs.html") + stylesheet = 'fancy-hist.xsl' + } } } -} -spotbugsTest { - excludeFilter = file("spotBugsExcludeFilter.xml") - reports { - html { - required - outputLocation = file("$buildDir/reports/spotbugs/test/spotbugs.html") - stylesheet = 'fancy-hist.xsl' + spotbugsTest { + excludeFilter = file("spotBugsExcludeFilter.xml") + reports { + html { + required + outputLocation = file("$buildDir/reports/spotbugs/test/spotbugs.html") + stylesheet = 'fancy-hist.xsl' + } } } } @@ -83,11 +101,13 @@ def pomConfig = { } } -sonarqube { - properties { - property "sonar.projectKey", "microsoftgraph_msgraph-sdk-java-core" - property "sonar.organization", "microsoftgraph2" - property "sonar.host.url", "https://sonarcloud.io" +if (!project.hasProperty('skipCodeAnalysis')) { + sonarqube { + properties { + property "sonar.projectKey", "microsoftgraph_msgraph-sdk-java-core" + property "sonar.organization", "microsoftgraph2" + property "sonar.host.url", "https://sonarcloud.io" + } } } From 14a9f98ecdfef3479d58a597079891d68d2ae585 Mon Sep 17 00:00:00 2001 From: Ramses Sanchez-Hernandez <63934382+ramsessanchez@users.noreply.github.com> Date: Fri, 22 May 2026 12:18:58 -0700 Subject: [PATCH 08/26] Change build command from 'assemble' to 'build' --- .azure-pipelines/daily-ci-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.azure-pipelines/daily-ci-build.yml b/.azure-pipelines/daily-ci-build.yml index 8aa27a10..8a6794e7 100644 --- a/.azure-pipelines/daily-ci-build.yml +++ b/.azure-pipelines/daily-ci-build.yml @@ -50,7 +50,7 @@ extends: jdkArchitectureOption: 'x64' jdkSourceOption: 'PreInstalled' - - script: chmod +x gradlew && ./gradlew assemble -PskipCodeAnalysis + - script: chmod +x gradlew && ./gradlew build -PskipCodeAnalysis displayName: Build SDK workingDirectory: $(Build.SourcesDirectory) From 55a9bb9278c39a08b0395a1ea111f611a4f38a3e Mon Sep 17 00:00:00 2001 From: ramsessanchez <63934382+ramsessanchez@users.noreply.github.com> Date: Fri, 22 May 2026 12:25:28 -0700 Subject: [PATCH 09/26] fix: use system properties for skipCodeAnalysis flag Project properties (-P) are not available in the buildscript block during early Gradle evaluation. Switch to system properties (-D) which are available everywhere via System.getProperty(). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .azure-pipelines/daily-ci-build.yml | 4 ++-- build.gradle | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.azure-pipelines/daily-ci-build.yml b/.azure-pipelines/daily-ci-build.yml index 8a6794e7..2fc251ee 100644 --- a/.azure-pipelines/daily-ci-build.yml +++ b/.azure-pipelines/daily-ci-build.yml @@ -50,10 +50,10 @@ extends: jdkArchitectureOption: 'x64' jdkSourceOption: 'PreInstalled' - - script: chmod +x gradlew && ./gradlew build -PskipCodeAnalysis + - script: chmod +x gradlew && ./gradlew build -DskipCodeAnalysis=true displayName: Build SDK workingDirectory: $(Build.SourcesDirectory) - - script: ./gradlew test -PskipCodeAnalysis + - script: ./gradlew test -DskipCodeAnalysis=true displayName: Run unit tests workingDirectory: $(Build.SourcesDirectory) diff --git a/build.gradle b/build.gradle index 0b8dc720..7704db54 100644 --- a/build.gradle +++ b/build.gradle @@ -3,7 +3,7 @@ buildscript { gradlePluginPortal() mavenCentral() } - if (!hasProperty('skipCodeAnalysis')) { + if (System.getProperty('skipCodeAnalysis') == null) { dependencies { classpath 'com.github.spotbugs.snom:spotbugs-gradle-plugin:6.5.4' classpath 'org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:7.3.0.8198' @@ -21,7 +21,7 @@ plugins { } -if (!project.hasProperty('skipCodeAnalysis')) { +if (System.getProperty('skipCodeAnalysis') == null) { apply plugin: 'com.github.spotbugs' apply plugin: 'org.sonarqube' } @@ -45,7 +45,7 @@ jacoco { toolVersion = "0.8.12" } -if (!project.hasProperty('skipCodeAnalysis')) { +if (System.getProperty('skipCodeAnalysis') == null) { spotbugsMain { excludeFilter = file("spotBugsExcludeFilter.xml") reports { @@ -101,7 +101,7 @@ def pomConfig = { } } -if (!project.hasProperty('skipCodeAnalysis')) { +if (System.getProperty('skipCodeAnalysis') == null) { sonarqube { properties { property "sonar.projectKey", "microsoftgraph_msgraph-sdk-java-core" From 463a4a61096499bdc4504af4e6c6ee1b4c6a4d29 Mon Sep 17 00:00:00 2001 From: ramsessanchez <63934382+ramsessanchez@users.noreply.github.com> Date: Fri, 22 May 2026 14:48:41 -0700 Subject: [PATCH 10/26] fix: use Gradle@4 ADO task for daily-ci build Replace shell script steps with the managed Gradle@4 task which handles Java setup, dependency resolution, and JUnit test result publishing natively within ADO infrastructure. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .azure-pipelines/daily-ci-build.yml | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/.azure-pipelines/daily-ci-build.yml b/.azure-pipelines/daily-ci-build.yml index 2fc251ee..3a7b6676 100644 --- a/.azure-pipelines/daily-ci-build.yml +++ b/.azure-pipelines/daily-ci-build.yml @@ -43,17 +43,15 @@ extends: - checkout: self submodules: recursive - - task: JavaToolInstaller@0 - displayName: Set up Java + - task: Gradle@4 + displayName: Build and Test SDK inputs: - versionSpec: '17' + gradleWrapperFile: 'gradlew' + workingDirectory: '$(Build.SourcesDirectory)' + tasks: 'assemble test' + options: '-DskipCodeAnalysis=true --no-daemon' + publishJUnitResults: true + testResultsFiles: '**/TEST-*.xml' + javaHomeOption: 'JDKVersion' + jdkVersionOption: '1.17' jdkArchitectureOption: 'x64' - jdkSourceOption: 'PreInstalled' - - - script: chmod +x gradlew && ./gradlew build -DskipCodeAnalysis=true - displayName: Build SDK - workingDirectory: $(Build.SourcesDirectory) - - - script: ./gradlew test -DskipCodeAnalysis=true - displayName: Run unit tests - workingDirectory: $(Build.SourcesDirectory) From f912749d5026f6c8c2ede72dd68c962ba3c764d3 Mon Sep 17 00:00:00 2001 From: ramsessanchez <63934382+ramsessanchez@users.noreply.github.com> Date: Fri, 22 May 2026 14:50:34 -0700 Subject: [PATCH 11/26] revert: restore original plugins block in build.gradle Reverts the conditional buildscript/skipCodeAnalysis changes now that the daily-ci pipeline uses the managed Gradle@4 ADO task instead. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- build.gradle | 64 ++++++++++++++++++---------------------------------- 1 file changed, 22 insertions(+), 42 deletions(-) diff --git a/build.gradle b/build.gradle index 7704db54..d038af23 100644 --- a/build.gradle +++ b/build.gradle @@ -1,16 +1,3 @@ -buildscript { - repositories { - gradlePluginPortal() - mavenCentral() - } - if (System.getProperty('skipCodeAnalysis') == null) { - dependencies { - classpath 'com.github.spotbugs.snom:spotbugs-gradle-plugin:6.5.4' - classpath 'org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:7.3.0.8198' - } - } -} - plugins { // Apply the java-library plugin to add support for Java Library id 'java-library' @@ -18,14 +5,11 @@ plugins { id 'maven-publish' id 'signing' id 'jacoco' + id 'com.github.spotbugs' version '6.5.4' + id "org.sonarqube" version "7.3.0.8198" } -if (System.getProperty('skipCodeAnalysis') == null) { - apply plugin: 'com.github.spotbugs' - apply plugin: 'org.sonarqube' -} - java { modularity.inferModulePath = true withSourcesJar() @@ -45,26 +29,24 @@ jacoco { toolVersion = "0.8.12" } -if (System.getProperty('skipCodeAnalysis') == null) { - spotbugsMain { - excludeFilter = file("spotBugsExcludeFilter.xml") - reports { - html { - required - outputLocation = file("$buildDir/reports/spotbugs/main/spotbugs.html") - stylesheet = 'fancy-hist.xsl' - } +spotbugsMain { + excludeFilter = file("spotBugsExcludeFilter.xml") + reports { + html { + required + outputLocation = file("$buildDir/reports/spotbugs/main/spotbugs.html") + stylesheet = 'fancy-hist.xsl' } } +} - spotbugsTest { - excludeFilter = file("spotBugsExcludeFilter.xml") - reports { - html { - required - outputLocation = file("$buildDir/reports/spotbugs/test/spotbugs.html") - stylesheet = 'fancy-hist.xsl' - } +spotbugsTest { + excludeFilter = file("spotBugsExcludeFilter.xml") + reports { + html { + required + outputLocation = file("$buildDir/reports/spotbugs/test/spotbugs.html") + stylesheet = 'fancy-hist.xsl' } } } @@ -101,13 +83,11 @@ def pomConfig = { } } -if (System.getProperty('skipCodeAnalysis') == null) { - sonarqube { - properties { - property "sonar.projectKey", "microsoftgraph_msgraph-sdk-java-core" - property "sonar.organization", "microsoftgraph2" - property "sonar.host.url", "https://sonarcloud.io" - } +sonarqube { + properties { + property "sonar.projectKey", "microsoftgraph_msgraph-sdk-java-core" + property "sonar.organization", "microsoftgraph2" + property "sonar.host.url", "https://sonarcloud.io" } } From e2fb7c31019bec5278523de26f3208fddcb3d99e Mon Sep 17 00:00:00 2001 From: ramsessanchez <63934382+ramsessanchez@users.noreply.github.com> Date: Fri, 22 May 2026 16:03:39 -0700 Subject: [PATCH 12/26] fix: match Go SDK daily-ci pool config (remove image property) The Go SDK daily-ci pipeline works with the same pool without specifying an image. Removing the image property to use the pool's default image which has internet access. Also removes the skipCodeAnalysis flag since build.gradle uses the standard plugins block. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .azure-pipelines/daily-ci-build.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.azure-pipelines/daily-ci-build.yml b/.azure-pipelines/daily-ci-build.yml index 3a7b6676..604501b0 100644 --- a/.azure-pipelines/daily-ci-build.yml +++ b/.azure-pipelines/daily-ci-build.yml @@ -21,12 +21,11 @@ extends: parameters: pool: name: Azure-Pipelines-1ESPT-ExDShared - image: ubuntu-latest os: linux sdl: sourceAnalysisPool: name: Azure-Pipelines-1ESPT-ExDShared - image: windows-latest + image: windows-2022 os: windows credscan: enabled: true @@ -49,7 +48,7 @@ extends: gradleWrapperFile: 'gradlew' workingDirectory: '$(Build.SourcesDirectory)' tasks: 'assemble test' - options: '-DskipCodeAnalysis=true --no-daemon' + options: '--no-daemon' publishJUnitResults: true testResultsFiles: '**/TEST-*.xml' javaHomeOption: 'JDKVersion' From aae3f80c18e752c153c35c3de3626adc31ed2c72 Mon Sep 17 00:00:00 2001 From: ramsessanchez <63934382+ramsessanchez@users.noreply.github.com> Date: Fri, 22 May 2026 16:09:43 -0700 Subject: [PATCH 13/26] fix: enable 1ES internal module proxy for Java dependency resolution Adds the java.internalModuleProxy feature flag (matching the Go SDK's golang.internalModuleProxy pattern) to route dependency resolution through the 1ES internal proxy, bypassing network isolation on the Azure-Pipelines-1ESPT-ExDShared pool. Also restores image: ubuntu-latest to match the working Go SDK pipeline configuration. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .azure-pipelines/daily-ci-build.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.azure-pipelines/daily-ci-build.yml b/.azure-pipelines/daily-ci-build.yml index 604501b0..5815c5f5 100644 --- a/.azure-pipelines/daily-ci-build.yml +++ b/.azure-pipelines/daily-ci-build.yml @@ -21,7 +21,12 @@ extends: parameters: pool: name: Azure-Pipelines-1ESPT-ExDShared + image: ubuntu-latest os: linux + featureFlags: + java: + internalModuleProxy: + enabled: true sdl: sourceAnalysisPool: name: Azure-Pipelines-1ESPT-ExDShared From 0c2ee5dc023dd444479832a5d41de45b562532ff Mon Sep 17 00:00:00 2001 From: ramsessanchez <63934382+ramsessanchez@users.noreply.github.com> Date: Fri, 22 May 2026 16:23:08 -0700 Subject: [PATCH 14/26] test: strip spotbugs/sonarqube plugins in daily-ci to test core dep resolution Adds a sed step to remove the spotbugs and sonarqube plugin declarations from build.gradle before running Gradle on network-isolated 1ES agents. This tests whether the java.internalModuleProxy feature flag enables Maven Central access for core dependencies (okhttp, etc.). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .azure-pipelines/daily-ci-build.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.azure-pipelines/daily-ci-build.yml b/.azure-pipelines/daily-ci-build.yml index 5815c5f5..fdf8f82e 100644 --- a/.azure-pipelines/daily-ci-build.yml +++ b/.azure-pipelines/daily-ci-build.yml @@ -47,6 +47,11 @@ extends: - checkout: self submodules: recursive + - script: | + sed -i "/com.github.spotbugs/d" build.gradle + sed -i "/org.sonarqube/d" build.gradle + displayName: Remove code analysis plugins (not available in network-isolated agents) + - task: Gradle@4 displayName: Build and Test SDK inputs: From 9b867d39b8c0544273b3669bfdfb9f5edcff46ff Mon Sep 17 00:00:00 2001 From: ramsessanchez <63934382+ramsessanchez@users.noreply.github.com> Date: Fri, 22 May 2026 16:27:52 -0700 Subject: [PATCH 15/26] fix: also strip spotbugs/sonarqube config blocks from build.gradle The previous sed only removed plugin declarations but left the spotbugsMain, spotbugsTest, and sonarqube configuration blocks which reference the removed plugins. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .azure-pipelines/daily-ci-build.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.azure-pipelines/daily-ci-build.yml b/.azure-pipelines/daily-ci-build.yml index fdf8f82e..d930f227 100644 --- a/.azure-pipelines/daily-ci-build.yml +++ b/.azure-pipelines/daily-ci-build.yml @@ -50,6 +50,9 @@ extends: - script: | sed -i "/com.github.spotbugs/d" build.gradle sed -i "/org.sonarqube/d" build.gradle + sed -i "/spotbugsMain/,/^}/d" build.gradle + sed -i "/spotbugsTest/,/^}/d" build.gradle + sed -i "/sonarqube {/,/^}/d" build.gradle displayName: Remove code analysis plugins (not available in network-isolated agents) - task: Gradle@4 From b36b5739c6620fb4372e9fbc14999c19e041790a Mon Sep 17 00:00:00 2001 From: ramsessanchez <63934382+ramsessanchez@users.noreply.github.com> Date: Fri, 22 May 2026 16:35:05 -0700 Subject: [PATCH 16/26] test: add networkIsolation overrideAllowRules for Maven/Gradle repos Attempts to whitelist Maven Central, Gradle Plugin Portal, and Gradle services endpoints through 1ES network isolation override rules. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .azure-pipelines/daily-ci-build.yml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/.azure-pipelines/daily-ci-build.yml b/.azure-pipelines/daily-ci-build.yml index d930f227..3cdb597b 100644 --- a/.azure-pipelines/daily-ci-build.yml +++ b/.azure-pipelines/daily-ci-build.yml @@ -27,6 +27,24 @@ extends: java: internalModuleProxy: enabled: true + networkIsolation: + overrideAllowRules: + - host: repo.maven.apache.org + port: 443 + protocols: + - https + - host: plugins.gradle.org + port: 443 + protocols: + - https + - host: services.gradle.org + port: 443 + protocols: + - https + - host: repo1.maven.org + port: 443 + protocols: + - https sdl: sourceAnalysisPool: name: Azure-Pipelines-1ESPT-ExDShared From 700ad67c01dbf6af2dcc70df78dffdeb3def9e57 Mon Sep 17 00:00:00 2001 From: Ramses Sanchez-Hernandez <63934382+ramsessanchez@users.noreply.github.com> Date: Fri, 22 May 2026 17:10:39 -0700 Subject: [PATCH 17/26] Add network isolation policy to CI build pipeline --- .azure-pipelines/daily-ci-build.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.azure-pipelines/daily-ci-build.yml b/.azure-pipelines/daily-ci-build.yml index 3cdb597b..72da4142 100644 --- a/.azure-pipelines/daily-ci-build.yml +++ b/.azure-pipelines/daily-ci-build.yml @@ -19,6 +19,8 @@ resources: extends: template: v1/1ES.Unofficial.PipelineTemplate.yml@1ESPipelineTemplates parameters: + settings: + networkIsolationPolicy: Permissive pool: name: Azure-Pipelines-1ESPT-ExDShared image: ubuntu-latest From ddd0e8f0a11f359ac2a8cc5e7c0107bcee03219b Mon Sep 17 00:00:00 2001 From: ramsessanchez <63934382+ramsessanchez@users.noreply.github.com> Date: Fri, 22 May 2026 17:11:41 -0700 Subject: [PATCH 18/26] fix: correct YAML indentation for settings.networkIsolationPolicy Moves settings under parameters and removes the rejected networkIsolation.overrideAllowRules parameter. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .azure-pipelines/daily-ci-build.yml | 22 ++-------------------- 1 file changed, 2 insertions(+), 20 deletions(-) diff --git a/.azure-pipelines/daily-ci-build.yml b/.azure-pipelines/daily-ci-build.yml index 72da4142..00c8738c 100644 --- a/.azure-pipelines/daily-ci-build.yml +++ b/.azure-pipelines/daily-ci-build.yml @@ -19,8 +19,8 @@ resources: extends: template: v1/1ES.Unofficial.PipelineTemplate.yml@1ESPipelineTemplates parameters: - settings: - networkIsolationPolicy: Permissive + settings: + networkIsolationPolicy: Permissive pool: name: Azure-Pipelines-1ESPT-ExDShared image: ubuntu-latest @@ -29,24 +29,6 @@ extends: java: internalModuleProxy: enabled: true - networkIsolation: - overrideAllowRules: - - host: repo.maven.apache.org - port: 443 - protocols: - - https - - host: plugins.gradle.org - port: 443 - protocols: - - https - - host: services.gradle.org - port: 443 - protocols: - - https - - host: repo1.maven.org - port: 443 - protocols: - - https sdl: sourceAnalysisPool: name: Azure-Pipelines-1ESPT-ExDShared From 1c3dd9326777d89f17d37990a5d1452eaa07b2e8 Mon Sep 17 00:00:00 2001 From: ramsessanchez <63934382+ramsessanchez@users.noreply.github.com> Date: Fri, 22 May 2026 17:41:15 -0700 Subject: [PATCH 19/26] fix: route Gradle deps through CFS upstream Azure Artifacts feed Generates an init.gradle script that redirects all Gradle repositories (both dependencies and plugins) to the GraphDeveloperExperiences_Public Azure Artifacts feed, which has Maven Central as a CFS upstream. This complies with network isolation on 1ES agents by routing through the approved Centralized Feed Service instead of public endpoints. Also removes failed featureFlags and networkIsolationPolicy parameters that are not supported for Java in 1ES Pipeline Templates. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .azure-pipelines/daily-ci-build.yml | 33 ++++++++++++++++++++++------- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/.azure-pipelines/daily-ci-build.yml b/.azure-pipelines/daily-ci-build.yml index 00c8738c..1abc7999 100644 --- a/.azure-pipelines/daily-ci-build.yml +++ b/.azure-pipelines/daily-ci-build.yml @@ -19,16 +19,10 @@ resources: extends: template: v1/1ES.Unofficial.PipelineTemplate.yml@1ESPipelineTemplates parameters: - settings: - networkIsolationPolicy: Permissive pool: name: Azure-Pipelines-1ESPT-ExDShared image: ubuntu-latest os: linux - featureFlags: - java: - internalModuleProxy: - enabled: true sdl: sourceAnalysisPool: name: Azure-Pipelines-1ESPT-ExDShared @@ -55,7 +49,30 @@ extends: sed -i "/spotbugsMain/,/^}/d" build.gradle sed -i "/spotbugsTest/,/^}/d" build.gradle sed -i "/sonarqube {/,/^}/d" build.gradle - displayName: Remove code analysis plugins (not available in network-isolated agents) + displayName: Remove code analysis plugins (not available on network-isolated agents) + + - script: | + cat > init.gradle << 'EOF' + allprojects { + repositories { + clear() + maven { + url 'https://microsoftgraph.pkgs.visualstudio.com/0985d294-5762-4bc2-a565-161ef349ca3e/_packaging/GraphDeveloperExperiences_Public/maven/v1' + } + } + } + settingsEvaluated { settings -> + settings.pluginManagement { + repositories { + clear() + maven { + url 'https://microsoftgraph.pkgs.visualstudio.com/0985d294-5762-4bc2-a565-161ef349ca3e/_packaging/GraphDeveloperExperiences_Public/maven/v1' + } + } + } + } + EOF + displayName: Configure Gradle to use CFS upstream feed - task: Gradle@4 displayName: Build and Test SDK @@ -63,7 +80,7 @@ extends: gradleWrapperFile: 'gradlew' workingDirectory: '$(Build.SourcesDirectory)' tasks: 'assemble test' - options: '--no-daemon' + options: '--no-daemon --init-script init.gradle' publishJUnitResults: true testResultsFiles: '**/TEST-*.xml' javaHomeOption: 'JDKVersion' From c31d3f460e519c849c3641c1fee1c8106afdc618 Mon Sep 17 00:00:00 2001 From: ramsessanchez <63934382+ramsessanchez@users.noreply.github.com> Date: Fri, 22 May 2026 17:42:38 -0700 Subject: [PATCH 20/26] fix: remove sed steps, let plugins resolve through CFS feed Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .azure-pipelines/daily-ci-build.yml | 8 -------- 1 file changed, 8 deletions(-) diff --git a/.azure-pipelines/daily-ci-build.yml b/.azure-pipelines/daily-ci-build.yml index 1abc7999..73878c0b 100644 --- a/.azure-pipelines/daily-ci-build.yml +++ b/.azure-pipelines/daily-ci-build.yml @@ -43,14 +43,6 @@ extends: - checkout: self submodules: recursive - - script: | - sed -i "/com.github.spotbugs/d" build.gradle - sed -i "/org.sonarqube/d" build.gradle - sed -i "/spotbugsMain/,/^}/d" build.gradle - sed -i "/spotbugsTest/,/^}/d" build.gradle - sed -i "/sonarqube {/,/^}/d" build.gradle - displayName: Remove code analysis plugins (not available on network-isolated agents) - - script: | cat > init.gradle << 'EOF' allprojects { From 61a19e6691083b7d6483824b2782948b3a159885 Mon Sep 17 00:00:00 2001 From: ramsessanchez <63934382+ramsessanchez@users.noreply.github.com> Date: Fri, 22 May 2026 17:43:46 -0700 Subject: [PATCH 21/26] fix: add CFS upstream feed to build.gradle and settings.gradle Adds the GraphDeveloperExperiences_Public Azure Artifacts feed (with Maven Central upstream) to both repositories and publishing.repositories in build.gradle, and to pluginManagement in settings.gradle. Removes the init.gradle pipeline workaround in favor of direct configuration. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .azure-pipelines/daily-ci-build.yml | 25 +------------------------ build.gradle | 16 ++++++++++++++++ settings.gradle | 8 ++++++++ 3 files changed, 25 insertions(+), 24 deletions(-) diff --git a/.azure-pipelines/daily-ci-build.yml b/.azure-pipelines/daily-ci-build.yml index 73878c0b..be17d152 100644 --- a/.azure-pipelines/daily-ci-build.yml +++ b/.azure-pipelines/daily-ci-build.yml @@ -43,36 +43,13 @@ extends: - checkout: self submodules: recursive - - script: | - cat > init.gradle << 'EOF' - allprojects { - repositories { - clear() - maven { - url 'https://microsoftgraph.pkgs.visualstudio.com/0985d294-5762-4bc2-a565-161ef349ca3e/_packaging/GraphDeveloperExperiences_Public/maven/v1' - } - } - } - settingsEvaluated { settings -> - settings.pluginManagement { - repositories { - clear() - maven { - url 'https://microsoftgraph.pkgs.visualstudio.com/0985d294-5762-4bc2-a565-161ef349ca3e/_packaging/GraphDeveloperExperiences_Public/maven/v1' - } - } - } - } - EOF - displayName: Configure Gradle to use CFS upstream feed - - task: Gradle@4 displayName: Build and Test SDK inputs: gradleWrapperFile: 'gradlew' workingDirectory: '$(Build.SourcesDirectory)' tasks: 'assemble test' - options: '--no-daemon --init-script init.gradle' + options: '--no-daemon' publishJUnitResults: true testResultsFiles: '**/TEST-*.xml' javaHomeOption: 'JDKVersion' diff --git a/build.gradle b/build.gradle index d038af23..063360f5 100644 --- a/build.gradle +++ b/build.gradle @@ -69,6 +69,14 @@ sourceSets { repositories { // You can declare any Maven/Ivy/file repository here. mavenCentral() + maven { + url 'https://microsoftgraph.pkgs.visualstudio.com/0985d294-5762-4bc2-a565-161ef349ca3e/_packaging/GraphDeveloperExperiences_Public/maven/v1' + name 'GraphDeveloperExperiences_Public' + credentials(PasswordCredentials) + authentication { + basic(BasicAuthentication) + } + } } apply from: "gradle/dependencies.gradle" @@ -119,6 +127,14 @@ publishing { name = "ADO" url = layout.buildDirectory.dir("publishing-repository") } + maven { + url 'https://microsoftgraph.pkgs.visualstudio.com/0985d294-5762-4bc2-a565-161ef349ca3e/_packaging/GraphDeveloperExperiences_Public/maven/v1' + name 'GraphDeveloperExperiences_Public' + credentials(PasswordCredentials) + authentication { + basic(BasicAuthentication) + } + } } } diff --git a/settings.gradle b/settings.gradle index c308a25d..be8166ff 100644 --- a/settings.gradle +++ b/settings.gradle @@ -2,6 +2,14 @@ pluginManagement { repositories { gradlePluginPortal() mavenCentral() + maven { + url 'https://microsoftgraph.pkgs.visualstudio.com/0985d294-5762-4bc2-a565-161ef349ca3e/_packaging/GraphDeveloperExperiences_Public/maven/v1' + name 'GraphDeveloperExperiences_Public' + credentials(PasswordCredentials) + authentication { + basic(BasicAuthentication) + } + } } } From d4701eb438750889fedcb3e945eefbb131f7c930 Mon Sep 17 00:00:00 2001 From: ramsessanchez <63934382+ramsessanchez@users.noreply.github.com> Date: Fri, 22 May 2026 17:45:21 -0700 Subject: [PATCH 22/26] fix: add Gradle credentials step for CFS feed authentication Writes GraphDeveloperExperiences_Public credentials to ~/.gradle/gradle.properties using System.AccessToken for authentication against the Azure Artifacts CFS upstream feed. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .azure-pipelines/daily-ci-build.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.azure-pipelines/daily-ci-build.yml b/.azure-pipelines/daily-ci-build.yml index be17d152..ae51c0bf 100644 --- a/.azure-pipelines/daily-ci-build.yml +++ b/.azure-pipelines/daily-ci-build.yml @@ -43,6 +43,12 @@ extends: - checkout: self submodules: recursive + - script: | + mkdir -p ~/.gradle + echo "GraphDeveloperExperiences_PublicUsername=microsoftgraph" >> ~/.gradle/gradle.properties + echo "GraphDeveloperExperiences_PublicPassword=$(System.AccessToken)" >> ~/.gradle/gradle.properties + displayName: Configure Gradle credentials for CFS feed + - task: Gradle@4 displayName: Build and Test SDK inputs: From 556ebc009fb596bb18b3f7204867c619d3dc97d2 Mon Sep 17 00:00:00 2001 From: ramsessanchez <63934382+ramsessanchez@users.noreply.github.com> Date: Fri, 22 May 2026 17:47:45 -0700 Subject: [PATCH 23/26] fix: move CFS feed credentials to gradle.properties Moves GraphDeveloperExperiences_Public credentials from pipeline script step to gradle.properties. The token will be overridden via ADO environment variables at pipeline runtime. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .azure-pipelines/daily-ci-build.yml | 6 ------ gradle.properties | 4 ++++ 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/.azure-pipelines/daily-ci-build.yml b/.azure-pipelines/daily-ci-build.yml index ae51c0bf..be17d152 100644 --- a/.azure-pipelines/daily-ci-build.yml +++ b/.azure-pipelines/daily-ci-build.yml @@ -43,12 +43,6 @@ extends: - checkout: self submodules: recursive - - script: | - mkdir -p ~/.gradle - echo "GraphDeveloperExperiences_PublicUsername=microsoftgraph" >> ~/.gradle/gradle.properties - echo "GraphDeveloperExperiences_PublicPassword=$(System.AccessToken)" >> ~/.gradle/gradle.properties - displayName: Configure Gradle credentials for CFS feed - - task: Gradle@4 displayName: Build and Test SDK inputs: diff --git a/gradle.properties b/gradle.properties index 452d9c38..21df8553 100644 --- a/gradle.properties +++ b/gradle.properties @@ -37,3 +37,7 @@ mavenArtifactSuffix = #enable mavenCentralPublishingEnabled to publish to maven central mavenCentralSnapshotArtifactSuffix = -SNAPSHOT mavenCentralPublishingEnabled=false + +# Azure Artifacts CFS feed credentials +GraphDeveloperExperiences_PublicUsername=microsoftgraph +GraphDeveloperExperiences_PublicPassword=PERSONAL_ACCESS_TOKEN From dd33475e65716f60dc2d1418c8c4567e6c1f1971 Mon Sep 17 00:00:00 2001 From: ramsessanchez <63934382+ramsessanchez@users.noreply.github.com> Date: Fri, 22 May 2026 17:51:02 -0700 Subject: [PATCH 24/26] fix: pass CFS feed token via ADO pipeline variable Overrides GraphDeveloperExperiences_PublicPassword at build time using the ARTIFACTS_PAT pipeline variable passed via -P flag. Configure ARTIFACTS_PAT as a secret variable in the ADO pipeline. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .azure-pipelines/daily-ci-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.azure-pipelines/daily-ci-build.yml b/.azure-pipelines/daily-ci-build.yml index be17d152..b9e1c775 100644 --- a/.azure-pipelines/daily-ci-build.yml +++ b/.azure-pipelines/daily-ci-build.yml @@ -49,7 +49,7 @@ extends: gradleWrapperFile: 'gradlew' workingDirectory: '$(Build.SourcesDirectory)' tasks: 'assemble test' - options: '--no-daemon' + options: '--no-daemon -PGraphDeveloperExperiences_PublicPassword=$(ARTIFACTS_PAT)' publishJUnitResults: true testResultsFiles: '**/TEST-*.xml' javaHomeOption: 'JDKVersion' From b7f29efadd939853e00735cd08f8da7d0dbdf9c4 Mon Sep 17 00:00:00 2001 From: ramsessanchez <63934382+ramsessanchez@users.noreply.github.com> Date: Fri, 22 May 2026 17:55:56 -0700 Subject: [PATCH 25/26] fix: remove underscore from Gradle repo name (identity constraint) Gradle PasswordCredentials requires the repository name to contain only letters and digits. Renames GraphDeveloperExperiences_Public to GraphDeveloperExperiencesPublic across all config files. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .azure-pipelines/daily-ci-build.yml | 2 +- build.gradle | 8 ++++---- gradle.properties | 4 ++-- settings.gradle | 4 ++-- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/.azure-pipelines/daily-ci-build.yml b/.azure-pipelines/daily-ci-build.yml index b9e1c775..76eb4dad 100644 --- a/.azure-pipelines/daily-ci-build.yml +++ b/.azure-pipelines/daily-ci-build.yml @@ -49,7 +49,7 @@ extends: gradleWrapperFile: 'gradlew' workingDirectory: '$(Build.SourcesDirectory)' tasks: 'assemble test' - options: '--no-daemon -PGraphDeveloperExperiences_PublicPassword=$(ARTIFACTS_PAT)' + options: '--no-daemon -PGraphDeveloperExperiencesPublicPassword=$(ARTIFACTS_PAT)' publishJUnitResults: true testResultsFiles: '**/TEST-*.xml' javaHomeOption: 'JDKVersion' diff --git a/build.gradle b/build.gradle index 063360f5..2c3c77cd 100644 --- a/build.gradle +++ b/build.gradle @@ -70,8 +70,8 @@ repositories { // You can declare any Maven/Ivy/file repository here. mavenCentral() maven { - url 'https://microsoftgraph.pkgs.visualstudio.com/0985d294-5762-4bc2-a565-161ef349ca3e/_packaging/GraphDeveloperExperiences_Public/maven/v1' - name 'GraphDeveloperExperiences_Public' + url 'https://microsoftgraph.pkgs.visualstudio.com/0985d294-5762-4bc2-a565-161ef349ca3e/_packaging/GraphDeveloperExperiencesPublic/maven/v1' + name 'GraphDeveloperExperiencesPublic' credentials(PasswordCredentials) authentication { basic(BasicAuthentication) @@ -128,8 +128,8 @@ publishing { url = layout.buildDirectory.dir("publishing-repository") } maven { - url 'https://microsoftgraph.pkgs.visualstudio.com/0985d294-5762-4bc2-a565-161ef349ca3e/_packaging/GraphDeveloperExperiences_Public/maven/v1' - name 'GraphDeveloperExperiences_Public' + url 'https://microsoftgraph.pkgs.visualstudio.com/0985d294-5762-4bc2-a565-161ef349ca3e/_packaging/GraphDeveloperExperiencesPublic/maven/v1' + name 'GraphDeveloperExperiencesPublic' credentials(PasswordCredentials) authentication { basic(BasicAuthentication) diff --git a/gradle.properties b/gradle.properties index 21df8553..ef0b9a24 100644 --- a/gradle.properties +++ b/gradle.properties @@ -39,5 +39,5 @@ mavenCentralSnapshotArtifactSuffix = -SNAPSHOT mavenCentralPublishingEnabled=false # Azure Artifacts CFS feed credentials -GraphDeveloperExperiences_PublicUsername=microsoftgraph -GraphDeveloperExperiences_PublicPassword=PERSONAL_ACCESS_TOKEN +GraphDeveloperExperiencesPublicUsername=microsoftgraph +GraphDeveloperExperiencesPublicPassword=PERSONAL_ACCESS_TOKEN diff --git a/settings.gradle b/settings.gradle index be8166ff..75344123 100644 --- a/settings.gradle +++ b/settings.gradle @@ -3,8 +3,8 @@ pluginManagement { gradlePluginPortal() mavenCentral() maven { - url 'https://microsoftgraph.pkgs.visualstudio.com/0985d294-5762-4bc2-a565-161ef349ca3e/_packaging/GraphDeveloperExperiences_Public/maven/v1' - name 'GraphDeveloperExperiences_Public' + url 'https://microsoftgraph.pkgs.visualstudio.com/0985d294-5762-4bc2-a565-161ef349ca3e/_packaging/GraphDeveloperExperiencesPublic/maven/v1' + name 'GraphDeveloperExperiencesPublic' credentials(PasswordCredentials) authentication { basic(BasicAuthentication) From efd5633c628ee4dcf63573e93ebe0bb71b9847b8 Mon Sep 17 00:00:00 2001 From: ramsessanchez <63934382+ramsessanchez@users.noreply.github.com> Date: Fri, 22 May 2026 18:00:12 -0700 Subject: [PATCH 26/26] fix: restore underscores in Azure Artifacts feed URLs The Gradle repo name must be letters/digits only, but the actual feed URLs must use the real feed name with underscores. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- build.gradle | 4 ++-- settings.gradle | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/build.gradle b/build.gradle index 2c3c77cd..dcf37902 100644 --- a/build.gradle +++ b/build.gradle @@ -70,7 +70,7 @@ repositories { // You can declare any Maven/Ivy/file repository here. mavenCentral() maven { - url 'https://microsoftgraph.pkgs.visualstudio.com/0985d294-5762-4bc2-a565-161ef349ca3e/_packaging/GraphDeveloperExperiencesPublic/maven/v1' + url 'https://microsoftgraph.pkgs.visualstudio.com/0985d294-5762-4bc2-a565-161ef349ca3e/_packaging/GraphDeveloperExperiences_Public/maven/v1' name 'GraphDeveloperExperiencesPublic' credentials(PasswordCredentials) authentication { @@ -128,7 +128,7 @@ publishing { url = layout.buildDirectory.dir("publishing-repository") } maven { - url 'https://microsoftgraph.pkgs.visualstudio.com/0985d294-5762-4bc2-a565-161ef349ca3e/_packaging/GraphDeveloperExperiencesPublic/maven/v1' + url 'https://microsoftgraph.pkgs.visualstudio.com/0985d294-5762-4bc2-a565-161ef349ca3e/_packaging/GraphDeveloperExperiences_Public/maven/v1' name 'GraphDeveloperExperiencesPublic' credentials(PasswordCredentials) authentication { diff --git a/settings.gradle b/settings.gradle index 75344123..c27d0783 100644 --- a/settings.gradle +++ b/settings.gradle @@ -3,7 +3,7 @@ pluginManagement { gradlePluginPortal() mavenCentral() maven { - url 'https://microsoftgraph.pkgs.visualstudio.com/0985d294-5762-4bc2-a565-161ef349ca3e/_packaging/GraphDeveloperExperiencesPublic/maven/v1' + url 'https://microsoftgraph.pkgs.visualstudio.com/0985d294-5762-4bc2-a565-161ef349ca3e/_packaging/GraphDeveloperExperiences_Public/maven/v1' name 'GraphDeveloperExperiencesPublic' credentials(PasswordCredentials) authentication {