Skip to content

Cloud2BR-MSFTLearningHub/devopster-cli

Repository files navigation

devopster-cli

Atlanta, USA

GitHub brown9804

Last updated: 2026-03-25


Cross-platform GitOps CLI built in Rust for managing organization repositories across GitHub, Azure DevOps, and GitLab.

What It Is

This project is a container-first CLI for repository governance and maintenance at scale. The goal is to give you a single tool that can blueprint repositories, audit standards, sync shared files, generate catalogs, and align metadata across multiple source-control platforms.

Why This Repo Exists

Managing an organization with many repositories usually leads to repeated manual work:

  • keeping repo metadata aligned
  • copying workflows and templates between repos
  • auditing descriptions, topics, and licensing
  • blueprinting new repositories from a standard template
  • generating a reusable catalog of projects

devopster is intended to centralize that work behind one CLI and one config file.

Current Foundation

The repository now includes:

  • a Rust CLI package with the devopster binary
  • a command tree for init, repo, catalog, topics, and stats
  • a provider abstraction for GitHub, Azure DevOps, and GitLab
  • YAML configuration loading through devopster-config.yaml
  • a dev container and Docker-based workflow so the host machine does not need Rust installed
  • a CI workflow that builds and tests through containers

Container-First Workflow

This project is designed to run inside a container. The only required tool on your host machine is make, everything else including Docker is installed automatically by make setup.

What make setup installs

Tool Where How
Homebrew macOS only, if missing Official install script
Docker Desktop macOS brew install --cask docker
Docker Engine Debian/Ubuntu Official apt repository
gh, az, glab, Rust, devopster Inside the container Dockerfile

On macOS, after Docker Desktop is installed for the first time you need to start it from Applications, then re-run make setup.

VS Code Dev Container

  1. Clone the repository.
  2. Open it in VS Code.
  3. Reopen the folder in the Dev Container.
  4. The post-create step runs make setup automatically.

Local Commands

# First time on a new machine -- installs Docker if needed, builds the image,
# and drops you into the container shell where devopster is ready to use:
make setup

# Inside the container:
devopster init
devopster repo list

To reopen the container shell after exiting, run make setup again or make container-run.

Commands Overview

After make setup the devopster binary is on your $PATH and these commands work directly:

Command Options / Variants Purpose
devopster init - --no-login - Create devopster-config.yaml and sign in to a provider
- Create devopster-config.yaml only, skip the sign-in prompt
devopster login - <github|azure-devops|gitlab>
- all
- status
- logout <provider>
- Sign in to that provider via browser (uses gh, az, or glab CLI)
- Sign in to all three providers sequentially
- Show authentication status for all providers
- Remove stored credentials for a provider
devopster repo list - --topic <topic> - List all repositories in the configured organization
- Filter repositories by topic
devopster repo audit N/A - Audit repos for missing description, topics, license, and default branch
devopster repo fix N/A - Prompt for missing description, topics, and license in scoped repos that actually need fixes
devopster repo blueprint - --name <name> --template <template> - Create a new repository from a template defined in config
devopster repo sync - --from-blueprint - Push files from .github/ to all repositories
- Compare required workflow files from the blueprint repo, prompt to add any missing ones, and prompt to add the org README header and badge markers
devopster catalog generate N/A - Export a JSON catalog of all repositories
devopster topics align N/A - Add missing template topics to every matching repository
devopster stats - --scope-missing - Print org summary: config, coverage (description/topics/license/branch), compliance, and top topics
- Update scoped repos to the non-compliant list

Quick start inside the container

# 1. build the image and install devopster
make setup

# 2. init: creates devopster-config.yaml and asks which provider to sign in to
devopster init

# 3. run any command
devopster repo list
devopster repo audit
devopster repo blueprint --name sample-repo --template azure-overview
devopster catalog generate
devopster topics align
devopster stats

To skip the sign-in prompt: devopster init --no-login

Configuration

File Purpose
devopster-config.template.yaml Committed template: all supported keys with comments. Copy this to get started.
devopster-config.yaml Your active config: generated by devopster init or copied from the template. Git-ignored.
  • Start from the template file:

    cp devopster-config.template.yaml devopster-config.yaml
  • Then set the provider and token environment variables you want to use.

Tip

Configure a blueprint source repo for devopster repo sync --from-blueprint:

blueprint:
	repo: MicrosoftCloudEssentials-LearningHub/org-repo-template
	branch: main
	paths:
		- .github
Total views

Refresh Date: 2026-02-25

About

Manages GitHub, Azure DevOps, and GitLab organizations from a single CLI. Please note that these demos are intended as a guide and are based on my personal experiences. or official guidance, support, or more detailed information, please refer to Microsoft's official documentation or contact Microsoft directly.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors