This is the integration / wayfinding repository for the UDS Software Factory created and offered by Defense Unicorns. The Software Factory is made up of bundled applications that assist with development of new software in airgap environments. These applications are split into primary
and lab
applications to denote applications that are ready for wider use and those that we are still learning from and experimenting with.
The primary
UDS Software Factory packages are:
- GitLab - a DevOps software package that can develop, secure, and operate software
- GitLab Runner - a Continuous Integration runner that integrates with GitLab
- Renovate - a dependency checking bot that integrates with GitLab
- Mattermost - an open-source, self-hostable online chat service
- SonarQube - an open-source platform developed by SonarSource for continuous inspection of code quality
- Postgres Operator - a Kubernetes operator to deploy PostgreSQL databases in a cluster
- Valkey - a Redis-alternative that can be deployed in a cluster (intended for use with GitLab)
The lab
UDS Software Factory packages are:
- Sigstore - a keyless signing infrastructure for software artifact signing and attestations
- Archivista - a GraphQL datastore for in-toto attestations
This repo serves as an integration repository for testing, creating common Architectural Decision Records, and tracking issues that have effects across the individual packages that make up Software Factory.
Also note that the Software Factory team helps to manage the following UDS packages and repositories:
- UDS Common - a common repo to share workflows, UDS tasks and more between UDS Package repositories
β οΈ (alpha) Minio Operator - an S3-compatible object storage provider
π tl;dr - try it now
Caution
These UDS Bundles are intended for dev, test and demo environments and should not be used for production. They can however serve as examples to create custom bundles.
This repository publishes multiple bundles for dev, test and demo purposes. They are located in sub-directories under bundles
.
This bundle is for development of the primary
Software Factory packages and is located at bundles/dev
. It requires an existing Kubernetes cluster with at least UDS Core Base and UDS Core Identity and Authorization on it to deploy.
This bundle requires ~ 9 CPUs and 28GB of memory
available to run.
This bundle is a demo bundle of the primary
Software Factory packages deployed on top of full UDS Core. It includes the deployment of an underlying K3d cluster and is located at bundles/k3d-demo
This is a fairly large bundle and requires 16 CPUs and 64GB of memory
available to run. It is best deployed on an adequately sized Linux machine with Docker or equivalent installed. This is not currently tested on macOS due to resource limitations.
If you have the resources for it locally (see above), you can deploy the primary
Software Factory packages with full uds-core
and k3d
using the uds-k3d-swf-demo bundle.
- Docker Compatible Runtime necessary for running
k3d
. - UDS CLI v0.10.4 or later
Note
Apple users follow these instructions to properly set up your environment to deploy this bundle.
To deploy this bundle run the following command:
uds deploy k3d-swf-demo:0.3.0
Alternatively, you can deploy the uds-swf-dev bundle, which is meant to be deployed on top of k3d-core-slim-dev or another Kubernetes cluster with at least UDS Core Base and UDS Core Identity and Authorization. This bundle includes the primary
Software Factory packages, but only requires part of the underlying uds-core
baseline allowing it to be run on a wider variety of hardware, particularly with local development in mind.
- K3D for dev & test environments or any CNCF Certified Kubernetes Cluster for production-esque environments.
- UDS CLI v0.10.4 or later
Note
Apple users follow these instructions to properly set up your environment to deploy this bundle.
For swf-dev
you have two options, build and deploy from source or deploy the artifacts from where they are hosted in the ghcr.io
OCI registry.
To build and deploy from source you can utilize the UDS tasks in this repo by running:
uds run
Alternatively, you can deploy from OCI by running the following two commands:
To easily create a K3d cluster with UDS Core Base and UDS Core Identity and Authorization run the below command to deploy the k3d-core-slim-dev
bundle:
Tip
You can append --set INSECURE_ADMIN_PASSWORD_GENERATION=true
to the below command to enable a default keycloak admin. This is useful for development and testing of the SWF stack and enables the ability to run uds run setup:create-doug-user
to create a user to test with using the username doug
and the password unicorn123!@#UN
.
Tip
You can install this bundle on nearly any Kubernetes cluster as long as you install the Base and Identity and Authorization layers from UDS Core. You may need to make some changes to your node configuration which you can see in the development documentation.
uds deploy k3d-core-slim-dev:0.30.0
Run the below command to deploy the swf-dev
bundle on top of the dev cluster:
uds deploy swf-dev:0.3.0
When developing these bundles it is ideal to utilize the json schemas for UDS Bundles, Zarf Packages and Maru Tasks. This involves configuring your IDE to provide schema validation for the respective files used by each application. For guidance on how to set up this schema validation, please refer to the guide in uds-common.