/fhir-ig-publisher

Source code for the IG publisher

Primary LanguageJavaApache License 2.0Apache-2.0

HL7 FHIR IG Publisher Artifacts

CI Status (master) Release Pipeline Current Release Latest SNAPSHOT
Build Status Build Status Release Artifacts Snapshot Artifact

This is the code for the HL7 IG publisher: a tool to take a set of inputs and create a standard FHIR IG. The HL7 FHIR IG publisher does not provide an authoring environment - that's left to other parties.

Performance Monitoring

Performance Tracking

This graph plots the time taken to build a set of key implementation guides across the versions of the IG publisher, which are performed as part of the QA release testing. Note that the implementation guides themselves change over time, and the time varies due to network dependencies, so these times are only a rough indication of performance.

Note: For some previous versions, the tests were run over a slow/obstructed starlink connection, so have been removed from the graph

Building this Project

You can find detailed instructions on setting up this project in your IDE here.

This project uses Apache Maven to build. To build:

mvn install

To skip unit tests:

mvn -Dmaven.test.skip install

Running this Project

Once built, this project produces an executable publisher jar file: org.hl7.fhir.publisher.cli/target/org.hl7.fhir.publisher.cli-X.Y.Z-SNAPSHOT.jar. Detailed documentation on its features and common use cases are located in the Confluence Documentation, including instructions on how to run the publisher from your IDE.

In addition, two common publishing tasks that can be accomplished using the fhir-ig-publisher are described in detail in the documentation below:

Releases

The built binary for the FHIR IG publisher is released through GitHub releases and can be downloaded directly here.

CI/CD

All integration and delivery done on Azure pipelines. Azure project can be viewed here.

  • Pull Request Pipeline is automatically run for every Pull Request to ensure that the project can be built by maven. [Azure Pipeline] [source]
  • Master Branch Pipeline is automatically run whenever code is merged to the master branch and builds the SNAPSHOT binaries distributed to OSSRH [Azure Pipeline][source]
  • Release Branch Pipeline is run manually whenever a release is ready to be made. It builds the release binaries and distributes them to artifact repositories. [Azure Pipeline][source]
  • Nightly xig Pipeline is run automatically once a day to produce an aggregated view of all public IGs, available here. [Azure Pipeline][source]

A brief overview of our publishing process is here.

For more detailed instructions on cutting a release, please read the wiki

Maintenance

Have you found an issue? Do you have a feature request? Great! Submit it here and we'll try to fix it as soon as possible.

This project is maintained by Grahame Grieve and Lloyd McKenzie on behalf of the FHIR community.

Debugging this project with VS-Code

Setup a launch.json file in the .vscode folder with the following content:

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "type": "java",
            "name": "Publisher",
            "request": "launch",
            "mainClass": "org.hl7.fhir.igtools.publisher.Publisher",
            "projectName": "org.hl7.fhir.publisher.core",
            "cwd": "c:/git/hl7/utg",
            "args": [
                "-ig", ".",
                "-tx", "http://tx.fhir.org/r4"
            ]
        }
    ]
}

Update the path to the location of the IG that you want to debug the generation of and click debug in VS-Code.