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 Package | Functionality |
---|
Gitlab | Source 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 Runner | Continuous Integration: GitLab Runner is a Continuous Integration runner that integrates with GitLab, facilitating automated builds, testing, and deployment of your applications. |
Mattermost | Online Chat Service: Mattermost is an open-source, self-hostable online chat service, providing a platform for real-time communication and collaboration within teams. |
SonarQube | Code Quality: SonarQube continuously evaluates code quality and identifies issues, helping maintain code integrity and reduce technical debt. |
Note
If you are interested in learning more about Software Factory or would like to receive a demo, please contact us!
1 -
Software Factory Bundles
Note
The following UDS Bundles are designed specifically for development and testing environments and are not intended for production use.
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
Application | Description |
---|
Minio | In-cluster S3 Object Storage solution. |
Postgres Operator | In-cluster PostgreSQL Database management tool. |
GitLab | A comprehensive DevOps software package facilitating software development, security, and operational tasks. |
GitLab Runner | A Continuous Integration (CI) runner tightly integrated with GitLab, streamlining automation of build, test, and deployment workflows. |
Mattermost | An open-source, self-hostable online chat service empowering real-time communication for teams and organizations. |
SonarQube | An open-source platform developed by SonarSource, dedicated to the continuous inspection of code quality, ensuring adherence to high standards across the software development lifecycle. |
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
Application | Description |
---|
UDS-K3d | Containerized K3s with opinionated deployment for UDS development. |
Minio | In-cluster S3 Object Storage solution. |
Postgres Operator | In-cluster PostgreSQL Database management tool. |
UDS Core | Comprehensive suite including Service Mesh, IdAM, Monitoring, Logging, Metrics, UDS Policy Engine and Operator, Container Security, Backup and Restore functionalities. |
GitLab | A comprehensive DevOps software package facilitating software development, security, and operational tasks. |
GitLab Runner | A Continuous Integration (CI) runner tightly integrated with GitLab, streamlining automation of build, test, and deployment workflows. |
Mattermost | An open-source, self-hostable online chat service empowering real-time communication for teams and organizations. |
SonarQube | An 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:
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:
Step 3: Clean Up
Upon completion of the Software Factory demo bundle, execute the following command to tear down the K3d cluster:
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:
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:
If you need to create a test user in keyloak you can then run:
uds run setup:create-doug-user