Giter Site home page Giter Site logo

shrutic-git / uffizzi Goto Github PK

View Code? Open in Web Editor NEW

This project forked from uffizzicloud/uffizzi

0.0 0.0 0.0 1.46 MB

Uffizzi lets you preview pull requests before merging. Supports APIs, backends, frontends, databases, microservices, binaries & CLIs.

License: Apache License 2.0

Shell 0.02% JavaScript 0.38% Ruby 96.73% CSS 0.38% Makefile 0.27% HTML 1.98% Dockerfile 0.23%

uffizzi's Introduction

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?

Development teams adopt Uffizzi because it...

  • Increases development velocity by removing the bottleneck of a shared test environment, where buggy or conflicting commits from multiple developers often cause delays in feature releases.
  • Improves code quality by providing a way to test the functionality of each branch in clean, isolated, production-like environments before merging.
  • Facilitates test parallelization since teams can create as many Preview Environments as they need and can iterate on features in parallel.

Teams also like Uffizzi because it's...

  • 👩‍💻 Developer-friendly - Uffizzi is configured via Docker Compose, the same tool many teams use for local development.

  • 🪶 Lightweight - Uffizzi Preview Environments are isolated namespaces designed to be fast and ephemeral.

  • 🔁 Event-driven - Designed to integrate with any CI system, Uffizzi Preview Environments are created, updated, or deleted via triggering events, such as pull requests or new release tags. Uffizzi generates a secure HTTPS URL for each environment, which is continually refreshed in response to new events.

  • 🧼 Clean - The ephemeral nature of Uffizzi Preview Environments means your team can test new features or release candidates in clean, parallel environments before merging or promoting to production.

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 and primarily designed for web languages. In general, if your application can be containerized, described with Docker Compose, and accepts HTTP traffic, Uffizzi can preview it.
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 [email protected].

uffizzi's People

Contributors

moklidia avatar 7r41n33 avatar gadkins avatar sergeykirillovdb avatar antlu avatar axisofentropy avatar jpthurman avatar jessikacastellano avatar the38th avatar zipofar avatar nealarw avatar waveywaves avatar shrutic-git avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.