Operations 23 min read

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.

DevOps Cloud Academy
DevOps Cloud Academy
DevOps Cloud Academy
DevStream: An Open‑Source DevOps Toolchain Manager – Concepts, Configuration, Installation, and Usage Guide

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.state

Installation 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/bin

Basic 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: true

Running 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
ci/cdautomationkubernetesconfigurationdevopsToolchainArgoCD
DevOps Cloud Academy
Written by

DevOps Cloud Academy

Exploring industry DevOps practices and technical expertise.

0 followers
Reader feedback

How this landed with the community

login Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.