preevy

preevy

简化Docker应用预览环境部署的开源CLI工具

Preevy是一个开源的命令行工具,用于简化Docker应用的预览环境创建。它可自动配置云端虚拟机或Kubernetes Pod,构建并部署应用,同时生成公共HTTPS URL。支持多种云服务提供商,Preevy易于集成到CI/CD流程中,能为每个Pull Request创建独立环境。这有助于提升团队协作效率,加快反馈速度,并提供安全的非生产环境测试。

Preevy预览环境Docker ComposeCI集成云服务Github开源项目
<h1 align="center"> <a href="https://preevy.dev" target="_blank" rel="noopener noreferrer"> <picture> <source media="(prefers-color-scheme: dark)" srcset="site/static/img/logo-dark.svg"> <img width="80" src="site/static/img/logo-light.svg"> </picture> </a> <br /> Preevy </h1> <p align="center"> <em>Provision preview environments with minimal configuration</em> <span>&#8226;</span> <b>made by <a href="https://livecycle.io/">Livecycle</a></b> </p> <div align="center">

GitHub GitHub last commit Version

</div> <br />

We recently launched the Livecycle Docker Extension. Now you can share local environments instantly. Get feedback while your code is still in flight. Check it out here

https://github.com/Pradumnasaraf/preevy/assets/51878265/a699a356-f524-48fc-9b6d-49f2e42e7ec7

Preevy

Preevy is a Command Line Interface (CLI) tool designed to simplify the process of creating ephemeral preview environments from Dockerized applications. Integrate Preevy into your CI flow to deploy Pull Requests as preview environments, using your existing cloud provider or Kubernetes cluster.

Preevy makes use of affordable VMs from AWS Lightsail, Google Cloud, Microsoft Azure, or any Kubernetes cluster.

Preevy can deploy your app with public or protected access, on the public internet or inside your existing private network.

Deploying a preview environment per Pull Request offers a range of benefits:

  • 🌍 Universal Access: Just by sharing a URL, you can allow anyone to try your product revision on any device.

  • 📩 Effortless Asynchronous Updates: Keep non-technical stakeholders in the loop without coordinating synchronous meetings.

  • 🎨 Hassle-free Design Reviews: Designers can verify implementation independently, minimizing interruptions.

  • 🚀 Parallel E2E Tests: Use external test agents against preview environments to expedite the testing process.

  • 💡 Streamlined Feedback Cycle: Preview environments let your team engage with and feedback on new features early in the pipeline.

  • 🧪 Non-production Experimentation: Develop and share unique versions of your product for presentations, examples, or tests.

  • 🔐 Secure Collaboration: Generate private sandboxes to share with external stakeholders, ensuring secure collaborative efforts.


Visit The full documentation here: https://preevy.dev/

<!-- omit from toc -->

Contents

<!--lint disable double-link--> <!--lint enable double-link-->

What

Preevy can take any Docker-Compose application definition and with a single up command perform the following:

  • Provision and configure a virtual machine (VM) on your cloud, or a Pod on your Kubernetes cluster.
  • Build your application on the VM/Pod or on any BuildKit builder (optional)
  • Deploy your application on the VM/Pod.
  • Expose each service of your application to the web with a user-friendly public HTTPS URL without any DNS/Certificate configuration.

These environments can be managed using the Preevy command-line interface (CLI) and can be easily updated or destroyed when necessary. While Preevy can be used for sharing local environments with your team, its primary goal is to implement preview environments for pull requests. Therefore, it's designed to be easily integrated into CI/CD flows.

Why

At Livecycle, we believe that preview environments are an integral part of any development flow, in any engineering team. These non-production, ephemeral environments, created for every Pull Request, can significantly improve PR workflows. In recent years, preview environments have become increasingly popular, with some PaaS providers even offering deeply integrated preview environments. However, setting up preview environments can be a complex and costly task, which is why many teams have been hesitant to implement them. Preevy is designed to simplify this task and provide a framework for provisioning and utilizing preview environments to optimize the PR flow. You can read more about the story and philosophy behind Preevy here.

Getting started

Prerequisites

Required software

Your Docker Compose app

If you don't have an existing Docker Compose app, check out Awesome Compose - a curated list of Compose samples, from React to Minecraft.

Your cloud provider or Kubernetes cluster

<!--lint disable double-link-->

