This repository is the home of the core API and feature extensions for the Open Delivery Gear.
The core API implements a Python HTTP web server, intended for deployment into a Kubernetes cluster. It features compliance-related automation for software built with the Open Component Model.
There are multiple ways to run ODG-Core locally.
The ODG-Core Python HTTP web server can be started locally as a standalone application. It is loosely coupled to the database and Kubernetes-specific components, therefore this option is considered best if you intend to run web server-only features (e.g. adding new endpoints).
First, you need to prepare your local environment. The Makefile implements convenient commands for setup, but makes certain assumptions (e.g. it does not use virtual environments). If you have a strong opinion on how to set up your local development environment, please review the Makefile in detail.
If you are fine with installing the Python packages globally, please run:
make setupThe Makefile features a convenient command to run the ODG-Core web server in a lightweight fashion. This naturally has limitations, as most features will be turned off.
If you want to run specific features, please review the Makefile and build your custom run command.
To run ODG-Core in a simple configuration, please use:
make runTo run the ODG-Core web server alongside dependencies and feature extensions, you need to deploy it to a Kubernetes environment. You can use Kubernetes-in-Docker (KinD) to deploy such a setup locally.
Please refer to this guide to deploy ODG to KinD.
You can also develop ODG in a Dev Container. Install the Dev Containers extension and choose Reopen in Container in VS Code.
The Dev Container provides:
- Run & debug:
- To run the core service, run
Debug: core service - To run an extension, run
Debug: extensionand select the extension
- To run the core service, run
- Pytest integration
- PostgreSQL browser (password:
MyPassword, see.devcontainer/compose.yml) - Auto-format & lint on save
To work with a KinD cluster:
- Create the KinD cluster on the host:
kind create cluster --config .devcontainer/kind-config.yml, which includeshost.docker.internalas SAN - Open the Dev Container (Reopen in Container in VS Code)
- Open a terminal session. The kubeconfig is refreshed on every shell startup, with
127.0.0.1replaced byhost.docker.internal - Run
.devcontainer/prepare-kind.pyin the Dev Container to apply ODG CRDs and createsrc/secrets/kubernetes/devcontainers-cluster.yaml - Update your local configuration and secrets
If you use Kubeconfig with multiple files, flatten first: kubectl config view --raw --flatten > ~/.kube/config.
To clean up the KinD cluster: kind delete clusters odg-devcontainer-cluster
The documentation is hosted here.
Additionally, each ODG-Core instance hosts an Open-API specification.
It is available at:
https://<odg-core>/api/v1/doc/
You can also checkout the documentation hosted by the public demo instance, but please be aware that the running version might differ from your installation.
ODG-Core publishes multiple software artefacts. This list provides an overview.
| Name | Type | Description | Location |
|---|---|---|---|
odg-core-libs |
Python Package | Core APIs and functionalities. Contains the ODG web server. | PyPi |
odg-client |
Python Package | Python HTTP client library to interact with the ODG-Core API | PyPi |
bdba-client |
Python Package | Python HTTP client library to interact with BlackDuck Binary Analysis | PyPi |
odg-core |
OCI Image | Filesystem to run ODG-Core and ODG extensions in cloud environments | GCP |
odg-core |
OCM Component | Software component referencing all delivery artefacts and metadata | OCM Repo |
