Skip to content

clouddrove/smurf

Use this GitHub action with your project
Add this Action to an existing workflow or create a new one
View on Marketplace

Banner

Smurf

Go Report Status Build Status Slack Chat Apache-2.0 License

Smurf is a Go CLI that wraps Docker, Helm, and Terraform behind one consistent interface, using each tool's native Go SDK instead of shelling out. One binary, one config file, unified commands: build and push images to any major registry, install and upgrade Helm releases, plan and apply Terraform, or chain the whole pipeline with a single smurf deploy. Less context switching, fewer one-off scripts, the same commands locally and in CI.

smurf building and pushing an image to ECR

Installation βš™οΈ

Homebrew (macOS and Linux)

brew tap clouddrove/homebrew-tap
brew install smurf

Install script (Linux and macOS)

Downloads the release archive for your OS/arch and verifies it against checksums.txt:

curl -fsSL https://raw.githubusercontent.com/clouddrove/smurf/master/install/install.sh | bash

Docker

The image bundles smurf together with docker-cli, aws-cli, gcloud, terraform, and trivy:

docker run --rm ghcr.io/clouddrove/smurf:latest version

Go

go install github.com/clouddrove/smurf@latest

Manual download

Grab the archive for your platform from the releases page, verify it against checksums.txt, and put the binary on your PATH.

GitHub Actions

    - name: Setup Smurf
      uses: clouddrove/smurf@v1.1.5

From source

See the installation guide for building from source and platform notes.

Quickstart 🏁

# Scaffold a smurf.yaml with both sdkr and selm sections (0600, refuses to overwrite)
smurf init

# Build the Docker image described in smurf.yaml
smurf sdkr build

# Build, push, and (if selm.deployHelm is true) install/upgrade the Helm release, all from smurf.yaml
smurf deploy

Shell completion 🐚

smurf completion <bash|zsh|fish|powershell> generates a completion script for your shell (smurf completion --help for the full list and per-shell install instructions). Where it makes sense, completion is dynamic: Helm release-name arguments (selm upgrade/uninstall/status/history/rollback), --namespace/-n flags, and stf state-rm resource addresses complete against your current cluster/state instead of just showing static hints. If the cluster or backend isn't reachable, these simply produce no suggestions rather than erroring.

# zsh, current session
source <(smurf completion zsh)

# bash, current session
source <(smurf completion bash)

See the installation guide for persisting completion across shell sessions on bash/zsh/fish/PowerShell.

Features πŸš€

🐳 Docker Command Wrapper (sdkr)

Streamline Docker image workflows:

  • build, scan, tag, push, remove, init
  • provision-acr/provision-ecr/provision-gcp/provision-ghcr/provision-hub β†’ each runs (build ➝ push), prompting Proceed with push? [y/N] on a TTY unless --yes is passed
  • Docker with Smurf – Usage Guide

βš“ Helm Command Wrapper (selm)

Simplify Helm operations:

  • create, install, lint, list, status, template, upgrade, uninstall, init, debug, plugin
  • provision β†’ runs (install ➝ upgrade ➝ lint ➝ template)
  • Helm with Smurf – Usage Guide

πŸ—οΈ Terraform Command Wrapper (stf)

Easily manage Terraform workflows:

  • init, plan, apply, output, drift, validate, destroy, fmt, show, import, refresh, graph, state-list, state-rm, state-push, state-pull
  • provision β†’ runs (init ➝ plan ➝ apply ➝ output); applying requires --auto-approve (default false)
  • Terraform with Smurf – Usage Guide

πŸš€ smurf deploy command

Reads smurf.yaml, builds the Docker image, pushes it to whichever registry is enabled, and (if selm.deployHelm is true) installs or upgrades the Helm release.

  • deploy β†’ runs (build ➝ push ➝ Helm install/upgrade), controlled by --timeout (seconds, default 600)

🧰 Credential Fallback from smurf.yaml

Smurf supports automatic credential fallback.
If required credentials (like username or token) are not provided via CLI or environment variables, Smurf will read them directly from your smurf.yaml file. Values also support ${ENV_VAR} interpolation.

See the full smurf.yaml field reference for every supported key.

Example

sdkr:
  awsECR: false
  dockerHub: false
  ghcrRepo: false
  dockerfile: ""
  imageName: ""
selm:
  chartName: ""
  deployHelm: true
  fileName: ""
  namespace: ""
  releaseName: ""
  revision: 0

☁️ Multicloud Container Registry

Push images to multiple registries from one CLI:

  • Supported: AWS ECR, GCP GCR, Azure ACR, Docker Hub
  • Example:
    smurf sdkr push --help

Contributors ✨

Big thanks to our contributors for elevating our project with their dedication and expertise! But, we do not wish to stop there, would like to invite contributions from the community in improving these projects and making them more versatile for better reach. Remember, every bit of contribution is immensely valuable, as, together, we are moving in only 1 direction, i.e. forward.



Want to contribute? Read CONTRIBUTING.md for the development setup, project layout, and pull request conventions, and SECURITY.md for how to report vulnerabilities privately.

License

This project is licensed under the Apache License 2.0 - see the LICENSE file for details.

Feedback

Spot a bug or have thoughts to share with us? Let's squash it together! Log it in our issue tracker, feel free to drop us an email at hello@clouddrove.com.

Show some love with a β˜… on our GitHub! if our work has brightened your day! – your feedback fuels our journey!

Join Our Slack Community

Join our vibrant open-source slack community and embark on an ever-evolving journey with CloudDrove; helping you in moving upwards in your career path. Join our vibrant Open Source Slack Community and embark on a learning journey with CloudDrove. Grow with us in the world of DevOps and set your career on a path of consistency.

πŸŒπŸ’¬What you'll get after joining this Slack community:

  • πŸš€ Encouragement to upgrade your best version.
  • 🌈 Learning companionship with our DevOps squad.
  • 🌱 Relentless growth with daily updates on new advancements in technologies.

Join our tech elites Join Now πŸš€

Tap into our capabilities

We provide a platform for organizations to engage with experienced top-tier DevOps & Cloud services. Tap into our pool of certified engineers and architects to elevate your DevOps and Cloud Solutions.

At CloudDrove, has extensive experience in designing, building & migrating environments, securing, consulting, monitoring, optimizing, automating, and maintaining complex and large modern systems. With remarkable client footprints in American & European corridors, our certified architects & engineers are ready to serve you as per your requirements & schedule. Write to us at business@clouddrove.com.

We are The Cloud Experts!


We ❀️ Open Source and you can check out our other modules to get help with your new Cloud ideas.

About

command-line interface (CLI) application built using Golang

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

20 stars

Watchers

1 watching

Forks

Packages

 
 
 

Contributors

Languages