This is the multi-page printable view of this section. Click here to print.

Return to the regular view of this page.

Software Factory

The Software Factory platform is a comprehensive solution designed to simplify and secure the software development process. It offers a package of software development tools, and extensible preconfigured DevSecOps pipelines, built on top of the UDS Core common baseline to enable Mission Heroes to focus on meeting their mission objectives. Software Factory is designed for the rapid deployment of secure Continuous Integration/Continuous Delivery (CI/CD) pipelines. Software Factory is engineered to operate in any environment, making it the ideal choice for on-premises, cloud, or tactical edge systems. The core purpose is to safeguard development environments while automating the software delivery workflow.

Software Factory introduces a declarative packaging of tools for source code management, CI/CD, value stream metrics, artifact repository, team collaboration and identity management. This all-in-one solution enables users to create secure and efficient CI/CD pipelines wherever and whenever needed. The integration of these tools ensures that every stage of the software delivery pipeline becomes an automated safeguard, ensuring that code and applications are ready for secure deployment in production environments. Software Factory equips Mission Heroes with an out-of-the-box, secure solution to meet their software delivery objectives, simplifying the path to secure and efficient software development.

Key Features

Faster Authorization: Helps you meet most NIST controls by default, reducing compliance overhead. This accelerates the Authorization process, enabling you to focus on mission critical tasks.

Portability: Deploy anywhere and produce application artifacts that are deployable across different environments. This versatility allows you to build on the low side and seamlessly deploy to the high side, enhancing flexibility and mission adaptability.

Data Independence: You have full ownership of the environment and the data within it. You can extend the solution to meet bespoke mission needs, giving you the freedom to choose your support providers. This competitive approach helps control costs and ensures data sovereignty.

Extensibility: Software Factory offers an open architecture and pipeline templates aligned with supply chain best practices. This flexibility allows you to customize SWF to fit your specific mission or application requirements. You can tailor the platform to align with your unique needs and workflows.

Software Factory UDS Packages

UDS PackageFunctionality
GitlabSource Code Management: A DevOps software package that can develop, secure, and operate software. GitLab offers robust version control for your source code, making it easy to collaborate, track changes, and maintain a secure codebase.

Container Registry: It provides a centralized location for storing and managing container images, facilitating seamless deployment and version control.

Secret Storage: Securely manage and access sensitive data like credentials and configurations.
GitLab RunnerContinuous Integration: GitLab Runner is a Continuous Integration runner that integrates with GitLab, facilitating automated builds, testing, and deployment of your applications.
MattermostOnline Chat Service: Mattermost is an open-source, self-hostable online chat service, providing a platform for real-time communication and collaboration within teams.
SonarQubeCode Quality: SonarQube continuously evaluates code quality and identifies issues, helping maintain code integrity and reduce technical debt.

1 - Software Factory Bundles

swf-dev

Bundle Overview

This bundle is primarily for development purposes and requires an existing K3d cluster to deploy.

System Requirements

This bundle requires 9 CPUs and 28GB of memory available to run effectively.

Bundle Applications

ApplicationDescription
MinioIn-cluster S3 Object Storage solution.
Postgres OperatorIn-cluster PostgreSQL Database management tool.
GitLabA comprehensive DevOps software package facilitating software development, security, and operational tasks.
GitLab RunnerA Continuous Integration (CI) runner tightly integrated with GitLab, streamlining automation of build, test, and deployment workflows.
MattermostAn open-source, self-hostable online chat service empowering real-time communication for teams and organizations.
SonarQubeAn open-source platform developed by SonarSource, dedicated to the continuous inspection of code quality, ensuring adherence to high standards across the software development lifecycle.

k3d-swf-demo

Bundle Overview

Demo bundle of Software Factory deployed on top of UDS Core that includes the deployment of an underlying K3d cluster.

System Requirements

  • This bundle requires a minimum of 11 CPUs and 32GB of memory available to run effectively.
  • This bundle is best deployed on an adequately sized Linux machine with Docker or equivalent installed.

Bundle Applications