Preevy deploys your app to one of the supported deploy runtimes.

<!--lint enable double-link-->

Choose the cloud provider or Kubernetes cluster you're going to use and configure access credentials for it:

Note Preevy only uses your credentials when you run the Preevy CLI to set up and connect to your environments. Your credentials are not sent or stored anywhere outside of your computer.

Local Kubernetes server using Docker Desktop

If you don't have an existing cloud account or prefer to try Preevy first locally, you can use the Docker Desktop Kubernetes server. Go to: Docker Settings -> Kubernetes -> Enable Kubernetes.

Install the Preevy CLI

npm install -g preevy

Or use npx to run the CLI without installing it:

npx preevy <command>

Set up a profile

preevy init

Preevy will ask you to select a deploy target and a storage location for your profile. You can start by storing the profile locally.

Deploy your first environment

From the same directory where your docker-compose.yml or compose.yml file is located, run the command below:

preevy up

Note: Preevy uses the git repo at the current directory to calculate a stable environment ID for your project. Make sure a git repo is initialized (with at least one commit), or add the --id flag to explicitly specify the environment ID.

Access and share your new preview environment at the *.livecycle.run links provided in the command output.

Update your environment

Code changed? Re-run preevy up to quickly sync the preview environment with your changes on the existing VM or Kubernetes Pod.

List and remove your environment

Run preevy ls to show all environments in your deploy target which are linked to your profile.

Run preevy down to remove your environment. Preevy will delete the VM or Kubernetes Pod.

Service URLs

Every Compose service is exposed individually with a generated URL in the following format: https://{service}-{[port]}-{env-id}-{client-id}.{tunnel-server-domain}. If the service exposes a single port, the port part is omitted. See here for a more detailed explanation.

<!--lint disable awesome-list-item-->
  • env-id is automatically generated from the Compose project and Git branch, or can be explicitly specified using the --id flag of the preevy up command.
  • client-id is a random identifier based on the profile's public tunneling SSH key (generated in preevy init).
  • tunnel-service-domain is where the tunnel service is hosted. It can be specified using the --tunnel-url flag of the preevy up command, and defaults to Livecycle's hosted service at *.livecycle.run.
<!--lint enable awesome-list-item-->

Under the hood

Preevy has two main components:

CLI

The CLI is a Node.js program responsible for:

  • Provisioning and tearing down VMs.
  • Exposing environments' state and URLs to the end user.
  • Storing and accessing profile data (settings, keys, etc).
  • Setting up a VM with Docker tooling.
  • Syncing Compose source code and local volumes.
  • Running the Compose app, augmented with a daemon for connecting to the tunneling service.

Tunnel server

The tunnel server is a Node.js base server responsible for exposing friendly HTTPS URLs for the Compose services.

A free public instance is hosted by Livecycle on livecycle.run, and it can be self-hosted as well.

A public Docker/OCI image is available: ghcr.io/livecycle/preevy/tunnel-server

To host your own Tunnel Server instance, see the deployment guide.

CI Integration

Preevy is designed to work seamlessly with your CI, by importing a shared preview profile from AWS S3 Google Cloud Storage (GCS) and Azure Blob Storage (AZBlob).

Profiles are created using preevy init. Choose a S3/GCS/AZBlob URL for storing the profile - Preevy will create a bucket if one doesn't exist.

If you already have a locally stored Preevy Profile, it can be migrated to remote storage using preevy profile cp

Once the profile is created, it can be imported to the CI runtime using preevy init --from <profile-url>

Examples

Faster builds in CI

Check out our documentation to find out how to speed up your builds and reduce the costs of your preview environments by running Preevy with BuildKit Builders in CI.

Example repos

GitHub Actions

Shortcut for setting up a cost-efficient Kubernetes cluster on AWS EKS

Don't have a Kubernetes cluster? See an example repo for setting up AWS EKS using Terraform. The example includes Karpenter which can reduce the cost of running Preview Environments by automatically expanding and shrinking your cluster using EC2 Spot Instances

Security

In case you find a security issue or have something you would like to discuss, refer to our security policy.

Private environments

Preevy can add an authentication layer to your provisioned environments. When you configure your service as private the Tunnel Server restricts access based on a pre-shared secret or a Livecycle login (SSO via Google/Microsoft/GitHub).

Exposure of preview environments

Services on provisioned environments are not exposed directly, but rather via a tunnel created by the tunneling server.

