diff --git a/ci.yml b/ci.yml index ebc3a05..ca20967 100644 --- a/ci.yml +++ b/ci.yml @@ -14,116 +14,140 @@ pr: - release/* - hotfix/* -variables: - DefaultOptions: '--batch-mode --fail-at-end -Dmaven.wagon.http.pool=false' - LoggingOptions: '-Dorg.slf4j.simpleLogger.defaultLogLevel=error -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn' - MemoryOptions: '-Xmx3072m' +extends: + template: /eng/templates/1es-redirect.yml + parameters: + stages: + - stage: Build + variables: + - name: DefaultOptions + value: '--batch-mode --fail-at-end -Dmaven.wagon.http.pool=false' + - name: LoggingOptions + value: '-Dorg.slf4j.simpleLogger.defaultLogLevel=error -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn' + - name: MemoryOptions + value: '-Xmx3072m' + - template: /eng/templates/image.yml + jobs: + - job: 'Build' + pool: + name: $(LINUXPOOL) + image: $(LINUXVMIMAGE) + os: linux -stages: - - stage: Build - jobs: - - job: 'Build' - pool: - vmImage: 'ubuntu-22.04' - strategy: - matrix: - Java 8: - ArtifactName: 'java8-packages' - ProfileFlag: '-Djava8' - JavaVersion: '1.8' - # We name this 'packages' because it is the default version we want to ship with. - Java LTS: - ArtifactName: 'packages' - ProfileFlag: '-Djava-lts' - JavaVersion: '1.11' + strategy: + matrix: + Java 8: + ArtifactName: 'java8-packages' + ProfileFlag: '-Djava8' + JavaVersion: '1.8' + # We name this 'packages' because it is the default version we want to ship with. + Java LTS: + ArtifactName: 'packages' + ProfileFlag: '-Djava-lts' + JavaVersion: '1.11' - steps: - - task: Maven@3 - displayName: 'Build and Package' - inputs: - mavenPomFile: 'pom.xml' - goals: 'deploy' - options: '$(DefaultOptions) $(ProfileFlag) -T 1C -DskipTests -Dgpg.skip -Dmaven.javadoc.skip=true -Dcheckstyle.skip=true -Dspotbugs.skip=true --settings eng/settings.xml -DaltDeploymentRepository="local::default::file:///${project.basedir}/output"' - mavenOptions: '$(LoggingOptions) $(MemoryOptions)' - javaHomeOption: 'JDKVersion' - jdkVersionOption: $(JavaVersion) - jdkArchitectureOption: 'x64' - publishJUnitResults: false + steps: + - task: Maven@3 + displayName: 'Build and Package' + inputs: + mavenPomFile: 'pom.xml' + goals: 'deploy' + options: '$(DefaultOptions) $(ProfileFlag) -T 1C -DskipTests -Dgpg.skip -Dmaven.javadoc.skip=true -Dcheckstyle.skip=true -Dspotbugs.skip=true --settings eng/settings.xml -DaltDeploymentRepository="local::default::file:///${project.basedir}/output"' + mavenOptions: '$(LoggingOptions) $(MemoryOptions)' + javaHomeOption: 'JDKVersion' + jdkVersionOption: $(JavaVersion) + jdkArchitectureOption: 'x64' + publishJUnitResults: false - - task: Maven@3 - displayName: 'Run SpotBugs, Checkstyle, and Javadoc' - inputs: - mavenPomFile: pom.xml - options: '$(DefaultOptions) --no-transfer-progress -DskipTests -Dgpg.skip' - mavenOptions: '$(MemoryOptions)' - javaHomeOption: 'JDKVersion' - jdkVersionOption: $(JavaVersion) - jdkArchitectureOption: 'x64' - publishJUnitResults: false - goals: 'verify' + - task: Maven@3 + displayName: 'Run SpotBugs, Checkstyle, and Javadoc' + inputs: + mavenPomFile: pom.xml + options: '$(DefaultOptions) --no-transfer-progress -DskipTests -Dgpg.skip' + mavenOptions: '$(MemoryOptions)' + javaHomeOption: 'JDKVersion' + jdkVersionOption: $(JavaVersion) + jdkArchitectureOption: 'x64' + publishJUnitResults: false + goals: 'verify' - - script: | - cp output/com/microsoft/azure/qpid-proton-j-extensions/**/* $(Build.ArtifactStagingDirectory) - rm $(Build.ArtifactStagingDirectory)/*.sha1 - rm $(Build.ArtifactStagingDirectory)/*.md5 - displayName: Flatten and copy build outputs + - script: | + cp output/com/microsoft/azure/qpid-proton-j-extensions/**/* $(Build.ArtifactStagingDirectory) + rm $(Build.ArtifactStagingDirectory)/*.sha1 + rm $(Build.ArtifactStagingDirectory)/*.md5 + displayName: Flatten and copy build outputs - - publish: $(Build.ArtifactStagingDirectory) - artifact: $(ArtifactName) - displayName: 'Publish outputs to $(ArtifactName) artifact' + - task: 1ES.PublishPipelineArtifact@1 + displayName: 'Publish outputs to $(ArtifactName) artifact' + inputs: + artifactName: $(ArtifactName) + targetPath: $(Build.ArtifactStagingDirectory) - - job: 'Test' - strategy: - matrix: - Linux - Java 8: - OSName: 'Linux' - OSVmImage: 'ubuntu-22.04' - ProfileFlag: '-Djava8' - JavaVersion: '1.8' - macOS - Java 8: - OSName: 'macOS' - OSVmImage: 'macOS-13' - ProfileFlag: '-Djava8' - JavaVersion: '1.8' - Windows - Java 8: - OSName: 'Windows' - OSVmImage: 'windows-2022' - ProfileFlag: '-Djava8' - JavaVersion: '1.8' - Linux - Java LTS: - OSName: 'Linux' - OSVmImage: 'ubuntu-22.04' - ProfileFlag: '-Djava-lts' - JavaVersion: '1.11' - macOS - Java LTS: - OSName: 'macOS' - OSVmImage: 'macOS-13' - ProfileFlag: '-Djava-lts' - JavaVersion: '1.11' - Windows - Java LTS: - OSName: 'Windows' - OSVmImage: 'windows-2022' - ProfileFlag: '-Djava-lts' - JavaVersion: '1.11' + - job: + displayName: 'Test' + strategy: + matrix: + Linux - Java 8: + OSName: 'Linux' + OSVmImage: 'ubuntu-22.04' + ProfileFlag: '-Djava8' + JavaVersion: '1.8' + Linux - Java LTS: + OSName: 'Linux' + OSVmImage: 'ubuntu-22.04' + ProfileFlag: '-Djava-lts' + JavaVersion: '1.11' - pool: - vmImage: $(OSVmImage) + pool: + name: $(LINUXPOOL) + image: $(LINUXVMIMAGE) + os: linux - steps: - - task: Maven@3 - displayName: 'Run Tests' - inputs: - mavenPomFile: 'pom.xml' - options: '$(DefaultOptions) $(ProfileFlag) --settings eng/settings.xml' - mavenOptions: '-Xmx3072m $(LoggingOptions)' - javaHomeOption: 'JDKVersion' - jdkVersionOption: $(JavaVersion) - jdkArchitectureOption: 'x64' - publishJUnitResults: false - goals: 'test' + steps: + - template: /eng/templates/test-steps.yml - - task: PublishTestResults@2 - condition: succeededOrFailed() - inputs: - mergeTestResults: true - testRunTitle: '$(OSName) on Java $(JavaVersion)' + - job: + displayName: 'Test' + strategy: + matrix: + Windows - Java 8: + OSName: 'Windows' + OSVmImage: 'windows-2022' + ProfileFlag: '-Djava8' + JavaVersion: '1.8' + Windows - Java LTS: + OSName: 'Windows' + OSVmImage: 'windows-2022' + ProfileFlag: '-Djava-lts' + JavaVersion: '1.11' + + pool: + name: $(WINDOWSPOOL) + image: $(WINDOWSVMIMAGE) + os: windows + + steps: + - template: /eng/templates/test-steps.yml + + - job: + displayName: 'Test' + strategy: + matrix: + macOS - Java 8: + OSName: 'macOS' + OSVmImage: 'macOS-13' + ProfileFlag: '-Djava8' + JavaVersion: '1.8' + macOS - Java LTS: + OSName: 'macOS' + OSVmImage: 'macOS-13' + ProfileFlag: '-Djava-lts' + JavaVersion: '1.11' + + pool: + name: $(MACPOOL) + vmImage: $(MACVMIMAGE) + os: macOS + + steps: + - template: /eng/templates/test-steps.yml \ No newline at end of file diff --git a/eng/templates/1es-redirect.yml b/eng/templates/1es-redirect.yml new file mode 100644 index 0000000..bb630ea --- /dev/null +++ b/eng/templates/1es-redirect.yml @@ -0,0 +1,40 @@ +resources: + repositories: + - repository: 1ESPipelineTemplates + type: git + name: 1ESPipelineTemplates/1ESPipelineTemplates + ref: refs/tags/release + +parameters: +- name: stages + type: stageList + default: [] +- name: UseOfficial + type: boolean + default: true + +extends: + ${{ if and(parameters.UseOfficial, eq(variables['System.TeamProject'], 'internal')) }}: + template: v1/1ES.Official.PipelineTemplate.yml@1ESPipelineTemplates + ${{ else }}: + template: v1/1ES.Unofficial.PipelineTemplate.yml@1ESPipelineTemplates + parameters: + settings: + skipBuildTagsForGitHubPullRequests: true + sdl: + sourceAnalysisPool: + name: azsdk-pool-mms-win-2022-general + image: azsdk-pool-mms-win-2022-1espt + os: windows + sourceRepositoriesToScan: + exclude: + - repository: azure-sdk-build-tools + eslint: + enabled: false + justificationForDisabling: 'ESLint injected task has failures because it uses an old version of mkdirp. We should not fail for tools not controlled by the repo. See: https://dev.azure.com/azure-sdk/internal/_build/results?buildId=3499746' + psscriptanalyzer: + compiled: true + break: true + policy: M365 + + stages: ${{ parameters.stages }} diff --git a/eng/templates/image.yml b/eng/templates/image.yml new file mode 100644 index 0000000..fab04ef --- /dev/null +++ b/eng/templates/image.yml @@ -0,0 +1,24 @@ +# Default pool image selection. Set as variable so we can override at pipeline level + +variables: + - name: LINUXPOOL + value: azsdk-pool-mms-ubuntu-2204-general + - name: WINDOWSPOOL + value: azsdk-pool-mms-win-2022-general + - name: MACPOOL + value: Azure Pipelines + + - name: LINUXVMIMAGE + value: azsdk-pool-mms-ubuntu-2204-1espt + - name: WINDOWSVMIMAGE + value: azsdk-pool-mms-win-2022-1espt + - name: MACVMIMAGE + value: macos-13 + + # Values required for pool.os field in 1es pipeline templates + - name: LINUXOS + value: linux + - name: WINDOWSOS + value: windows + - name: MACOS + value: macOS diff --git a/eng/templates/test-steps.yml b/eng/templates/test-steps.yml new file mode 100644 index 0000000..1b2c722 --- /dev/null +++ b/eng/templates/test-steps.yml @@ -0,0 +1,19 @@ +# relies on variable settings set from calling previous build steps +steps: + - task: Maven@3 + displayName: 'Run Tests' + inputs: + mavenPomFile: 'pom.xml' + options: '$(DefaultOptions) $(ProfileFlag) --settings eng/settings.xml' + mavenOptions: '-Xmx3072m $(LoggingOptions)' + javaHomeOption: 'JDKVersion' + jdkVersionOption: $(JavaVersion) + jdkArchitectureOption: 'x64' + publishJUnitResults: false + goals: 'test' + + - task: PublishTestResults@2 + condition: succeededOrFailed() + inputs: + mergeTestResults: true + testRunTitle: '$(OSName) on Java $(JavaVersion)' \ No newline at end of file