ApplicationDescription
UDS-K3dContainerized K3s with opinionated deployment for UDS development.
MinioIn-cluster S3 Object Storage solution.
Postgres OperatorIn-cluster PostgreSQL Database management tool.
UDS CoreComprehensive suite including Service Mesh, IdAM, Monitoring, Logging, Metrics, UDS Policy Engine and Operator, Container Security, Backup and Restore functionalities.
GitLabA comprehensive DevOps software package facilitating software development, security, and operational tasks.
GitLab RunnerA Continuous Integration (CI) runner tightly integrated with GitLab, streamlining automation of build, test, and deployment workflows.
MattermostAn open-source, self-hostable online chat service empowering real-time communication for teams and organizations.
SonarQubeAn open-source platform developed by SonarSource, dedicated to the continuous inspection of code quality, ensuring adherence to high standards across the software development lifecycle.

2 - Deploy Software Factory

Prerequisites

Apple Silicon Mac Users

When deploying on an Apple Silicon Mac, you have the option to utilize Colima, an open-source alternative to Docker Desktop, for deploying this bundle. You can install Colima via Homebrew by executing the command brew install colima.

To set up an appropriately configured Colima virtual machine, run the following command:

colima start --cpu 11 --memory 32 --disk 100 --vm-type vz  --vz-rosetta --arch aarch64 --profile uds

Certain configurations must be set on the host to ensure a smooth deployment of SonarQube and UDS Core. Note: From our testing these steps are not required with Docker Desktop.

SSH To the colima VM:

colima ssh --profile uds

Then run the following commands:

sudo sysctl -w vm.max_map_count=1524288
sudo sysctl -w fs.file-max=1000000
ulimit -n 1000000
ulimit -u 8192
sudo sysctl --load
sudo swapoff -a
sudo sysctl fs.inotify.max_user_instances=8192
sudo sysctl -p
exit

Linux Users

Depending on your Linux distribution and its configuration, you may need to execute the following steps to ensure the proper deployment of Software Factory and/or UDS Core:

sudo sysctl -w vm.max_map_count=1524288
sudo sysctl -w fs.file-max=1000000
ulimit -n 1000000
ulimit -u 8192
sudo sysctl --load
sudo swapoff -a
sudo sysctl fs.inotify.max_user_instances=8192
sudo sysctl -p

Quickstart

**Step 1: Install UDS CLI

brew tap defenseunicorns/tap && brew install uds

Step 2: Deploy

To experiment with the UDS Software Factory, you can use the k3d-swf-demo bundle to create a local K3d cluster featuring complete installations of UDS Core and Software Factory.

To deploy this bundle, run the following command:

uds deploy k3d-swf-demo:0.2.2

Optional:

Use the following command to visualize resources in the cluster via K9s:

uds zarf tools monitor

Step 3: Clean Up

Upon completion of the Software Factory demo bundle, execute the following command to tear down the K3d cluster:

k3d cluster delete uds

Alternatively, you have the option to deploy the swf-dev bundle, designed to be deployed atop k3d-core-slim-dev. This bundle encompasses the entire Software Factory, while leveraging only a portion of the underlying UDS Core baseline. This design allows the bundle to run on a broader range of hardware, specifically tailored for local development environments.

If using the swf-dev bundle, users have two options for deployment:

  • Build and deploy directly from the source.
  • Deploy the pre-built artifacts hosted in the GHCR OCI registry.

OCI

Run the below command to deploy the k3d-core-slim-dev bundle:

uds deploy k3d-core-slim-dev:0.22.0

Then run the following command to deploy the swf-dev bundle on top of the development cluster:

uds deploy swf-dev:0.2.2

You can then configure keycloak. Use zarf connect to establish a connection to the keycloak admin endpoint:

uds zarf connect keycloak

Refer to the UDS Core documentation for more details on how to configure keycloak users and groups.

Source

Step 1: Clone the Software Factory Repository

git clone https://github.com/defenseunicorns/uds-software-factory.git

To build and deploy from the source you can utilize the UDS tasks by running:

uds run

If you need to create a test user in keyloak you can then run:

uds run setup:create-doug-user