Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/wufe/polo
Git-based reverse proxy for spawning staging environments
https://github.com/wufe/polo
branches development git qa reverse-proxy staging
Last synced: 2 months ago
JSON representation
Git-based reverse proxy for spawning staging environments
- Host: GitHub
- URL: https://github.com/wufe/polo
- Owner: wufe
- License: mit
- Created: 2021-01-21T20:12:08.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2024-01-19T21:27:40.000Z (about 1 year ago)
- Last Synced: 2024-06-19T14:51:39.679Z (7 months ago)
- Topics: branches, development, git, qa, reverse-proxy, staging
- Language: Go
- Homepage: https://polo.bembi.dev
- Size: 1.55 MB
- Stars: 16
- Watchers: 3
- Forks: 0
- Open Issues: 12
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
Polo
Serve your application development branches
[![CodeQL](https://github.com/Wufe/Polo/actions/workflows/codeql-analysis.yml/badge.svg)](https://github.com/Wufe/Polo/actions/workflows/codeql-analysis.yml)
[![Tests](https://github.com/Wufe/Polo/actions/workflows/go.yml/badge.svg)](https://github.com/Wufe/Polo/actions/workflows/go.yml)## What is Polo
Polo is a **git-based reverse proxy**.
Allows you to create a web server which provides the ability to serve your web application in a specific time/branch/tag in history, using git.
You just need to specify the git commit or the branch. A new session will be created for you to navigate into.
Although it provides HTTPS support, it is not intended to be used in production.
***
## Use cases
It can be used for serving your staging / QA environment.
Instead of having one application on a single host, you can let the user select which git branch to serve.
Polo will then start the application and provide a reverse proxy feature for navigation.
***
## Getting started
- Download Polo from the release page
- Create one or more configuration files for your application and place them next to the application executable
There's a minimal example configuration file called [testserver.yml](./testserver.yml) which contains instructions to start a little demo project.- Start Polo from command line
More info about the installation process and the configuration file in [the documentation](https://polo.bembi.dev).
***
## Configuration
You must provide at least one yaml configuration file describing your application remote and how to build and run it.
The configuration file must be put next to the Polo executable file.
You can find an example of a configuration file with all the options in the folder *examples*.***
## State diagram
This diagram represents the states walked since the request of a session to its destruction.
[![](https://mermaid.ink/svg/eyJjb2RlIjoic3RhdGVEaWFncmFtLXYyXG4gICAgcmV0cnk6IFJldHJ5IGxvZ2ljXG4gICAgbm90ZSByaWdodCBvZiByZXRyeVxuICAgICAgICBUaGVyZSdzIGFsd2F5cyBhIGxpbWl0XG4gICAgICAgIGZvciByZXRyaWVzIGNvdW50XG4gICAgZW5kIG5vdGVcblxuICAgIFsqXSAtLT4gYnVpbGQ6IFVzZXIgcmVxdWVzdGVkIGEgc2Vzc2lvblxuICAgIHN0YXRlIGJ1aWxkIHtcbiAgICAgICAgWypdIC0tPiB2YWxpZGF0ZV9yZXF1ZXN0XG4gICAgICAgIHZhbGlkYXRlX3JlcXVlc3QgLS0-IHByb3Zpc2lvbl9mb2xkZXJzXG4gICAgICAgIHByb3Zpc2lvbl9mb2xkZXJzIC0tPiBnaXRfY2hlY2tvdXRcbiAgICAgICAgZ2l0X2NoZWNrb3V0IC0tPiBleGVjdXRlX2NvbW1hbmRzXG4gICAgICAgIGV4ZWN1dGVfY29tbWFuZHMgLS0-IHdhcm11cFxuICAgICAgICB3YXJtdXAgLS0-IFsqXVxuICAgIH1cbiAgICBidWlsZCAtLT4gaGVhbHRoY2hlY2sgOiBzdWNjZWVkZWRcbiAgICBcbiAgICBmYWlsOiBGYWlsIHJlYXNvblxuICAgIG5vdGUgcmlnaHQgb2YgZmFpbFxuICAgICAgICBDb21tYW5kIGZhaWx1cmUgL1xuICAgICAgICB0aW1lb3V0IHJlYWNoZWRcbiAgICBlbmQgbm90ZVxuXG4gICAgaGVhbHRoY2hlY2sgLS0-IHN0YXJ0IDogc3VjY2VlZGVkXG4gICAgaGVhbHRoY2hlY2sgLS0-IGJ1aWxkIDogZmFpbGVkIChyZXRyeSlcbiAgICBoZWFsdGhjaGVjayAtLT4gZGVzdHJveSA6IGZhaWxlZFxuXG5cbiAgICBidWlsZCAtLT4gYnVpbGQgOiBmYWlsZWQgKHJldHJ5KVxuICAgIGJ1aWxkIC0tPiBjbGVhbiA6IGZhaWxlZFxuXG4gICAgc3RhcnQgLS0-IHJ1bm5pbmdcbiAgICBub3RlIGxlZnQgb2Ygc3RhcnRcbiAgICAgICAgSGVyZSB0aGUgc2Vzc2lvbiBtYXggYWdlXG4gICAgICAgIHN0YXJ0cyB0byBkZWNyZW1lbnRcbiAgICBlbmQgbm90ZVxuXG4gICAgcnVubmluZyAtLT4gZGVzdHJveSA6IHJlcXVlc3RlZCBraWxsXG5cbiAgICBkZXN0cm95IC0tPiBjbGVhbiA6IGZhaWxlZFxuICAgIGRlc3Ryb3kgLS0-IGNsZWFuIDogc3VjY2VlZGVkXG5cbiAgICBjbGVhbiAtLT4gYnVpbGQgOiBzdGFydHVwIHJldHJ5XG5cbiAgICBjbGVhbiAtLT4gWypdIiwibWVybWFpZCI6eyJ0aGVtZSI6ImJhc2UiLCJ0aGVtZVZhcmlhYmxlcyI6eyJiYWNrZ3JvdW5kIjoiI2Y5ZmFmYiIsInByaW1hcnlDb2xvciI6InRyYW5zcGFyZW50IiwicHJpbWFyeUJvcmRlckNvbG9yIjoiI0NDRCIsInNlY29uZGFyeUNvbG9yIjoiIzAwMCIsImxpbmVDb2xvciI6IiM0NjgyQjQiLCJtYWluQmtnIjoiI2Q4ZGVlOSIsInByaW1hcnlUZXh0Q29sb3IiOiIjMmUzNDQwIiwic2Vjb25kYXJ5VGV4dENvbG9yIjoiIzk5OSIsInRlcnRpYXJ5VGV4dENvbG9yIjoiIzQ3ODJiNCIsIm5vdGVCa2dDb2xvciI6IiM0NjgyQjQiLCJub3RlVGV4dENvbG9yIjoiI2VjZWZmNCIsImZvbnRTaXplIjoiMTRweCIsImZvbnRGYW1pbHkiOiJhcmlhbCJ9LCJ0aGVtZUNTUyI6InJlY3QuaW5uZXIge3k6IDQwO30gLmNsdXN0ZXItbGFiZWw-Zm9yZWlnbk9iamVjdCB7IGhlaWdodDogMzA7IH0gLmNsdXN0ZXItbGFiZWwgLm5vZGVMYWJlbCB7IGxpbmUtaGVpZ2h0OiAzMHB4OyB9IC5ub2RlLnN0YXRlZGlhZ3JhbS1ub3RlID4gcmVjdCB7IHJ4OiA1cHg7IHJ5OiA1cHg7IH0gLm5vZGUuc3RhdGVkaWFncmFtLW5vdGUgLm5vZGVMYWJlbCB7IGZvbnQtc2l6ZTogMTRweDt9In0sInVwZGF0ZUVkaXRvciI6ZmFsc2V9)](https://mermaid-js.github.io/mermaid-live-editor/#/edit/eyJjb2RlIjoic3RhdGVEaWFncmFtLXYyXG4gICAgcmV0cnk6IFJldHJ5IGxvZ2ljXG4gICAgbm90ZSByaWdodCBvZiByZXRyeVxuICAgICAgICBUaGVyZSdzIGFsd2F5cyBhIGxpbWl0XG4gICAgICAgIGZvciByZXRyaWVzIGNvdW50XG4gICAgZW5kIG5vdGVcblxuICAgIFsqXSAtLT4gYnVpbGQ6IFVzZXIgcmVxdWVzdGVkIGEgc2Vzc2lvblxuICAgIHN0YXRlIGJ1aWxkIHtcbiAgICAgICAgWypdIC0tPiB2YWxpZGF0ZV9yZXF1ZXN0XG4gICAgICAgIHZhbGlkYXRlX3JlcXVlc3QgLS0-IHByb3Zpc2lvbl9mb2xkZXJzXG4gICAgICAgIHByb3Zpc2lvbl9mb2xkZXJzIC0tPiBnaXRfY2hlY2tvdXRcbiAgICAgICAgZ2l0X2NoZWNrb3V0IC0tPiBleGVjdXRlX2NvbW1hbmRzXG4gICAgICAgIGV4ZWN1dGVfY29tbWFuZHMgLS0-IHdhcm11cFxuICAgICAgICB3YXJtdXAgLS0-IFsqXVxuICAgIH1cbiAgICBidWlsZCAtLT4gaGVhbHRoY2hlY2sgOiBzdWNjZWVkZWRcbiAgICBcbiAgICBmYWlsOiBGYWlsIHJlYXNvblxuICAgIG5vdGUgcmlnaHQgb2YgZmFpbFxuICAgICAgICBDb21tYW5kIGZhaWx1cmUgL1xuICAgICAgICB0aW1lb3V0IHJlYWNoZWRcbiAgICBlbmQgbm90ZVxuXG4gICAgaGVhbHRoY2hlY2sgLS0-IHN0YXJ0IDogc3VjY2VlZGVkXG4gICAgaGVhbHRoY2hlY2sgLS0-IGJ1aWxkIDogZmFpbGVkIChyZXRyeSlcbiAgICBoZWFsdGhjaGVjayAtLT4gZGVzdHJveSA6IGZhaWxlZFxuXG5cbiAgICBidWlsZCAtLT4gYnVpbGQgOiBmYWlsZWQgKHJldHJ5KVxuICAgIGJ1aWxkIC0tPiBjbGVhbiA6IGZhaWxlZFxuXG4gICAgc3RhcnQgLS0-IHJ1bm5pbmdcbiAgICBub3RlIGxlZnQgb2Ygc3RhcnRcbiAgICAgICAgSGVyZSB0aGUgc2Vzc2lvbiBtYXggYWdlXG4gICAgICAgIHN0YXJ0cyB0byBkZWNyZW1lbnRcbiAgICBlbmQgbm90ZVxuXG4gICAgcnVubmluZyAtLT4gZGVzdHJveSA6IHJlcXVlc3RlZCBraWxsXG5cbiAgICBkZXN0cm95IC0tPiBjbGVhbiA6IGZhaWxlZFxuICAgIGRlc3Ryb3kgLS0-IGNsZWFuIDogc3VjY2VlZGVkXG5cbiAgICBjbGVhbiAtLT4gYnVpbGQgOiBzdGFydHVwIHJldHJ5XG5cbiAgICBjbGVhbiAtLT4gWypdIiwibWVybWFpZCI6eyJ0aGVtZSI6ImJhc2UiLCJ0aGVtZVZhcmlhYmxlcyI6eyJiYWNrZ3JvdW5kIjoiI2Y5ZmFmYiIsInByaW1hcnlDb2xvciI6InRyYW5zcGFyZW50IiwicHJpbWFyeUJvcmRlckNvbG9yIjoiI0NDRCIsInNlY29uZGFyeUNvbG9yIjoiIzAwMCIsImxpbmVDb2xvciI6IiM0NjgyQjQiLCJtYWluQmtnIjoiI2Q4ZGVlOSIsInByaW1hcnlUZXh0Q29sb3IiOiIjMmUzNDQwIiwic2Vjb25kYXJ5VGV4dENvbG9yIjoiIzk5OSIsInRlcnRpYXJ5VGV4dENvbG9yIjoiIzQ3ODJiNCIsIm5vdGVCa2dDb2xvciI6IiM0NjgyQjQiLCJub3RlVGV4dENvbG9yIjoiI2VjZWZmNCIsImZvbnRTaXplIjoiMTRweCIsImZvbnRGYW1pbHkiOiJhcmlhbCJ9LCJ0aGVtZUNTUyI6InJlY3QuaW5uZXIge3k6IDQwO30gLmNsdXN0ZXItbGFiZWw-Zm9yZWlnbk9iamVjdCB7IGhlaWdodDogMzA7IH0gLmNsdXN0ZXItbGFiZWwgLm5vZGVMYWJlbCB7IGxpbmUtaGVpZ2h0OiAzMHB4OyB9IC5ub2RlLnN0YXRlZGlhZ3JhbS1ub3RlID4gcmVjdCB7IHJ4OiA1cHg7IHJ5OiA1cHg7IH0gLm5vZGUuc3RhdGVkaWFncmFtLW5vdGUgLm5vZGVMYWJlbCB7IGZvbnQtc2l6ZTogMTRweDt9In0sInVwZGF0ZUVkaXRvciI6ZmFsc2V9)
***
## Known issues / missing features
- Add support to command concatenations (; and &&)
- Admin interface with
- Control over manual trigger of fetch in a git application folder
- Application configuration CRUD UI