mirror of
https://github.com/jlengrand/quarkus.git
synced 2026-03-10 08:41:22 +00:00
404 lines
14 KiB
YAML
404 lines
14 KiB
YAML
parameters:
|
|
poolSettings: {}
|
|
expectUseVMs: true
|
|
displayPrefix: ''
|
|
|
|
# NOTE: It is critical that all jobs have the following condition defined
|
|
#
|
|
# condition: and(eq(variables.LINUX_USE_VMS, ${{parameters.expectUseVMs}}),succeeded())
|
|
|
|
stages:
|
|
#This stage uses the azure caching feature to reduce the downloads that are performed from central, which greatly speeds up CI
|
|
#This is it's own stage to prevent Quarkus artifacts produced by the build from being cached
|
|
- stage: cache_maven_repo_stage${{parameters.expectUseVMs}}
|
|
displayName: '${{parameters.displayPrefix}} Maven Cache'
|
|
jobs:
|
|
- job: Cache_Maven_Repo
|
|
displayName: 'Linux Maven Repo'
|
|
condition: and(eq(variables.LINUX_USE_VMS, ${{parameters.expectUseVMs}}),succeeded())
|
|
timeoutInMinutes: 30
|
|
pool:
|
|
vmImage: 'Ubuntu 16.04'
|
|
workspace:
|
|
clean: all
|
|
|
|
variables:
|
|
imageName: 'quarkus:$(build.buildId)'
|
|
|
|
steps:
|
|
- script: echo $(Build.Reason); echo $(LINUX_USE_VMS)
|
|
- script: echo $(Agent.JobStatus)
|
|
displayName: Debug Stuff
|
|
|
|
- task: CacheBeta@0
|
|
inputs:
|
|
# the number below is a cache version when we want to force a cache refresh
|
|
key: maven | "2" | bom/runtime/pom.xml #if we attempt to use all poms then when they get copied to target everything breaks. This should be good enough, it does not need to be perfect
|
|
path: $(MAVEN_CACHE_FOLDER)
|
|
securityNamespace: cache
|
|
cacheHitVar: CACHE_RESTORED
|
|
displayName: Cache Maven local repo
|
|
|
|
- task: Maven@3
|
|
displayName: 'Maven Build'
|
|
condition: and(ne(variables.CACHE_RESTORED, 'true'), succeeded())
|
|
inputs:
|
|
goals: 'install'
|
|
mavenOptions: $(MAVEN_OPTS)
|
|
options: '-B --settings azure-mvn-settings.xml -DskipTests=true -Dno-format -DskipDocs'
|
|
|
|
- template: prepare-cache.yaml
|
|
|
|
- job: Cache_Windows_Maven_Repo #windows has different line endings so the cache key is different
|
|
displayName: 'Windows Maven Repo'
|
|
condition: and(eq(variables.LINUX_USE_VMS, ${{parameters.expectUseVMs}}),succeeded())
|
|
timeoutInMinutes: 30
|
|
pool:
|
|
vmImage: 'vs2017-win2016'
|
|
|
|
variables:
|
|
imageName: 'quarkus-windows:$(build.buildId)'
|
|
|
|
steps:
|
|
- task: CacheBeta@0
|
|
inputs:
|
|
# the number below is a cache version when we want to force a cache refresh
|
|
key: mavenWindows | "2" | bom/runtime/pom.xml #if we attempt to use all poms then when they get copied to target everything breaks. This should be good enough, it does not need to be perfect
|
|
path: $(MAVEN_CACHE_FOLDER)
|
|
securityNamespace: cache
|
|
cacheHitVar: CACHE_RESTORED
|
|
displayName: Cache Maven local repo
|
|
|
|
- task: Maven@3
|
|
displayName: 'Maven Build'
|
|
condition: and(ne(variables.CACHE_RESTORED, 'true'), succeeded())
|
|
inputs:
|
|
goals: 'install'
|
|
mavenOptions: $(MAVEN_OPTS)
|
|
options: '-B --settings azure-mvn-settings.xml -DskipTests=true -Dno-format -DskipDocs'
|
|
|
|
#This stage builds the Quarkus artifacts needed for native image testing
|
|
- stage: initial_jdk8_stage${{parameters.expectUseVMs}}
|
|
displayName: '${{parameters.displayPrefix}} Build for Native'
|
|
dependsOn: cache_maven_repo_stage${{parameters.expectUseVMs}}
|
|
jobs:
|
|
- job: Build_JDK8_Linux
|
|
displayName: 'Build JDK8 Linux'
|
|
condition: and(eq(variables.LINUX_USE_VMS, ${{parameters.expectUseVMs}}),succeeded())
|
|
timeoutInMinutes: 90
|
|
pool:
|
|
vmImage: 'Ubuntu 16.04'
|
|
|
|
workspace:
|
|
clean: all
|
|
|
|
steps:
|
|
- template: jvm-build-steps.yaml
|
|
parameters:
|
|
# we only generate the PDF documentation and test coverage once for the initial JDK 8 build
|
|
extra: '-Ddocumentation-pdf -Ptest-coverage'
|
|
- publish: $(MAVEN_CACHE_FOLDER)
|
|
artifact: $(Build.SourceVersion)-BuiltMavenRepo
|
|
|
|
- task: Maven@3
|
|
displayName: 'Aggregate Code Coverage'
|
|
inputs:
|
|
mavenPomFile: 'coverage-report/pom.xml'
|
|
goals: 'install'
|
|
mavenOptions: $(MAVEN_OPTS)
|
|
options: '-B --settings azure-mvn-settings.xml -Dno-native -Dno-format'
|
|
|
|
- task: PublishCodeCoverageResults@1
|
|
inputs:
|
|
codeCoverageTool: 'JaCoCo'
|
|
summaryFileLocation: 'coverage-report/target/site/jacoco/jacoco.xml'
|
|
pathToSources: 'coverage-report/src/main/java'
|
|
reportDirectory: 'coverage-report/target/site/jacoco/'
|
|
failIfCoverageEmpty: true
|
|
|
|
- template: prepare-cache.yaml
|
|
|
|
- stage: run_jvm_tests_stage${{parameters.expectUseVMs}}
|
|
displayName: '${{parameters.displayPrefix}} Run JVM Tests'
|
|
dependsOn: initial_jdk8_stage${{parameters.expectUseVMs}}
|
|
jobs:
|
|
- job: Windows_Build
|
|
displayName: 'Windows JVM Build'
|
|
condition: and(eq(variables.LINUX_USE_VMS, ${{parameters.expectUseVMs}}),succeeded())
|
|
timeoutInMinutes: 90
|
|
pool:
|
|
# Always use hosted pool for windows
|
|
vmImage: 'vs2017-win2016'
|
|
MAVEN_CACHE_FOLDER: $(Pipeline.Workspace)/.m2/repository
|
|
MAVEN_OPTS: '-Dmaven.repo.local=$(MAVEN_CACHE_FOLDER)'
|
|
steps:
|
|
- task: CacheBeta@0 #we know the very first job will have restored or created this, so this will never write built artifacts to the cache
|
|
inputs:
|
|
key: mavenWindows | bom/runtime/pom.xml
|
|
path: $(MAVEN_CACHE_FOLDER)
|
|
securityNamespace: cache
|
|
displayName: Restore Maven Cache
|
|
|
|
- task: Maven@3
|
|
displayName: 'Maven Build'
|
|
inputs:
|
|
goals: 'install'
|
|
mavenOptions: $(MAVEN_OPTS)
|
|
options: '-B --settings azure-mvn-settings.xml -Dno-native -Dno-format'
|
|
|
|
- job: Build_JDK11_Linux
|
|
timeoutInMinutes: 90
|
|
condition: and(eq(variables.LINUX_USE_VMS, ${{parameters.expectUseVMs}}),succeeded())
|
|
displayName: 'Linux JDK11 Build'
|
|
pool: ${{parameters.poolSettings}}
|
|
workspace:
|
|
clean: all
|
|
|
|
steps:
|
|
- template: jvm-build-steps.yaml
|
|
parameters:
|
|
jdk: '1.11'
|
|
- template: prepare-cache.yaml
|
|
|
|
- job: Build_JDK12_Linux
|
|
timeoutInMinutes: 90
|
|
condition: and(eq(variables.LINUX_USE_VMS, ${{parameters.expectUseVMs}}),succeeded())
|
|
displayName: 'Linux JDK12 Build'
|
|
pool: ${{parameters.poolSettings}}
|
|
|
|
workspace:
|
|
clean: all
|
|
|
|
steps:
|
|
- template: jvm-build-steps.yaml
|
|
parameters:
|
|
jdk: '1.12'
|
|
- template: prepare-cache.yaml
|
|
|
|
- job: Run_TCKs
|
|
condition: and(eq(variables.LINUX_USE_VMS, ${{parameters.expectUseVMs}}),succeeded())
|
|
timeoutInMinutes: 60
|
|
pool: ${{parameters.poolSettings}}
|
|
workspace:
|
|
clean: all
|
|
|
|
steps:
|
|
- task: CacheBeta@0 #we know the very first job will have restored or created this, so this will never write built artifacts to the cache
|
|
displayName: Restore Maven Cache
|
|
inputs:
|
|
key: maven | bom/runtime/pom.xml
|
|
path: $(Pipeline.Workspace)/.m2/repository/
|
|
securityNamespace: cache
|
|
- task: Maven@3
|
|
displayName: 'Maven Install'
|
|
inputs:
|
|
goals: 'install'
|
|
mavenOptions: $(MAVEN_OPTS)
|
|
options: '-B --settings azure-mvn-settings.xml -Dno-native -Dno-format -DskipTests -Dtcks'
|
|
- task: Maven@3
|
|
displayName: 'Maven Verify'
|
|
inputs:
|
|
goals: 'verify'
|
|
mavenOptions: $(MAVEN_OPTS)
|
|
options: '-B --settings azure-mvn-settings.xml'
|
|
mavenPomFile: 'tcks/pom.xml'
|
|
- template: prepare-cache.yaml
|
|
|
|
- stage: run_native_tests_stage${{parameters.expectUseVMs}}
|
|
displayName: '${{parameters.displayPrefix}} Native Tests'
|
|
dependsOn: initial_jdk8_stage${{parameters.expectUseVMs}}
|
|
jobs:
|
|
- template: native-build-steps.yaml
|
|
parameters:
|
|
poolSettings: ${{parameters.poolSettings}}
|
|
expectUseVMs: ${{parameters.expectUseVMs}}
|
|
modules: main
|
|
name: main
|
|
postgres: true
|
|
|
|
- template: native-build-steps.yaml
|
|
parameters:
|
|
poolSettings: ${{parameters.poolSettings}}
|
|
expectUseVMs: ${{parameters.expectUseVMs}}
|
|
timeoutInMinutes: 30
|
|
modules:
|
|
- jpa-h2
|
|
- jpa-mariadb
|
|
- jpa-mssql
|
|
- jpa-derby
|
|
- jpa-without-entity
|
|
name: data_1
|
|
|
|
- template: native-build-steps.yaml
|
|
parameters:
|
|
poolSettings: ${{parameters.poolSettings}}
|
|
expectUseVMs: ${{parameters.expectUseVMs}}
|
|
timeoutInMinutes: 25
|
|
modules:
|
|
- jpa
|
|
- jpa-postgresql
|
|
- jpa-mysql
|
|
- reactive-mysql-client
|
|
name: data_2
|
|
postgres: true
|
|
mysql: true
|
|
|
|
- template: native-build-steps.yaml
|
|
parameters:
|
|
poolSettings: ${{parameters.poolSettings}}
|
|
expectUseVMs: ${{parameters.expectUseVMs}}
|
|
timeoutInMinutes: 15
|
|
modules:
|
|
- amazon-dynamodb
|
|
- amazon-lambda
|
|
- amazon-lambda-http
|
|
name: amazon
|
|
dynamodb: true
|
|
|
|
- template: native-build-steps.yaml
|
|
parameters:
|
|
poolSettings: ${{parameters.poolSettings}}
|
|
expectUseVMs: ${{parameters.expectUseVMs}}
|
|
timeoutInMinutes: 30
|
|
modules:
|
|
- artemis-core
|
|
- artemis-jms
|
|
- kafka
|
|
- kafka-streams
|
|
name: messaging
|
|
|
|
- template: native-build-steps.yaml
|
|
parameters:
|
|
poolSettings: ${{parameters.poolSettings}}
|
|
expectUseVMs: ${{parameters.expectUseVMs}}
|
|
timeoutInMinutes: 20
|
|
modules:
|
|
- elytron-security-oauth2
|
|
- elytron-security
|
|
- elytron-security-jdbc
|
|
- elytron-undertow
|
|
name: security_1
|
|
keycloak: true
|
|
|
|
- template: native-build-steps.yaml
|
|
parameters:
|
|
poolSettings: ${{parameters.poolSettings}}
|
|
expectUseVMs: ${{parameters.expectUseVMs}}
|
|
timeoutInMinutes: 45
|
|
modules:
|
|
- elytron-resteasy
|
|
- oidc
|
|
- oidc-code-flow
|
|
- oidc-tenancy
|
|
- vault-app
|
|
- keycloak-authorization
|
|
name: security_2
|
|
keycloak: true
|
|
|
|
- template: native-build-steps.yaml
|
|
parameters:
|
|
poolSettings: ${{parameters.poolSettings}}
|
|
expectUseVMs: ${{parameters.expectUseVMs}}
|
|
timeoutInMinutes: 30
|
|
modules:
|
|
- flyway
|
|
- hibernate-orm-panache
|
|
- reactive-pg-client
|
|
name: data_3
|
|
postgres: true
|
|
|
|
- template: native-build-steps.yaml
|
|
parameters:
|
|
poolSettings: ${{parameters.poolSettings}}
|
|
expectUseVMs: ${{parameters.expectUseVMs}}
|
|
timeoutInMinutes: 30
|
|
modules:
|
|
- mongodb-client
|
|
- mongodb-panache
|
|
- neo4j
|
|
name: data_4
|
|
neo4j: true
|
|
|
|
- template: native-build-steps.yaml
|
|
parameters:
|
|
poolSettings: ${{parameters.poolSettings}}
|
|
expectUseVMs: ${{parameters.expectUseVMs}}
|
|
timeoutInMinutes: 25
|
|
modules:
|
|
- infinispan-cache-jpa
|
|
- infinispan-client
|
|
- cache
|
|
name: cache
|
|
|
|
- template: native-build-steps.yaml
|
|
parameters:
|
|
poolSettings: ${{parameters.poolSettings}}
|
|
expectUseVMs: ${{parameters.expectUseVMs}}
|
|
timeoutInMinutes: 35
|
|
modules:
|
|
- resteasy-jackson
|
|
- vertx
|
|
- vertx-http
|
|
- vertx-graphql
|
|
- virtual-http
|
|
name: http
|
|
|
|
- template: native-build-steps.yaml
|
|
parameters:
|
|
poolSettings: ${{parameters.poolSettings}}
|
|
expectUseVMs: ${{parameters.expectUseVMs}}
|
|
timeoutInMinutes: 40
|
|
modules:
|
|
- maven
|
|
- jackson
|
|
- jsonb
|
|
- jsch
|
|
- jgit
|
|
name: misc_1
|
|
|
|
- template: native-build-steps.yaml
|
|
parameters:
|
|
poolSettings: ${{parameters.poolSettings}}
|
|
expectUseVMs: ${{parameters.expectUseVMs}}
|
|
timeoutInMinutes: 30
|
|
modules:
|
|
- tika
|
|
- hibernate-validator
|
|
- test-extension
|
|
- logging-gelf
|
|
name: misc_2
|
|
|
|
- template: native-build-steps.yaml
|
|
parameters:
|
|
poolSettings: ${{parameters.poolSettings}}
|
|
expectUseVMs: ${{parameters.expectUseVMs}}
|
|
timeoutInMinutes: 35
|
|
modules:
|
|
- kogito
|
|
- kubernetes-client
|
|
- quartz
|
|
name: misc_3
|
|
|
|
- template: native-build-steps.yaml
|
|
parameters:
|
|
poolSettings: ${{parameters.poolSettings}}
|
|
expectUseVMs: ${{parameters.expectUseVMs}}
|
|
timeoutInMinutes: 25
|
|
modules:
|
|
- spring-di
|
|
- spring-web
|
|
- spring-data-jpa
|
|
- spring-boot-properties
|
|
name: spring
|
|
|
|
- template: native-build-steps.yaml
|
|
parameters:
|
|
poolSettings: ${{parameters.poolSettings}}
|
|
expectUseVMs: ${{parameters.expectUseVMs}}
|
|
timeoutInMinutes: 25
|
|
modules:
|
|
- hibernate-search-elasticsearch
|
|
- narayana-stm
|
|
- narayana-jta
|
|
name: data_5
|