• Stars
    star
    321
  • Rank 130,752 (Top 3 %)
  • Language
    Ruby
  • License
    Apache License 2.0
  • Created about 3 years ago
  • Updated 4 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Build self-serve developer platforms in minutes, not months with out-of-the-box Kubernetes multi-tenancy, virtual clusters, cloud-based dev environments, customizable templating, and more.

Environments-as-a-Service

WebsiteSlackBlogTwitterDocumentation

Uffizzi helps teams ship features faster by solving their shared test environment bottleneck. It gives every member of your team the ability to spin up fresh QA, staging, demo, or debugging environments on demand, without impacting the rest of your team. Use Uffizzi environments to preview pull requests before merging or integrate with your CI pipeline for automated, end-to-end testing against a preview URL. Teams like Backstage, NocoDB, Meilisearch, and Forem have adopted Uffizzi because it's lightweight, fast, scalable, and more cost effective than competing solutions.

Did you know that Spotify's Backstage team achieves rapid releases at scale using nearly 400 ephemeral environments per month? Learn how →  
 


Trusted by top teams

BackstageNocoDBMeilisearchForemLazygitD2IQParseDashboardFonoster

AnswerWindmillFlagsmithMemosCraterLivebookOnlineGoBoxyHQ


github-banner

Quickstart (~1 minute)

Go to the quickstart repo, then follow the instructions in the README to create a preview environment for a sample application.

How it works

Create on-demand preview environments for APIs, frontends, backends, databases, microservices, binaries and command-line tools. Each ephemeral environment gets a secure HTTPS URL that is continually refreshed when you push new commits. Uffizzi also handles clean up, so your environments last only as long as you need them.

Uffizzi's modular design works with GitHub, GitLab, BitBucket, and any CI provider.

preview-url

Give us a star ⭐️

If you're interested in Uffizzi, give us a star. It helps others discover the project.

Use cases

Uffizzi is designed to integrate with any CI platform as a step in your pipeline. You can use Uffizzi to rapidly create:

  • Pull request environments
  • Debugging environments
  • Hotfix environments
  • Demo environments
  • Release environments
  • Staging environments

What types of apps are supported by Uffizzi?

Uffizzi is designed for full-stack web applications and containerized services, including APIs, backends, frontends, databases, microservices, binaries and command line tools. Application configurations are defined via Docker Compose, with support for Helm charts on our roadmap. See Docker Compose for Uffizzi to learn more about supported syntax.

Why Uffizzi?

Uffizzi helps busy project leaders approve pull requests faster. Testing a live preview provides a more holistic way to assess a new feature or bug fix, rather than simply reviewing code changes. Uffizzi also removes the added step of pulling down the branch to test it locally: Uffizzi seamlessly integrates with CI providers like GitHub Actions and posts comments directly to pull request issues, so there is no additional step for the maintainer or the contributor.

Project roadmap

See our high-level project roadmap, including already delivered milestones.

Set up ephemeral environments for your application

(If you haven't completed the quickstart guide, we recommend starting there to understand how Uffizzi works and how it's configured.)

There are two options to get Uffizzi:

  1. Use Uffizzi Cloud (SaaS) - This is fastest and easiest way to get started and includes two free concurrent Preview Environments for your team. It also includes some premium options like single sign-on (SSO) and password-protected preview URLs. If you want to use Uffizzi Cloud, you can follow this step-by-step guide to configure Preview Environments for your own application.

  2. Install open-source Uffizzi on your own Kubernetes cluster - Alternatively, you can install Uffizzi on your own cluster by following the self-hosted installation guide.

Documentation

Community

FAQs

My team tests locally. Why do I need Preview Environments?
  1. Preview Environments more closely resemble production. Uffizzi deploys images built from your CI pipeline—similar to the ones deployed to a production environment. Uffizzi Preview Environments also include a full network stack, including a domain and TLS certificate.
  2. Preview Environments provide a quality gate to help keep dirty code out of your main branch. Teams can test new features or bug fixes in clean, isolated environments.
  3. Public preview URLs allow every stakeholder on a team to review features and bug fixes. This helps shorten the feedback loop between developer and reviewer/tester, resulting in faster releases.
How is Uffizzi different from Codespaces, Gitpod, etc.?

Codespaces, Gitpod, and similar tools provide development environments hosted in the cloud. They let you open code editors like VS Code in your browser and make it easy to standardize development environments for your whole team. They can also provide developers access to more powerful machines than typically available on a laptop or desktop.

Uffizzi, by contrast, is downstream of these tools—i.e., Uffizzi Preview Environments are intended to be used once your code is ready for review. When added to your CI pipeline, Uffizzi will create a Preview Environment after a pull request is opened. Uffizzi works with whatever development method you choose—whether local or with cloud-based development environments like Gitpod or Codespaces.