Livecycle access to data

When you use Preevy, Livecycle does not get access to your credentials or code. Preevy only uses your cloud provider or Kubernetes credentials to provision and connect to environments - it does not send or store the credentials.

Encrypted traffic to and from your environments goes through Preevy's Tunnel Server. Livecycle hosts the default Tunnel Server at livecycle.run which is available as part of Livecycle's SaaS offering. Like most SaaS providers, we keep logs for monitoring and troubleshooting purposes which include metadata of the requests. The Tunnel Server code is part of the Preevy OSS project; you can run it on your own infrastructure and specify the its address via the --tunnel-url flag.

Network isolation

The Tunnel Server can be deployed on your private network (e.g. VPC), which access to your environments at the network level.

Configuration

Preevy loads its configuration from the following sources, in order:

<!--lint disable double-link--> <!--lint enable double-link-->

Preevy Profile

The Preevy profile is created by the init command and can be stored locally or remotely on your cloud provider. A profile is required to create environments. The profile includes the following:

<!--lint disable double-link-->
  • A tunneling key, that is used to identify your services when connecting to the Tunnel Server.
  • The default driver to use for provisioning environments.
  • Default driver options to use per driver (e.g. AWS region, K8s namespace).
  • Driver state whose contents depend on the specific driver.
<!--lint enable double-link-->

Profiles can be migrated to a different storage location using preevy profile cp.

The default profile can be overridden using the global command line argument --profile.

<sub><sup>Note: The profile currently combines context and state, and some changes are planned.</sup></sub>

Compose files

Preevy extracts its runtime settings from the Compose file.

Project Compose files

Just like with the docker compose CLI, you can use the global --file | -f command line argument to specify the path(s) for the Compose file. If not specified, the default loading order is used. Multiple files are supported.

Preevy-specific Compose file

In addition to the project compose files, an optional Preevy-specific Compose file can be used. Preevy attempts to load files named compose.preevy.yaml, compose.preevy.yml, docker-compose.preevy.yaml or docker-compose.preevy.yml. If one of these exists, it is loaded BEFORE the project composes file(s). The name of the Preevy-specific compose file can be overridden by specifying the argument --system-compose-file.

x-preevy: Preevy-specific configuration in the Compose file(s)

A x-preevy top-level element can be added to the Compose file(s).

services:

编辑推荐精选

Vora

Vora

免费创建高清无水印Sora视频

Vora是一个免费创建高清无水印Sora视频的AI工具

Refly.AI

Refly.AI

最适合小白的AI自动化工作流平台

无需编码,轻松生成可复用、可变现的AI自动化工作流

酷表ChatExcel

酷表ChatExcel

大模型驱动的Excel数据处理工具

基于大模型交互的表格处理系统,允许用户通过对话方式完成数据整理和可视化分析。系统采用机器学习算法解析用户指令,自动执行排序、公式计算和数据透视等操作,支持多种文件格式导入导出。数据处理响应速度保持在0.8秒以内,支持超过100万行数据的即时分析。

AI工具使用教程AI营销产品酷表ChatExcelAI智能客服
TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

热门AI工具生产力协作转型TraeAI IDE
AIWritePaper论文写作

AIWritePaper论文写作

AI论文写作指导平台

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

数据安全AI助手热门AI工具AI辅助写作AI论文工具论文写作智能生成大纲
博思AIPPT

博思AIPPT

AI一键生成PPT,就用博思AIPPT!

博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。

热门AI工具AI办公办公工具智能排版AI生成PPT博思AIPPT海量精品模板AI创作
潮际好麦

潮际好麦

AI赋能电商视觉革命,一站式智能商拍平台

潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。

iTerms

iTerms

企业专属的AI法律顾问

iTerms是法大大集团旗下法律子品牌,基于最先进的大语言模型(LLM)、专业的法律知识库和强大的智能体架构,帮助企业扫清合规障碍,筑牢风控防线,成为您企业专属的AI法律顾问。

SimilarWeb流量提升

SimilarWeb流量提升

稳定高效的流量提升解决方案,助力品牌曝光

稳定高效的流量提升解决方案,助力品牌曝光

Sora2视频免费生成

Sora2视频免费生成

最新版Sora2模型免费使用,一键生成无水印视频

最新版Sora2模型免费使用,一键生成无水印视频

下拉加载更多