0.07
There's a lot of open issues
uffizzi_core
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
 Project Readme

github-banner

License

Uffizzi - Open-source Preview Environments

Don't merge until you preview

Uffizzi is a tool that lets you preview pull requests before merging. Create on-demand Preview Environments for APIs, frontends, backends, databases, microservices, binaries and command-line tools. Each Preview 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 is an open-source, off-the-shelf, cross-platform solution that works with any version control system, container registry, or CI platform.

preview-url

Give us a star ⭐️

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

Quickstart (~1 minute)

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

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
  • 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 . Currently, application configurations must be defined via Docker Compose. Support for Helm and other configuration formats are on our public 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 Preview 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 with Uffizzi. Uffizzi Cloud is free for small teams and is recommended for those who are new to Uffizzi. It also includes some premium options like single sign-on (SSO) and password-protected URLs for your Preview Environments. 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

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. (Recommended) Have your application perform a data migration on start-up. You can add a conditional to do this only if the database is uninitialized.
  2. Bundle test data into the database image itself. This method is only recommended for small datasets (< 50MB), as it will increase the size of your image and deployment times.
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. 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. 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 security@uffizzi.com.