Application Creation and Maintenance

Application Creation and Maintenance

WORK IN PROGRESS

Creation of an application descriptor

  1. Create a dedicated repo, e.g. GitHub - folio-org/app-consortia

    1. This can live in your GitHub organization.  I don't think there's a requirement that application descriptor repositories live in the "folio-org" GitHub organization.

  2. Add an application descriptor template

    1. The mainline/master branch should use the "latest" version placeholder.  This gets replaced at "build" time with the latest snapshot version of the module.  See app-consortia/app-consortia.template.json at master · folio-org/app-consortia for example.

    2. Declare application dependencies.

  3. Add a README - Again, use existing application descriptor repositories for examples.

  4. Add a pom.xml - I would suggest copy-pasting/modifying an existing one.

  5. Add users/teams to the newly created repository and configure the appropriate roles for them:

    1. fsejenkins - maintain,

    2. kitfox - admin,

    3. folio-devops - write,

    4. owning dev team - admin.

  6. When moving modules between applications, you must also remove these modules from the old applications.

Once you have that all set, you can clone your repo into a fresh place and try to "build" it (e.g., with mvn).  You should get an application descriptor that has the latest snapshot versions of modules.

Maintenance and Releases

This repository can now be tagged/released like any other repository, following standard release processes.

For releases, the “latest” placeholder should be replaced with an explicit module version.  The application version should also be a non-snapshot version, e.g. 1.0.0. Release tags should include the concrete application descriptor (at the top level) resulting from “building” the application.

Whenever a new version of the application’s modules are released, a new version of the application should also be released.

Please consider posting an announcement to #releases slack channel when releasing applications.