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.