org.hl7.fhir.core/module-snapshot-publishing.yml

121 lines
3.8 KiB
YAML

# 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 <<EOL
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
https://maven.apache.org/xsd/settings-1.0.0.xsd">
<servers>
<server>
<id>ossrh</id>
<username>$(SONATYPE_USER)</username>
<password>$(SONATYPE_PASS)</password>
</server>
<server>
<id>sonatype-nexus-snapshots</id>
<username>$(SONATYPE_USER)</username>
<password>$(SONATYPE_PASS)</password>
</server>
<server>
<id>sonatype-nexus-staging</id>
<username>$(SONATYPE_USER)</username>
<password>$(SONATYPE_PASS)</password>
</server>
<server>
<id>$(PGP_KEYNAME)</id>
<passphrase>$(PGP_PASSPHRASE)</passphrase>
</server>
</servers>
<profiles>
<profile>
<id>release</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<gpg.keyname>$(PGP_KEYNAME)</gpg.keyname>
</properties>
</profile>
</profiles>
</settings>
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