DevStream: An Open‑Source DevOps Toolchain Manager – Concepts, Configuration, Installation, and Usage Guide
This article provides a comprehensive guide to DevStream, an open‑source DevOps toolchain manager, covering its core concepts, configuration files, installation steps, basic commands, plugin development, and a practical example that demonstrates initializing and applying a full CI/CD pipeline on Kubernetes with ArgoCD.
DevStream is an open‑source DevOps toolchain manager that integrates mainstream DevOps tools across the software development lifecycle, offering installation, deployment, and best‑practice configuration capabilities.
Core concepts include Config (main, variable, and tool config files), Tool (plugins with name, instanceID, options, and dependencies), State (current status of each tool), and Resource (plugin resources accessed via a Read() interface). The state can be stored locally or in S3.
Configuration files are written in YAML. The main config.yaml specifies varFile , toolFile , and state . Variable files define reusable values using the [[ varName ]] syntax, while tool files list plugins with required fields such as name , instanceID , options , and optional dependsOn .
# config.yaml
varFile: ./config.yaml
state:
backend: local
options:
stateFile: devstream.stateInstallation of the command‑line tool dtm is done by downloading the appropriate binary from the GitHub releases page, making it executable, and moving it into the system PATH .
$ mv dtm-darwin-arm64 dtm
$ chmod +x dtm
$ sudo mv dtm /usr/local/binBasic commands include dtm list plugins to view available plugins, dtm show config to display default configurations, and dtm develop for creating or validating custom plugins.
A practical example demonstrates creating a project directory, defining config.yaml , variables-gitops.yaml , and tools-gitops.yaml to provision a GitHub repository, GitHub Actions workflows, ArgoCD installation via Helm, and an ArgoCD Application resource.
# tools-gitops.yaml
tools:
- name: github-repo-scaffolding-golang
instanceID: default
options:
owner: [[ githubUsername ]]
repo: [[ repoName ]]
- name: argocd
instanceID: default
options:
create_namespace: true
repo:
name: argo
url: https://argoproj.github.io/argo-helm
chart:
chart_name: argo/argo-cd
release_name: argocd
namespace: [[ argocdNamespace ]]
wait: true
timeout: [[ argocdDeployTimeout ]]
upgradeCRDs: trueRunning dtm init downloads the required plugin binaries, and dtm apply creates or updates the defined tools, storing state in the configured backend. The process results in a GitHub repository with CI pipelines, Docker image builds pushed to Docker Hub, ArgoCD installed on the Kubernetes cluster, and the sample application deployed via an ArgoCD Application.
State is persisted in devstream.state (or an S3 bucket), enabling incremental updates on subsequent runs. The entire workflow can be removed with dtm delete .
Git repository: https://github.com/devstream-io/devstream
DevOps Cloud Academy
Exploring industry DevOps practices and technical expertise.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.