PDS Continuous Integration / Continuous Deployment


Purpose

To describe a consistent approach to developing CI/CD processes for PDS software products.


Stable Releases

CI/CD for will differ between stable releases versus unstable releases (e.g. SNAPSHOT, -dev releases).

Here are the steps we want to accomplish during our stable release CI/CD process:

  • Identify repo (Java or Python)

    • If setup.py == Python, pom.xml == Java

  • Unit Test

    • Python - python setup.py test (unittest)

    • Java - mvn test

  • Integration Test (TBD technology / best practices)

  • Generate Configuration Control Artifacts

    • Generate CHANGELOG

    • Generate REQUIREMENTS

    • Push updates to repo

  • Build and deploy software - RELEASE

    • Generate and package Documentation

      • Python - Sphinx

      • Java - mvn site

    • Build software

      • Python - python setup.py wheel

      • Java - mvn package

    • Publish unstable release to Github Releases

    • Publish to public artifact repos

      • Python - Test pypi

      • Java - Maven central snapshots, upload package to Github assets

    • Push Documentation

      • To Github Pages

      • To Github Release Assets

Github Actions Example

TBD link to template action or repo for this


Unstable Releases

CI/CD for in-development software updates (e.g. Java SNAPSHOTS, Python -dev)

  • Identify repo (Java or Python)

  • Unit Test

    • Python - python setup.py test (unittest)

    • Java - mvn test

  • Integration Test (TBD technology / best practices)

  • Generate Configuration Control Artifacts

    • Generate CHANGELOG

    • Generate REQUIREMENTS

    • Push updates to repo

  • Build and deploy software - UNSTABLE

    • Generate and package Documentation

      • Python - Sphinx

      • Java - mvn site

    • Build software

      • Python - python setup.py wheel

      • Java - mvn package

    • Publish unstable release to Github Releases

    • Publish to public artifact repos

      • Python - Test pypi

      • Java - Maven central snapshots, upload package to Github assets

    • Push Documentation

      • Push generated docs to Github Release Assets ONLY

Copyright 2020, California Institute of Technology (“Caltech”). U.S. Government sponsorship acknowledged.