diff --git a/module-snapshot-publishing.yml b/module-snapshot-publishing.yml new file mode 100644 index 000000000..d6bd8728d --- /dev/null +++ b/module-snapshot-publishing.yml @@ -0,0 +1,106 @@ +# This pipeline produces a SNAPSHOT build for each of the sub modules in +# the core library, and publishes them to ossrh. +trigger: + - master + +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" + maxParallel: 3 + +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: deploy + options: '--settings $(System.DefaultWorkingDirectory)/settings.xml ' + publishJUnitResults: false \ No newline at end of file diff --git a/pom.xml b/pom.xml index 0132d8afa..bf91bca9d 100644 --- a/pom.xml +++ b/pom.xml @@ -136,6 +136,7 @@ org.hl7.fhir.report +