This is the integration / wayfinding repository for the Unicorn Delivery Service (UDS) Software Factory created and offered by Defense Unicorns. In its current state it is made up of the following UDS packages that are bundled together:
- GitLab - a DevOps software package that can develop, secure, and operate software
- GitLab Runner - a Continuous Integration runner 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
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 shared UDS packages and repositories:
- Postgres Operator - a Kubernetes operator to deploy PostgreSQL databases in a cluster
⚠️ (alpha) Valkey - a Redis-alternative that can be deployed in a cluster (intended for use with GitLab)- UDS Common - a common repo to share actions, UDS tasks and more between package repositories
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 is a bundle primarily for development that is located at bundles/dev
. It requires an existing k3d cluster to deploy.
This bundle requires ~ 9 CPUs and 28GB of memory
available to run.
This bundle is a demo bundle of Software Factory deployed on top of full UDS Core. It includes the deployment of an underlying k3d cluster. The bundle definition 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 Mac due to resource limitations.
If you have the resources for it locally (see above), you can deploy the full Software Factory 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.2.7
Alternatively, you can deploy the uds-k3d-swf-dev bundle, which is meant to be deployed on top of k3d-core-slim-dev. This bundle includes all of Software Factory, but only utilizes part of the underlying uds-core
baseline. This allows 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 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:
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
.
uds deploy k3d-core-slim-dev:0.27.3
Run the below command to deploy the swf-dev
bundle on top of the dev cluster:
uds deploy swf-dev:0.2.7
When developing this package 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.