# This pipeline produces a SNAPSHOT build for each of the sub modules in # the core library, and publishes them to ossrh. trigger: branches: include: - master pr: none strategy: matrix: dstu2: module: "org.hl7.fhir.dstu2" dstu3: module: "org.hl7.fhir.dstu3" dstu2016may: module: "org.hl7.fhir.dstu2016may" r4: module: "org.hl7.fhir.r4" r5: module: "org.hl7.fhir.r5" validator: module: "org.hl7.fhir.validation" validator_cli: module: "org.hl7.fhir.validation.cli" maxParallel: 8 pool: vmImage: "ubuntu-16.04" variables: currentModule: $(module) steps: # Debugging output to identify current module. - bash: echo Publishing SNAPSHOT for $(module) displayName: 'Print module name.' # Signing, for now, occurs for all builds, SNAPSHOT or release. So we need a valid # signing key. The next two steps download the public and private keys from the # secure library files. - task: DownloadSecureFile@1 displayName: 'Download public key.' inputs: secureFile: public.key - task: DownloadSecureFile@1 displayName: 'Download private key.' inputs: secureFile: private.key # Import both the private and public keys into gpg for signing. - bash: | gpg --import --no-tty --batch --yes $(Agent.TempDirectory)/public.key gpg --import --no-tty --batch --yes $(Agent.TempDirectory)/private.key gpg --list-keys --keyid-format LONG gpg --list-secret-keys --keyid-format LONG displayName: 'Import signing keys.' # For creating the snapshot release with maven, we need to build a fake settings.xml # for it to read from. This is done for the master branch merges only. - bash: | cat >$(System.DefaultWorkingDirectory)/settings.xml < ossrh $(SONATYPE_USER) $(SONATYPE_PASS) sonatype-nexus-snapshots $(SONATYPE_USER) $(SONATYPE_PASS) sonatype-nexus-staging $(SONATYPE_USER) $(SONATYPE_PASS) $(PGP_KEYNAME) $(PGP_PASSPHRASE) release true $(PGP_KEYNAME) EOL displayName: 'Create .mvn/settings.xml' # Deploy the SNAPSHOT artifact to sonatype nexus. # This is done for the master branch merges only. - task: Maven@3 displayName: 'Deploy $(module) to Sonatype staging' inputs: mavenPomFile: '$(System.DefaultWorkingDirectory)/$(module)/pom.xml' goals: clean deploy options: '--settings $(System.DefaultWorkingDirectory)/settings.xml' publishJUnitResults: false # Clean any existing deployment artifacts - task: Maven@3 displayName: 'Clean any existing deploy artifacts.' inputs: mavenPomFile: '$(System.DefaultWorkingDirectory)/$(module)/pom.xml' goals: clean options: '--settings $(System.DefaultWorkingDirectory)/settings.xml' publishJUnitResults: false