CI / CD ======= .. toctree:: :maxdepth: 3 /developer/ci_cd Purpose ------- To describe a consistent approach to developing continuous integration / continuous deployment 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.