Uffizzi is most useful for peer review, team leaders, QA, or anyone testing branches before they're merged with a shared branch such as main or master.

How is Uffizzi different from GitHub Actions (or other CI providers)? Uffizzi does not replace GitHub Actions or any other CI provider. Uffizzi previews are meant to be added as a step in your existing CI pipeline, after your container images are built and pushed to a container registry.
What about my database?

All services defined by your Docker Compose file are deployed to Preview Environments as containers—this includes databases, caches, and other datastores. This means that even if you use a managed database service like Amazon RDS for production, you should use a database image in your Compose (See this example that uses a postgres image from Docker Hub).

If your application requires test data, you will need to seed your database when your Preview Environment is created. Here are two methods for seeding databases:

  1. Load an SQL dump file upon container initialization.
  2. Use a language/framework-specific migration tool such as db:migrate for Rails or manage.py loaddata for Django.

Learn more about database seeding in Uffizzi

What do you mean by "environments"? Uffizzi Preview Environments are deployed upon Kubernetes. Uffizzi performs a translation from Compose to Kubernetes, where your application is deployed as a Pod to an isolated Namespace within a cluster. This abstraction helps reduce a team's infrastructure footprint and associated overhead. Uffizzi also creates a unique hostname for each Preview Environment and provision a TLS certificate. Each Preview Environment exposes one socket that can receive HTTP traffic. Every container defined by your Compose can communicate with each other on an internal network via localhost. Application instances that belong to different Preview Environments may only communicate via the public Internet. See the self-hosted installation guide for more architecture details.
Does Uffizzi support monorepos/polyrepos? Yes. Your CI pipeline will typically include a series of build/push steps for each of the components of your application. Uffizzi just needs to know the fully qualified container registry URL for where to find these built images.
Does Uffizzi support _____________? Uffizzi is container-centric, so in general, if your application can be containerized, described with Docker Compose, and accepts HTTP traffic, Uffizzi can preview it. Uffizzi supports web applications, microservices, databases, binaries, and command-line tools.
How can my application services communicate? Just like when you run docker-compose up locally, all the services defined in your Compose share a local network and can communicate via localhost. Application instances that belong to different Preview Environments may only communicate via the public Internet.
Can I connect Uffizzi with Netlify/Vercel? Yes. While Uffizzi supports full-stack previews, some users who already leverage frontend platforms like Netlify or Vercel want to add Uffizzi previews for their APIs/backend. For help configuring this scenario see:
Is Uffizzi open source? Yes. If you have access to a Kubernetes cluster, you can install Uffizzi via Helm. Follow the self-hosted installation guide.

License

This library is licensed under the Apache License, Version 2.0.

Security

If you discover a security related issues, please do not create a public github issue. Notify the Uffizzi team privately by sending an email to [email protected].

More Repositories

1

uffizzi_cli

The command-line interface for the Uffizzi API
Ruby
86
star
2

preview-action

GitHub Action to preview pull requests before merging
56
star
3

quickstart-compose

Get started with Uffizzi (~1 min)
C#
49
star
4

docs

Uffizzi Docs
Dockerfile
33
star
5

roadmap

Welcome to the public roadmap for Uffizzi! Community submissions are welcome.
25
star
6

uffizzi_controller

A smart proxy service that handles requests from the Uffizzi API to the Kubernetes API
Go
11
star
7

hello-world-docker-nginx

Example Docker Container, based upon `nginx`
HTML
6
star
8

cluster-action

GitHub Action for creating Uffizzi virtual clusters
6
star
9

example-voting-worker

C#
5
star
10

continuous_previews

Continuous Previews Manfiesto
Dockerfile
5
star
11

delete-preview-action

GitHub Action to delete a preview generated by the Uffizzi engine
4
star
12

about_uffizzi

This repository contains basic information about Uffizzi.
4
star
13

example-voting-result

Node.js Express app to display voting results
C#
4
star
14

example-voting-vote

Python app to tally votes
C#
4
star
15

example-voting-app

Example Docker Compose app
C#
2
star
16

uffizzi-cluster-operator

Create and manage virtual clusters
Go
2
star
17

medusajs-previews

Uffizzi ephemeral environments for MedusaJS
JavaScript
2
star
18

example-guestbook

Go
2
star
19

github-actions-example

Create pull request environments from GitHub Actions
C#
2
star
20

update-preview-action

GitHub Action to update a preview generated by the Uffizzi engine
2
star
21

devops-pro-europe-2022

An example distributed application running across multiple Docker containers (for DevOps Pro Europe 2022)
C#
1
star
22

uffizzi_core

Uffizzi core API
Ruby
1
star
23

devopsdays-rdu-2022

C#
1
star
24

kubecon-eu-2022

A simple distributed application running across multiple Docker containers (KubeCon EU 2022)
C#
1
star