From 7e51527ddad2433e6e4d63bf6622bfd6b6152867 Mon Sep 17 00:00:00 2001 From: Ahmed Muhsin Date: Thu, 27 Aug 2026 17:40:10 -0500 Subject: [PATCH] Share Java build job across pipelines Use one parameterized build-and-test template for public and official CI. Both pipelines now select Java 11 for the main build and Java 17 for the MCP module, while the official E2E tail explicitly switches to Java 8. The shared job inherits each entry pipeline's pool and keeps E2E optional. --- eng/ci/official-build.yml | 4 +- eng/ci/public-build.yml | 2 +- .../{official => }/jobs/build-and-test.yml | 60 +++++++++++++------ eng/ci/templates/jobs/build.yml | 52 ---------------- 4 files changed, 47 insertions(+), 71 deletions(-) rename eng/ci/templates/{official => }/jobs/build-and-test.yml (70%) delete mode 100644 eng/ci/templates/jobs/build.yml diff --git a/eng/ci/official-build.yml b/eng/ci/official-build.yml index 18fa8b6..7787717 100644 --- a/eng/ci/official-build.yml +++ b/eng/ci/official-build.yml @@ -57,6 +57,8 @@ extends: - stage: BuildAndTest jobs: - - template: /eng/ci/templates/official/jobs/build-and-test.yml@self + - template: /eng/ci/templates/jobs/build-and-test.yml@self parameters: + jobName: Build_And_Test_Java_Library_Windows + displayName: Build and test Java library runEndToEndTests: ${{ and(ne(variables['Build.Reason'], 'Schedule'), parameters.runEndToEndTests) }} \ No newline at end of file diff --git a/eng/ci/public-build.yml b/eng/ci/public-build.yml index 53bd65f..f56f10a 100644 --- a/eng/ci/public-build.yml +++ b/eng/ci/public-build.yml @@ -51,5 +51,5 @@ extends: - stage: Build jobs: - - template: /eng/ci/templates/jobs/build.yml@self + - template: /eng/ci/templates/jobs/build-and-test.yml@self diff --git a/eng/ci/templates/official/jobs/build-and-test.yml b/eng/ci/templates/jobs/build-and-test.yml similarity index 70% rename from eng/ci/templates/official/jobs/build-and-test.yml rename to eng/ci/templates/jobs/build-and-test.yml index 969a4be..6af634f 100644 --- a/eng/ci/templates/official/jobs/build-and-test.yml +++ b/eng/ci/templates/jobs/build-and-test.yml @@ -1,19 +1,18 @@ parameters: + - name: jobName + type: string + default: Build + - name: displayName + type: string + default: Build java core library - name: runEndToEndTests type: boolean - default: true - displayName: "Run end-to-end tests" + default: false + displayName: Run end-to-end tests jobs: - - job: "Build_And_Test_Java_Library_Windows" - - pool: - name: 1es-pool-azfunc - image: 1es-windows-2022 - os: windows - - variables: - ApplicationInsightAgentVersion: 3.5.2 + - job: ${{ parameters.jobName }} + displayName: ${{ parameters.displayName }} steps: - task: npmAuthenticate@0 @@ -34,6 +33,13 @@ jobs: inputs: artifactsFeeds: upstream-public + - task: JavaToolInstaller@0 + inputs: + versionSpec: '11' + jdkArchitectureOption: 'x64' + jdkSourceOption: 'PreInstalled' + displayName: 'Setup Java 11' + - pwsh: | Write-Host "Java_HOME: $env:JAVA_HOME" Get-Command mvn @@ -41,18 +47,39 @@ jobs: - task: UseDotNet@2 displayName: 'Install .NET 6' + condition: eq(${{ parameters.runEndToEndTests }}, true) inputs: version: 6.0.x - + - pwsh: '& .\build.ps1' env: NPM_CONFIG_USERCONFIG: '$(Build.SourcesDirectory)\.npmrc' - displayName: 'Build project with java core library' + displayName: 'Build Java 11 libraries' + + - task: JavaToolInstaller@0 + inputs: + versionSpec: '17' + jdkArchitectureOption: 'x64' + jdkSourceOption: 'PreInstalled' + displayName: 'Setup Java 17' - pwsh: | - $currDir = Get-Location - $Env:Path = $Env:Path+";$currDir\Azure.Functions.Cli" - ls $currDir\Azure.Functions.Cli + cd azure-functions-java-mcp + mvn clean install "-Dgpg.skip=true" -B + displayName: 'Build Java 17 libraries' + + - task: JavaToolInstaller@0 + inputs: + versionSpec: '8' + jdkArchitectureOption: 'x64' + jdkSourceOption: 'PreInstalled' + displayName: 'Setup Java 8 for E2E' + condition: eq(${{ parameters.runEndToEndTests }}, true) + + - pwsh: | + $currDir = Get-Location + $Env:Path = $Env:Path + ";$currDir\Azure.Functions.Cli" + Get-ChildItem $currDir\Azure.Functions.Cli func --version cd ./azure-functions-java-worker/emulatedtests mvn clean package `-Dmaven`.javadoc`.skip=true `-Dmaven`.test`.skip `-Dorg`.slf4j`.simpleLogger`.log`.org`.apache`.maven`.cli`.transfer`.Slf4jMavenTransferListener=warn `-B @@ -96,4 +123,3 @@ jobs: JAVA_HOME: $(JAVA_HOME_8_X64) displayName: 'Build & Run tests for java 8' condition: eq(${{ parameters.runEndToEndTests }}, true) - diff --git a/eng/ci/templates/jobs/build.yml b/eng/ci/templates/jobs/build.yml deleted file mode 100644 index 1905d79..0000000 --- a/eng/ci/templates/jobs/build.yml +++ /dev/null @@ -1,52 +0,0 @@ -jobs: - - job: "Build" - displayName: 'Build java core library' - - pool: - name: 1es-pool-azfunc-public - image: 1es-windows-2022 - os: windows - - steps: - - task: npmAuthenticate@0 - inputs: - workingFile: '$(Build.SourcesDirectory)\.npmrc' - displayName: 'Authenticate to CFS npm feed' - - # Maven resolves plugins and extensions before a pom's repositories are honored. Install the - # mirror before MavenAuthenticate@0, which adds credentials to the same settings file. - - pwsh: | - $m2 = Join-Path $HOME '.m2' - New-Item -ItemType Directory -Path $m2 -Force | Out-Null - Copy-Item '$(Build.SourcesDirectory)/settings.xml' (Join-Path $m2 'settings.xml') -Force - displayName: 'Install Maven settings.xml' - - - task: MavenAuthenticate@0 - displayName: 'Authenticate Maven to CFS' - inputs: - artifactsFeeds: upstream-public - - - task: JavaToolInstaller@0 - inputs: - versionSpec: '11' - jdkArchitectureOption: 'x64' - jdkSourceOption: 'PreInstalled' - displayName: 'Setup Java 11' - - pwsh: | - Write-Host "Java_HOME: $JAVA_HOME" - Get-Command mvn - displayName: 'Check Maven is installed' - - pwsh: '& .\build.ps1' - env: - NPM_CONFIG_USERCONFIG: '$(Build.SourcesDirectory)\.npmrc' - displayName: 'Build Java 11 libraries' - - task: JavaToolInstaller@0 - inputs: - versionSpec: '17' - jdkArchitectureOption: 'x64' - jdkSourceOption: 'PreInstalled' - displayName: 'Setup Java 17' - - pwsh: | - cd azure-functions-java-mcp - mvn clean install "-Dgpg.skip=true" -B - displayName: 'Build Java 17 libraries'